import { ReactNode, useEffect, useState } from 'react'; import { useLoaderData } from 'react-router-dom'; import { AuthContext } from '../contexts/AuthContext'; export interface IUser { id: number; email: string; username: string; type: number; } function AuthProvider({ children }: { children: ReactNode }) { const [auth, setAuth] = useState(true); const [user, setUser] = useState<IUser>(); const data = useLoaderData() as IUser | null; useEffect(() => { if (data) { giveAuth(); setUser(data); } else { removeAuth(); setUser(undefined); } }, []); const giveAuth = () => { setAuth(true); }; const removeAuth = () => { setAuth(false); }; const updateUser = (newUser: IUser) => { setUser(newUser); } return ( <AuthContext.Provider value={{ isAuth: auth, giveAuth, removeAuth, user, updateUser }}> {children} </AuthContext.Provider> ); } export default AuthProvider;