niucloud/uni-app/stores/member.ts
全栈小学生 0e47055ccb v1.0.0-beta.1
2023-04-15 17:12:49 +08:00

47 lines
1.3 KiB
TypeScript

import { defineStore } from 'pinia'
import { getToken, 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: getToken(),
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(() => {
this.logout()
})
},
logout(isRedirect : boolean = false) {
logout().then(() => {
this.$reset()
removeToken()
isRedirect && redirect({ url: '/pages/index/index' })
}).catch(() => {
this.$reset()
removeToken()
isRedirect && redirect({ url: '/pages/index/index' })
})
}
}
})
export default useMemberStore