Skip to content
Snippets Groups Projects
App.tsx 1.13 KiB
Newer Older
  • Learn to ignore specific revisions
  • 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'
    
    Rémi PAILHAREY's avatar
    Rémi PAILHAREY committed
    
    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])
    
    
    Rémi PAILHAREY's avatar
    Rémi PAILHAREY committed
      return (
    
          <UserContext.Provider
            value={{ user, loginUser, error, isLogged, logoutUser, setisLogged }}
          >
    
    Guilhem CARRON's avatar
    Guilhem CARRON committed
            <Layout>
              <Routes />
            </Layout>
          </UserContext.Provider>
    
    export default App