File: //home/arjun/projects/propbase/propbase_website/stores/auth.ts
import { create } from 'zustand';
import { decryptData } from '@/shared/utils/crypto';
type objectParam = {
userData: string | object | null;
userType: string | null;
isLoggedIn: boolean;
darkmode: boolean;
};
interface Props {
isLoggedIn: boolean;
userData: string | object | null;
userType: string | null;
setUserData: (val: Partial<objectParam>) => void;
darkmode: boolean;
}
const useBasicStore = create<Props>((set) => {
if (typeof window !== 'undefined') {
const accessToken = localStorage.getItem('accessTokenHome');
const userData = localStorage.getItem('userData');
const userType = localStorage.getItem('userType');
const darkmode = localStorage.getItem('isdarkMode') === 'true';
return {
isLoggedIn: !!accessToken,
userData: userData ? decryptData(userData) : null,
userType: userType ? decryptData(userType) : null,
setUserData: (val: Partial<objectParam>) => set((state) => ({ ...state, ...val })),
darkmode: darkmode,
};
}
return {
isLoggedIn: false,
userData: null,
userType: null,
darkmode: true,
setUserData: (val: Partial<objectParam>) => set((state) => ({ ...state, ...val })),
};
});
export default useBasicStore;