From d7a5109d8e627204235afb63f12845de7847c51c Mon Sep 17 00:00:00 2001 From: Vladislav Date: Mon, 9 Jun 2025 17:47:45 +0500 Subject: [PATCH] feat: add user store --- client/src/store/user.ts | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 client/src/store/user.ts 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); +};