import { ReactNode, useEffect, useState } from 'react'; import { AuthContext } from '../contexts/AuthContext'; import Spinner from '../components/Spinner/Spinner'; export interface IUser { id: number; email: string; username: string; type: number; } function AuthProvider({ children }: { children: ReactNode }) { const [loading, setLoading] = useState(true); const [auth, setAuth] = useState(false); const [user, setUser] = useState<IUser>(); useEffect(() => { setTimeout(() => setLoading(false), 500); // Fake api timer }, []); const giveAuth = () => { setAuth(true); }; const removeAuth = () => { setAuth(false); }; const updateUser = (newUser: IUser) => { setUser(newUser); } if (loading) { return ( <div className='full'> <Spinner></Spinner> </div> ); } return ( <AuthContext.Provider value={{ isAuth: auth, giveAuth, removeAuth, user, updateUser }}> {!loading && children} </AuthContext.Provider> ); } export default AuthProvider;