2025-05-25 18:06:09 +08:00

63 lines
1.4 KiB
TypeScript

import type { LoginUser } from '@/api/auth/types';
import { defineStore } from 'pinia';
import { useRouter } from 'vue-router';
export const useUserStore = defineStore(
'user',
() => {
const token = ref<string>();
const router = useRouter();
const setToken = (value: string) => {
token.value = value;
};
const clearToken = () => {
token.value = void 0;
};
const userInfo = ref<LoginUser>();
const setUserInfo = (value: LoginUser) => {
userInfo.value = value;
};
const clearUserInfo = () => {
userInfo.value = void 0;
};
const logout = async () => {
// 如果需要调用接口,可以在这里调用
clearToken();
clearUserInfo();
router.replace({ name: 'chat' });
};
// 新增:登录弹框状态
const isLoginDialogVisible = ref(false);
// 新增:打开弹框方法
const openLoginDialog = () => {
isLoginDialogVisible.value = true;
};
// 新增:关闭弹框方法(可根据需求扩展)
const closeLoginDialog = () => {
isLoginDialogVisible.value = false;
};
return {
token,
setToken,
clearToken,
userInfo,
setUserInfo,
clearUserInfo,
logout,
// 新增:暴露弹框状态和方法
isLoginDialogVisible,
openLoginDialog,
closeLoginDialog,
};
},
{
persist: true,
},
);