'use client'; import React, { createContext, useState, useContext, useEffect } from 'react'; type User = { id: number; username: string; }; interface AuthContextType { user: User | null; setUser: (user: User | null) => void; logout: () => void; } const AuthContext = createContext(null); export const AuthContextProvider = ({ children }: React.PropsWithChildren) => { const [user, setUser] = useState(null); useEffect(() => { const token = localStorage.getItem('token'); if (!token) return; fetch('http://localhost:8000/api/me', { headers: { Authorization: `Bearer ${token}` }, }) .then((res) => { if (!res.ok) throw new Error('Not authenticated'); return res.json(); }) .then((userData) => setUser(userData)) .catch(() => setUser(null)); }, []); const logout = () => { localStorage.removeItem('token'); setUser(null); }; return ( {children} ); }; export const useAuthContext = () => { const context = useContext(AuthContext); if (!context) throw new Error( 'useAuthContext must be used within AuthContextProvider', ); return context; }; export const useUser = () => useAuthContext().user; export const useLogout = () => useAuthContext().logout;