import { create } from 'zustand' interface UserInfo { id: number username: string display_name: string role: number status: number email: string group: string quota: number used_quota: number request_count: number aff_code: string inviter_id: number } interface SiteInfo { id: number name: string url: string } interface AuthState { sessionToken: string | null userInfo: UserInfo | null site: SiteInfo | null isLoggedIn: boolean loading: boolean login: (sessionToken: string, userInfo: UserInfo, site: SiteInfo) => void logout: () => void updateUserInfo: (userInfo: UserInfo) => void setLoading: (loading: boolean) => void } export const useAuthStore = create((set) => ({ sessionToken: localStorage.getItem('sessionToken'), userInfo: null, site: null, isLoggedIn: !!localStorage.getItem('sessionToken'), loading: true, login: (sessionToken, userInfo, site) => { localStorage.setItem('sessionToken', sessionToken) set({ sessionToken, userInfo, site, isLoggedIn: true, loading: false }) }, logout: () => { localStorage.removeItem('sessionToken') set({ sessionToken: null, userInfo: null, site: null, isLoggedIn: false, loading: false }) }, updateUserInfo: (userInfo) => set({ userInfo }), setLoading: (loading) => set({ loading }), }))