JinZHouXiYiJi_DaPin2/examples/store/modules/user.ts

46 lines
1.0 KiB
TypeScript
Raw Permalink Normal View History

2023-12-05 13:23:01 +08:00
import { defineStore } from 'pinia'
import store from '@/store'
import type { UserInfo } from '@/types/user'
import { getStorageItem, removeStorageItem, setStorageItem } from '@/utils/storage'
const useUserStore = defineStore({
id: 'user',
state: (): UserInfo => ({
username: '',
token: undefined
}),
getters: {
userToken(): string | undefined {
if (!this.token) {
this.token = getStorageItem('token') || ''
}
return this.token
},
userName(): string {
return this.username
}
},
actions: {
async setToken(token: string) {
this.token = token
setStorageItem('token', token)
},
async logout(): Promise<string> {
this.username = ''
this.token = undefined
removeStorageItem('userInfo')
removeStorageItem('token')
return Promise.resolve('')
},
async setUserInfo(userInfo: UserInfo) {
setStorageItem('userInfo', JSON.stringify(userInfo))
return userInfo
}
}
})
export function useUserStoreWithOut() {
return useUserStore(store)
}