"use client"; import { create } from "zustand"; import { auth } from "@/lib/firebase"; import { User, onAuthStateChanged, signOut, getIdToken } from "firebase/auth"; interface AuthState { user: User | null; token: string | null; loading: boolean; setUser: (user: User | null) => void; setToken: (token: string | null) => void; setLoading: (loading: boolean) => void; fetchToken: (user: User) => Promise; logout: () => Promise; } export const useAuthStore = create((set) => ({ user: null, token: null, loading: true, setUser: (user) => set({ user }), setToken: (token) => set({ token }), setLoading: (loading) => set({ loading }), fetchToken: async (user) => { const idToken = await getIdToken(user, true); set({ token: idToken }); }, logout: async () => { await signOut(auth); set({ user: null, token: null, loading: false }); }, })); // ✅ Firebase observer onAuthStateChanged(auth, async (user) => { const store = useAuthStore.getState(); if (user) { store.setUser(user); await store.fetchToken(user); store.setLoading(false); } else { store.setUser(null); store.setToken(null); store.setLoading(false); } });