import { createContext, useContext, useEffect, useState, useCallback } from "react"; import api from "./api"; const AuthCtx = createContext(null); export const AuthProvider = ({ children }) => { const [user, setUser] = useState(null); const [loading, setLoading] = useState(true); const refresh = useCallback(async () => { const token = localStorage.getItem("kino_token"); if (!token) { setUser(null); setLoading(false); return; } try { const { data } = await api.get("/auth/me"); setUser(data); } catch { localStorage.removeItem("kino_token"); setUser(null); } finally { setLoading(false); } }, []); useEffect(() => { refresh(); }, [refresh]); const login = async (email, password) => { const { data } = await api.post("/auth/login", { email, password }); localStorage.setItem("kino_token", data.access_token); setUser(data.user); return data.user; }; const register = async (email, password, name) => { const { data } = await api.post("/auth/register", { email, password, name }); localStorage.setItem("kino_token", data.access_token); setUser(data.user); return data.user; }; const logout = () => { localStorage.removeItem("kino_token"); setUser(null); }; return ( {children} ); }; export const useAuth = () => useContext(AuthCtx);