37 lines
851 B
TypeScript
37 lines
851 B
TypeScript
import { User } from '@/types/user';
|
|
import { create } from 'zustand';
|
|
import { devtools, persist } from 'zustand/middleware';
|
|
|
|
const userInfo = localStorage.getItem('userInfo');
|
|
|
|
type UserStoreState = {
|
|
user: User | null;
|
|
loading: boolean;
|
|
};
|
|
|
|
type UserStoreActions = {
|
|
setUser: (user: User | null) => void;
|
|
};
|
|
|
|
type UserStore = UserStoreState & UserStoreActions;
|
|
|
|
export const useUserStore = create<UserStore>()(
|
|
devtools(
|
|
persist(
|
|
(set, get) => ({
|
|
user: userInfo != null ? JSON.parse(userInfo) : ({} as User),
|
|
loading: false,
|
|
setUser: (user: User | null) => set({ user }),
|
|
}),
|
|
{ name: 'userInfo' }
|
|
)
|
|
)
|
|
);
|
|
|
|
export const useUserSelector = () => {
|
|
return useUserStore((state) => state.user);
|
|
};
|
|
export const useSetUserSelector = () => {
|
|
return useUserStore((state) => state.setUser);
|
|
};
|