2025-01-02 19:26:12 +08:00

44 lines
1.1 KiB
TypeScript

import { defineStore } from 'pinia'
import { ref } from 'vue'
import { getUserInfoApi, UserInfo } from '@/service/user'
import { Result } from '@/constants/result'
export const useUserStore = defineStore(
'user',
() => {
const userInfo = ref<UserInfo>(null)
const loginStatus = ref(false)
const getUserInfo = async () => {
const result = await getUserInfoApi()
if (result.errorCode === Result.Success.code) {
userInfo.value = result.data
loginStatus.value = true
uni.setStorageSync({
key: 'userInfo',
data: userInfo.value
})
return new Result(result.errorCode, userInfo.value, result.errorMsg)
} else {
const userInfoStorage = uni.getStorageSync('userInfo')
if (userInfoStorage) {
userInfo.value = userInfoStorage
loginStatus.value = true
return new Result(Result.Success.code, userInfo.value, Result.Success.message)
} else {
loginStatus.value = false
return Result.Fail
}
}
}
return {
userInfo,
getUserInfo
}
},
{
persist: true
}
)