111 lines
3.0 KiB
TypeScript
111 lines
3.0 KiB
TypeScript
// app.ts
|
|
import { startSSE, stopSSE } from './utils/server-sent-events'
|
|
import { checkUpdate } from './utils/updateManager'
|
|
|
|
// @ts-ignore
|
|
const systemInfo = wx.getWindowInfo();
|
|
|
|
// 登录相关 storage key 常量
|
|
const LOGIN_KEYS = ["mbuId", "userName", "openId", "unionId", "addressId", "defualtAddress"] as const;
|
|
|
|
export { };
|
|
|
|
App<IAppOption>({
|
|
globalData: {
|
|
isLogin: false,
|
|
wasLogin: false,
|
|
safeBottom: systemInfo.safeArea.bottom - systemInfo.safeArea.height,
|
|
safeTop: systemInfo.safeArea.top * 2,
|
|
store: {},
|
|
joinedArray: [],
|
|
template: null,
|
|
showStock: false,
|
|
tabbarMap: {},
|
|
tabbarItems: [],
|
|
sseStore: {
|
|
chat: [],
|
|
system: [],
|
|
product: []
|
|
},
|
|
isModalShowing: false,
|
|
},
|
|
async onLaunch(props: any) {
|
|
// 处理 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) {
|
|
// 清理登录相关数据
|
|
LOGIN_KEYS.forEach(key => wx.removeStorageSync(key));
|
|
}
|
|
|
|
// 保存上一次的登录状态,用来判断是否从 已登录 变成 未登录
|
|
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;
|
|
},
|
|
getPageParams() {
|
|
return this.globalData.store;
|
|
},
|
|
async getTemplate() {
|
|
return this.globalData.template;
|
|
},
|
|
redirectLogin() {
|
|
if (!this.checkLoginState()) {
|
|
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;
|
|
}
|
|
}); |