import { useState, useEffect } from 'react' import { BrowserRouter } from 'react-router-dom' import Layout from './components/Layout/Layout' import Routes from './components/Routes/Routes' import { useAuth } from './hooks/useAuth' import { UserContext } from './hooks/userContext' import { User } from './models/user.model' import { ToastContainer } from 'react-toastify' import 'react-toastify/dist/ReactToastify.css' function App() { const { loginUser, error, isUserLogged, getUser, logoutUser } = useAuth() const [isLogged, setisLogged] = useState<boolean>(false) const [user, setuser] = useState<User>() useEffect(() => { let subscribed = true async function checkIsLogged() { const userLogged = await isUserLogged() if (userLogged) { setisLogged(true) setuser(getUser() as User) } else setisLogged(false) } if (subscribed) checkIsLogged() return () => { subscribed = false } }, [isLogged, setisLogged]) return ( <BrowserRouter> <UserContext.Provider value={{ user, loginUser, error, isLogged, logoutUser, setisLogged }} > <Layout> <Routes /> </Layout> </UserContext.Provider> <ToastContainer progressClassName="toastProgress" bodyClassName="toastBody" /> </BrowserRouter> ) } export default App