// app.ts import { startSSE, stopSSE } from './utils/server-sent-events' import { checkUpdate } from './utils/updateManager' // @ts-ignore const systemInfo = wx.getWindowInfo(); export { }; App({ globalData: { isLogin: false, // 当前是否登录 wasLogin: false, // 之前是否登录过,用来判断是不是 登录状态失效 safeBottom: systemInfo.safeArea.bottom - systemInfo.safeArea.height, safeTop: systemInfo.safeArea.top * 2, store: {}, joinedArray: [], //加入的频道,加入了就不会重复加入 sseStore: { chat: [], system: [], product: [] }, isModalShowing: false, //防止有多个登录弹窗打开 }, async onLaunch(props: any) { wx.removeStorageSync("state"); if (props.query.state) { wx.setStorageSync("state", props.query.state) } else { wx.removeStorageSync("state") } // 检查小程序版本更新 checkUpdate(); this.checkLoginState(); startSSE(); }, onHide() { stopSSE(); }, checkLoginState() { const openId = wx.getStorageSync("openId"); const unionId = wx.getStorageSync("unionId"); const userId = wx.getStorageSync("userId"); const ok = openId && unionId && userId; if (!ok) { // 清理 wx.removeStorageSync("mbuId"); wx.removeStorageSync("userName"); wx.removeStorageSync("openId"); wx.removeStorageSync("unionId"); wx.removeStorageSync("addressId"); wx.removeStorageSync("defualtAddress"); } // 保存上一次的登录状态,用来判断是否从 已登录 变成 未登录 const prev = this.globalData.isLogin; this.globalData.isLogin = !!ok; this.globalData.wasLogin = prev; return this.globalData.isLogin; }, login(value: string) { if (!this.checkLoginState()) { wx.reLaunch({ url: `/pages/login/login?back=${value}` }); return false; } return true; }, redirectLogin() { if (!this.checkLoginState()) { //已有modal在展示,就不展示了 if (this.globalData.isModalShowing) { return false; } this.globalData.isModalShowing = true; const content = this.globalData.wasLogin ? "登录状态失效,请重新登录!" : "请登录获取完整服务!"; wx.showModal({ title: "登录提示", content, confirmText: "去登录", success: (options) => { if (options.confirm) { wx.navigateTo({ url: "/pages/login/login" }); } }, complete: () => { this.globalData.isModalShowing = false; } }); return false; } return true; } });