import { createContext, useContext, useState, useEffect } from "react"; const AuthContext = createContext(null); export const AuthProvider = ({ children }) => { const [user, setUser] = useState(null); const [isLoading, setIsLoading] = useState(true); useEffect(() => { const storedUser = localStorage.getItem("user"); if (storedUser) { try { setUser(JSON.parse(storedUser)); } catch (error) { console.error("Error parsing stored user information:", error); localStorage.removeItem("user"); } } setIsLoading(false); }, []); const login = async (username) => { setIsLoading(true); try { const userData = { username: username.trim() }; setUser(userData); localStorage.setItem("user", JSON.stringify(userData)); return userData; } finally { setIsLoading(false); } }; const logout = () => { setUser(null); localStorage.removeItem("user"); }; const value = { user, isLoading, login, logout, isAuthenticated: !!user, }; return {children}; }; export const useAuth = () => { const context = useContext(AuthContext); if (!context) { throw new Error("useAuth must be used within an AuthProvider"); } return context; };