Skip to content
Snippets Groups Projects
App.tsx 1.13 KiB
Newer Older
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