chore: 重写初始提交(清空历史,整理后全量提交)
This commit is contained in:
@@ -0,0 +1,114 @@
|
||||
//定义一个大写的State类型
|
||||
import { IUser, IUserInfo } from "@/types/user.uts"
|
||||
export type State = {
|
||||
uid : number
|
||||
tokens : ITokens | null
|
||||
info : IUserInfo | null
|
||||
profile : UTSJSONObject | null
|
||||
// 如有需要,可增加更多属性
|
||||
}
|
||||
|
||||
export type ITokens = {
|
||||
accessToken : string | null
|
||||
accessExpired : number | null
|
||||
refreshToken : string | null
|
||||
refreshExpired : number | null
|
||||
}
|
||||
|
||||
// 实例化为state
|
||||
const userState = reactive({
|
||||
uid: 0,
|
||||
tokens: null,
|
||||
info: null,
|
||||
profile: null
|
||||
} as State)
|
||||
|
||||
export const isLoggedIn = computed(() => {
|
||||
const tokens = getUserToken()
|
||||
if (tokens == null) return false
|
||||
const { accessToken, accessExpired } = tokens
|
||||
return accessToken != null && accessExpired != null && accessExpired > Date.now()
|
||||
})
|
||||
|
||||
export const setUserToken = (accessToken : string, accessExpired : number | null, refreshToken : string | null, refreshExpired : number | null) : void => {
|
||||
userState.tokens = {
|
||||
accessToken: accessToken,
|
||||
accessExpired: accessExpired ?? 0,
|
||||
refreshToken: refreshToken ?? userState.tokens?.refreshToken ?? null,
|
||||
refreshExpired: refreshExpired ?? userState.tokens?.refreshExpired ?? 0
|
||||
} as ITokens
|
||||
|
||||
uni.setStorageSync('user_tokens', JSON.stringify(userState.tokens))
|
||||
}
|
||||
export const getUserToken = function () : ITokens | null {
|
||||
try {
|
||||
if (userState.tokens == null) {
|
||||
const storageValue = uni.getStorageSync('user_tokens')
|
||||
// 增加空字符串判断
|
||||
if (storageValue != null && storageValue.toString().length > 0) {
|
||||
// #ifndef APP
|
||||
const localTokens : string = storageValue.toString()
|
||||
const objcet = JSON.parse(localTokens) as ITokens
|
||||
// #endif
|
||||
// #ifdef APP
|
||||
const localToken = JSON.parseObject(storageValue.toString())
|
||||
const objcet = localToken?.parse<ITokens>()
|
||||
// #endif
|
||||
userState.tokens = objcet
|
||||
}
|
||||
}
|
||||
if (userState.tokens != null && userState.tokens.accessToken != null) {
|
||||
return userState.tokens
|
||||
}
|
||||
} catch (e) {
|
||||
// 建议清除无效的存储,避免下次继续报错
|
||||
uni.removeStorageSync('user_tokens')
|
||||
return null
|
||||
}
|
||||
return null
|
||||
}
|
||||
export const clearToken = () => {
|
||||
userState.tokens = null;
|
||||
uni.removeStorageSync('user_tokens')
|
||||
}
|
||||
|
||||
export const getUserInfo = function () : IUserInfo | null {
|
||||
if (userState.info == null) {
|
||||
const storageValue = uni.getStorageSync('user_info')
|
||||
const localUserInfo : string = storageValue != null ? storageValue.toString() : ""
|
||||
if (localUserInfo.length > 0) {
|
||||
const objcet = JSON.parseObject(localUserInfo)
|
||||
userState.info = objcet?.parse<IUserInfo>()
|
||||
userState.uid = userState.info?.uid ?? 0
|
||||
}
|
||||
}
|
||||
if (userState.info != null) {
|
||||
return userState.info
|
||||
}
|
||||
return null
|
||||
}
|
||||
|
||||
export const setUserInfo = (info : IUserInfo | null) => {
|
||||
userState.info = info
|
||||
if (info != null) {
|
||||
uni.setStorageSync('user_info', JSON.stringify(info))
|
||||
} else {
|
||||
uni.removeStorageSync('user_info')
|
||||
}
|
||||
}
|
||||
|
||||
export const initStore = () => {
|
||||
try {
|
||||
const tokens = getUserToken()
|
||||
} catch (e) {
|
||||
console.error('解析用户Token失败', e)
|
||||
}
|
||||
try {
|
||||
const info = getUserInfo()
|
||||
} catch (e) {
|
||||
console.error('解析用户信息失败', e)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export default userState
|
||||
Reference in New Issue
Block a user