import React, { createContext, useContext, useEffect, useState } from 'react' import { useNavigate } from 'react-router-dom'; interface User { email: string; name: string; accessToken:string; userId:string; } interface AuthContextType { user: User | null; login: (userData: User) => void; logout: () => void } const AuthContext = createContext(null) export const AuthProvider = ({ children }: { children: React.ReactNode }) => { const [user, setUser] = useState(null) const navigate = useNavigate() useEffect(() => { const storedUser = localStorage.getItem("user") if (storedUser) { setUser(JSON.parse(storedUser)) } }, []) const login = (userData: User) => { setUser(userData) localStorage.setItem("user", JSON.stringify(userData)) localStorage.setItem("accessToken", userData?.accessToken) localStorage.setItem("userId", userData?.userId) } const logout = () => { setUser(null) localStorage.removeItem("user") localStorage.removeItem("accessToken") localStorage.removeItem("userId") localStorage.removeItem("userEmail") sessionStorage.removeItem("citySelected") navigate("/") } return ( {children} ) } export const useAuth = () => { const ctx = useContext(AuthContext) if (!ctx) throw new Error("useAuth must be used inside AuthProvider") return ctx }