Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 3428 | Rev 3585 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
3432 stevensc 1
import React, { useEffect, useState } from 'react'
2
import { useDispatch, useSelector } from 'react-redux'
2611 stevensc 3
 
3432 stevensc 4
import { axios } from './utils'
5
import { useFetch } from '@hooks'
6
import { labelsAdapter } from './utils/labels'
7
import { setIntlLabels } from './redux/intl/intl.action'
8
import { setCrendentials } from './redux/auth/auth.actions'
2611 stevensc 9
 
3432 stevensc 10
import AppRoutes from './routes/routes'
11
import ErrorPage from './pages/error/error-page'
12
import Spinner from './components/UI/Spinner'
2611 stevensc 13
 
3432 stevensc 14
import './styles/globals.scss'
2611 stevensc 15
 
3432 stevensc 16
export default function App() {
17
  const [loading, setLoading] = useState(true)
18
  const [credentialsError, setCredentialsError] = useState(false)
19
  const { data: labels } = useFetch('/language')
20
  const { is_logged_in } = useSelector((state) => state.auth)
21
  const dispatch = useDispatch()
2611 stevensc 22
 
3432 stevensc 23
  const getCredentials = async () => {
24
    const response = await axios.get('/signin')
25
    const { data, success } = response.data
26
    if (!success) throw new Error('Error al obtener las credenciales')
27
    return data
28
  }
2611 stevensc 29
 
3432 stevensc 30
  useEffect(() => {
31
    setLoading(true)
32
 
33
    getCredentials()
34
      .then((credentials) => {
35
        window.localStorage.setItem('jwt', credentials.jwt)
36
        dispatch(setCrendentials(credentials))
37
      })
38
      .catch((error) => {
39
        console.error(error.message)
40
        setCredentialsError(true)
41
      })
42
      .finally(() => setLoading(false))
43
  }, [is_logged_in])
44
 
45
  useEffect(() => {
46
    dispatch(setIntlLabels(labelsAdapter(labels)))
47
  }, [labels])
48
 
2611 stevensc 49
  if (loading) {
3432 stevensc 50
    return <Spinner />
2611 stevensc 51
  }
52
 
3432 stevensc 53
  if (credentialsError) {
54
    return <ErrorPage />
2611 stevensc 55
  }
56
 
3432 stevensc 57
  return <AppRoutes />
2611 stevensc 58
}