feat: add user store
This commit is contained in:
parent
8122f1878a
commit
d7a5109d8e
36
client/src/store/user.ts
Normal file
36
client/src/store/user.ts
Normal file
@ -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<UserStore>()(
|
||||
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);
|
||||
};
|
Loading…
Reference in New Issue
Block a user