Proyectos de Subversion LeadersLinked - SPA

Rev

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

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