import { create } from 'zustand';
|
import { StateCreator } from 'zustand';
|
|
interface UserInfo {
|
id: number;
|
nickname: string;
|
accountName: string;
|
}
|
|
interface UserState {
|
userInfo: UserInfo | null;
|
token: string | null;
|
setUserInfo: (info: UserInfo | null) => void;
|
setToken: (token: string | null) => void;
|
clearUserInfo: () => void;
|
}
|
|
const createUserStore: StateCreator<UserState> = (set) => ({
|
userInfo: null,
|
token: typeof window !== 'undefined' ? localStorage.getItem('token') : null,
|
setUserInfo: (info: UserInfo | null) => set({ userInfo: info }),
|
setToken: (token: string | null) => {
|
if (token) {
|
localStorage.setItem('token', token);
|
} else {
|
localStorage.removeItem('token');
|
}
|
set({ token });
|
},
|
clearUserInfo: () => {
|
localStorage.removeItem('token');
|
set({ userInfo: null, token: null });
|
},
|
});
|
|
export const useUserStore = create(createUserStore);
|