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