import { userProfile } from '~/api' import type { IUser } from '~/types' export const useLoginState = defineStore( 'loginState', () => { const isLoggedIn = ref(false) const token = ref(null) const user = ref({} as IUser) const checkLogin = async (): Promise => { return new Promise((resolve, reject) => { if (!token.value) { user.value = {} as IUser isLoggedIn.value = false return reject(false) } userProfile() .then((res) => { if (res.code === 200) { user.value = res.user isLoggedIn.value = true resolve(res.user) } else { user.value = {} as IUser isLoggedIn.value = false token.value = null reject(false) } }) .catch((_) => { user.value = {} as IUser isLoggedIn.value = false token.value = null reject(false) }) }) } const logout = () => { isLoggedIn.value = false token.value = null user.value = {} as IUser } return { isLoggedIn, token, user, checkLogin, logout, } }, { persist: { key: 'xshic_user_state', storage: piniaPluginPersistedstate.localStorage(), pick: ['isLoggedIn', 'token', 'user'], }, }, )