"use client" import { create } from "zustand" import { persist } from "zustand/middleware" import { debouncedPersistJSONStorage } from "@/lib/stores/debounced-json-storage" interface AuthState { accessToken: string | null refreshToken: string | null expiresAt: number | null login: (accessToken: string, refreshToken: string, expiresAt: number) => void logout: () => void isAuthenticated: () => boolean } export const useAuthStore = create()( persist( (set, get) => ({ accessToken: null, refreshToken: null, expiresAt: null, login: (accessToken, refreshToken, expiresAt) => set({ accessToken, refreshToken, expiresAt }), logout: () => set({ accessToken: null, refreshToken: null, expiresAt: null }), isAuthenticated: () => { const { accessToken, expiresAt } = get() if (!accessToken || !expiresAt) return false return Date.now() < expiresAt }, }), { name: "ultimail-auth", storage: debouncedPersistJSONStorage, partialize: (state) => ({ accessToken: state.accessToken, refreshToken: state.refreshToken, expiresAt: state.expiresAt, }), } ) )