'use client' import { createContext, useContext, useEffect, useState } from 'react' import Loading from '../components/layout/shared/Loading' import { User } from '../types/services/user' type AuthContextType = { isAuthenticated: boolean token: string | null currentUser: User | null } const AuthContext = createContext({ isAuthenticated: false, token: null, currentUser: null }) export const AuthProvider = ({ children }: { children: React.ReactNode }) => { const [token, setToken] = useState(null) const [currentUser, setCurrentUser] = useState(null) const [isInitialized, setIsInitialized] = useState(false) useEffect(() => { const savedToken = localStorage.getItem('authToken') const savedUser = localStorage.getItem('user') if (savedToken) setToken(savedToken) if (savedUser) { try { setCurrentUser(JSON.parse(savedUser)) } catch (error) { console.error('Failed to parse saved user data:', error) // Clear invalid data localStorage.removeItem('user') } } setIsInitialized(true) }, []) if (!isInitialized) return return ( {children} ) } export const useAuth = () => useContext(AuthContext)