import { create } from 'zustand'; import { persist } from 'zustand/middleware'; import { User } from '@/types/user'; interface AuthState { user: User | null; isAuthenticated: boolean; isLoading: boolean; isHydrated: boolean; setUser: (user: User) => void; clearUser: () => void; setLoading: (loading: boolean) => void; } export const useAuthStore = create()( persist( (set) => ({ user: null, isAuthenticated: false, isLoading: true, isHydrated: false, setUser: (user) => set({ user, isAuthenticated: true, isLoading: false }), clearUser: () => set({ user: null, isAuthenticated: false, isLoading: false }), setLoading: (loading) => set({ isLoading: loading }), }), { name: 'colaflow-auth', partialize: (state) => ({ user: state.user, isAuthenticated: state.isAuthenticated, }), onRehydrateStorage: () => (state) => { console.log('[AuthStore] Hydration started'); if (state) { state.isHydrated = true; console.log('[AuthStore] Hydration completed', { user: state.user?.id, isAuthenticated: state.isAuthenticated }); } }, } ) );