// utils/store.js — 轻量全局状态 + 订阅(不引第三方状态库) // 读 app.globalData,变更通过 set() 并广播给订阅者。 const app = () => getApp(); const listeners = new Set(); function getState() { return app().globalData; } /** * 合并更新全局状态并广播。 * @param {object} patch 要合并进 globalData 的字段 */ function set(patch) { Object.assign(app().globalData, patch); listeners.forEach((fn) => fn(app().globalData)); } /** * 订阅状态变更,返回取消订阅函数。 * @param {(state:object)=>void} fn */ function subscribe(fn) { listeners.add(fn); return () => listeners.delete(fn); } // ===== 遛狗会话(V1 核心运行时状态,需持久化防丢) ===== function setWalkSession(session) { set({ walkSession: session }); if (session) { wx.setStorageSync('walkSession', session); } else { wx.removeStorageSync('walkSession'); } } function getWalkSession() { return app().globalData.walkSession; } module.exports = { getState, set, subscribe, setWalkSession, getWalkSession };