import { basename, wrapBasename } from '@/modules/basename'; import { queryLogin } from '@/modules/query'; import { create } from 'zustand'; interface UserState { user: { avatar?: string; description?: string; id?: string; needChangePassword?: boolean; orgs?: string[]; type?: string; username?: string; canChangeUsername?: boolean; } | null; open: boolean; setOpen: (open: boolean) => void; setUser: (user: UserState['user']) => void; clearUser: () => Promise; queryUser: () => void; queryMe: (token?: string) => void; init: () => void; } export const useUserStore = create((set, get) => ({ user: null, open: false, setOpen: (open) => set({ open }), setUser: (user) => set({ user }), clearUser: async () => { await queryLogin.logout() set({ user: null }); }, queryUser: async () => { const user = await queryLogin.checkLocalUser(); console.log('查询到的用户信息:', user); if (!user) { const token = localStorage.getItem('token'); if (token) { get().queryMe(token); } } else { set({ user }); } }, queryMe: async (token?: string) => { const res = await queryLogin.getMe(token); console.log('获取到的用户信息:', res); if (res.code === 200) { set({ user: res.data || null }); const canChangeUsername = res.data?.canChangeUsername ?? false; if (canChangeUsername) { // 打开修改用户名的页面 window.open(wrapBasename('/first'), '_blank'); } } }, init: () => { const url = new URL(window.location.href); const code = url.searchParams.get('code'); const state = url.searchParams.get('state'); if (code && state) { set({ open: true }) } } }));