Newer
Older
import { ReactNode, useEffect, useState } from 'react';
import { AuthContext } from '../contexts/AuthContext';
import Spinner from '../components/Spinner/Spinner';
import { authoriseUser } from '../services/Authorise/Authorise';
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>();
async function authUser() {
try {
const result = await authoriseUser();
giveAuth();
updateUser(result.data);
setLoading(false);
} catch (error) {
setLoading(false);
}
}
authUser();
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;