diff --git a/client/src/store/user.ts b/client/src/store/user.ts new file mode 100644 index 0000000..f9c9517 --- /dev/null +++ b/client/src/store/user.ts @@ -0,0 +1,36 @@ +import { create } from 'zustand'; +import { devtools, persist } from 'zustand/middleware'; +import { User } from '../types/user'; + +const userInfo = localStorage.getItem('userInfo'); + +type UserStoreState = { + user: User; + loading: boolean; +}; + +type UserStoreActions = { + setUser: (user: User) => void; +}; + +type UserStore = UserStoreState & UserStoreActions; + +export const useUserStore = create()( + devtools( + persist( + (set, get) => ({ + user: userInfo != null ? JSON.parse(userInfo) : ({} as User), + loading: false, + setUser: (user: User) => set({ user }), + }), + { name: 'userInfo' } + ) + ) +); + +export const useUserSelector = () => { + return useUserStore((state) => state.user); +}; +export const useSetUserSelector = () => { + return useUserStore((state) => state.setUser); +};