2025-05-20 14:23:03 +08:00

97 lines
2.6 KiB
Plaintext

import { preferences } from '@kit.ArkData'
import { router } from '@kit.ArkUI'
import { Data } from '../models/LoginInfoModel'
import { ExpertData } from '../models/RequestDefaultModel'
import { BusinessError } from '@kit.BasicServicesKit'
export interface HdUser {
id: string
username: string
avatar: string
token: string
refreshToken: string
nickName?: string
totalTime?: number
clockinNumbers?: number
}
export const AUTH_STORE_KEY = 'authStore'
class AuthStore {
store: preferences.Preferences | null = null
getStore() {
if (!this.store) {
this.store = preferences.getPreferencesSync(getContext(), { name: AUTH_STORE_KEY })
}
return this.store
}
async setUser(user: Data) {
AppStorage.setOrCreate('user', user)
await this.getStore().put(AUTH_STORE_KEY, JSON.stringify(user))
await this.getStore().flush()
}
async updateUser(user: ExpertData) {
AppStorage.setOrCreate('user', user)
await this.getStore().put(AUTH_STORE_KEY, JSON.stringify(user))
await this.getStore().flush()
}
async setPerfactUser(mobile:string,user:ExpertData) {
AppStorage.setOrCreate('mobile', mobile)
await this.getStore().put(mobile, JSON.stringify(user))
await this.getStore().flush((err:BusinessError)=>{
if (err) {
console.error('保存失败',err.code,err.message)
} else {
console.info('保存成功',JSON.stringify(user))
}
})
}
async delUser() {
AppStorage.setOrCreate('user', {})
await this.getStore().put(AUTH_STORE_KEY, '{}')
await this.getStore().flush()
}
initUser() {
const json = this.getStore().getSync(AUTH_STORE_KEY, '{}') as string
AppStorage.setOrCreate('user', JSON.parse(json))
}
getUser() {
return AppStorage.get<Data>('user') || {} as Data
}
getPerfactUser(phone:string) {
return AppStorage.get<ExpertData>(phone) || {} as ExpertData
}
checkAuth(options: router.RouterOptions | Function) {
// if (this.getUser().token) {
// if (typeof options === 'function') {
// options()
// } else {
// router.pushUrl(options)
// }
// } else {
// if (typeof options === 'function') {
// router.pushUrl({
// url: 'pages/LoginPage',
// })
// } else {
// const params = options.params as Record<string, string> || {}
// params.return_path = options.url
// router.pushUrl({
// url: 'pages/LoginPage',
// params: params
// })
// }
// }
}
}
export const authStore = new AuthStore()