Newer
Older
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 = () => {
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;