niucloud/uni-app/stores/member.ts
全栈小学生 8a600afd4f 更新uni-app
2023-05-20 18:12:41 +08:00

47 lines
1.3 KiB
TypeScript

import { defineStore } from 'pinia'
import { setToken, removeToken, redirect } from '@/utils/common'
import { getMemberInfo } from '@/api/member'
import { logout } from '@/api/auth'
interface Member {
token : string | null
info : AnyObject | null
}
const useMemberStore = defineStore('member', {
state: () : Member => {
return {
token: uni.getStorageSync(import.meta.env.VITE_REQUEST_STORAGE_TOKEN_KEY),
info: null
}
},
actions: {
async setToken(token : string) {
this.token = token
setToken(token)
await this.getMemberInfo()
},
async getMemberInfo() {
await getMemberInfo()
.then((res : any) => {
this.info = res.data
})
.catch(async () => {
await this.logout()
})
},
async logout(isRedirect : boolean = false) {
await logout().then(() => {
this.$reset()
removeToken()
isRedirect && redirect({ url: '/pages/index/index' })
}).catch(() => {
this.$reset()
removeToken()
isRedirect && redirect({ url: '/pages/index/index' })
})
}
}
})
export default useMemberStore