Files
miniprogram-1/miniprogram/app.ts
2025-11-25 19:46:31 +08:00

117 lines
3.4 KiB
TypeScript
Executable File

// app.ts
import { IAppOption } from './types/app'
import apiManager from './utils/api'
App<IAppOption>({
globalData: {
isLoggedIn: false,
userInfo: undefined,
token: undefined,
dictLevel: undefined // 新增字段,用户词典等级配置
},
onLaunch() {
console.log('小程序启动')
wx.cloud.init()
// 初始化登录状态
this.initLoginStatus()
// 设置存储日志
const logs = wx.getStorageSync('logs') || []
logs.unshift(Date.now())
wx.setStorageSync('logs', logs)
},
onShow() {
console.log('小程序显示')
},
onHide() {
console.log('小程序隐藏')
},
// 初始化登录状态
initLoginStatus() {
try {
const authInfo = apiManager.getStoredAuthInfo()
if (authInfo && authInfo.token) {
// 使用API管理器的方法检查token是否过期
if (!apiManager.isTokenExpired()) {
this.globalData.isLoggedIn = true
this.globalData.token = authInfo.token
this.globalData.userInfo = authInfo.userInfo
// 初始化词典等级
this.globalData.dictLevel = authInfo.dictLevel || 'PRIMARY'
console.log('登录状态有效,自动登录')
} else {
console.log('Token 已过期,清理本地数据')
this.clearLoginData()
}
} else {
console.log('未找到登录信息')
this.globalData.isLoggedIn = false
}
} catch (error) {
console.error('初始化登录状态失败:', error)
this.globalData.isLoggedIn = false
}
},
// 更新登录状态
updateLoginStatus(loginData: { access_token: string; access_token_expire_time: string; session_uuid: string; userInfo?: IUserInfo, dict_level?: string }) {
try {
this.globalData.isLoggedIn = true
this.globalData.token = loginData.access_token
this.globalData.userInfo = loginData.userInfo
// 更新词典等级
this.globalData.dictLevel = loginData.dict_level || 'PRIMARY'
// 存储到本地
wx.setStorageSync('token', loginData.access_token)
if (loginData.userInfo) {
wx.setStorageSync('userInfo', loginData.userInfo)
}
// 存储词典等级
if (loginData.dict_level) {
wx.setStorageSync('dictLevel', loginData.dict_level)
}
// 处理过期时间,将字符串时间转换为时间戳
const expiryTime = new Date(loginData.access_token_expire_time).getTime()
wx.setStorageSync('tokenExpiry', expiryTime)
// 存储 session_uuid
wx.setStorageSync('sessionUuid', loginData.session_uuid)
console.log('登录状态更新成功', {
tokenExpiry: loginData.access_token_expire_time,
sessionUuid: loginData.session_uuid,
dictLevel: loginData.dict_level
})
} catch (error) {
console.error('更新登录状态失败:', error)
}
},
// 清理登录数据
clearLoginData() {
try {
this.globalData.isLoggedIn = false
this.globalData.token = undefined
this.globalData.userInfo = undefined
this.globalData.dictLevel = undefined
wx.removeStorageSync('token')
wx.removeStorageSync('userInfo')
wx.removeStorageSync('tokenExpiry')
wx.removeStorageSync('sessionUuid')
wx.removeStorageSync('dictLevel')
console.log('登录数据清理完成')
} catch (error) {
console.error('清理登录数据失败:', error)
}
}
})