HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
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;