Proyectos de Subversion LeadersLinked - SPA

Rev

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

Rev Autor Línea Nro. Línea
3585 stevensc 1
import React, { useEffect, useState } from 'react';
2
import { useDispatch, useSelector } from 'react-redux';
2611 stevensc 3
 
3585 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
 
3585 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
export default function App() {
3585 stevensc 15
  const [loading, setLoading] = useState(true);
16
  const [credentialsError, setCredentialsError] = useState(false);
17
  const { data: labels } = useFetch('/language');
18
  const { is_logged_in } = useSelector((state) => state.auth);
19
  const dispatch = useDispatch();
2611 stevensc 20
 
3432 stevensc 21
  const getCredentials = async () => {
3585 stevensc 22
    const response = await axios.get('/signin');
23
    const { data, success } = response.data;
24
    if (!success) throw new Error('Error al obtener las credenciales');
25
    return data;
26
  };
2611 stevensc 27
 
3432 stevensc 28
  useEffect(() => {
3585 stevensc 29
    setLoading(true);
3432 stevensc 30
 
31
    getCredentials()
32
      .then((credentials) => {
3585 stevensc 33
        window.localStorage.setItem('jwt', credentials.jwt);
34
        dispatch(setCrendentials(credentials));
3432 stevensc 35
      })
36
      .catch((error) => {
3585 stevensc 37
        console.error(error.message);
38
        setCredentialsError(true);
3432 stevensc 39
      })
3585 stevensc 40
      .finally(() => setLoading(false));
41
  }, [is_logged_in]);
3432 stevensc 42
 
43
  useEffect(() => {
3585 stevensc 44
    dispatch(setIntlLabels(labelsAdapter(labels)));
45
  }, [labels]);
3432 stevensc 46
 
2611 stevensc 47
  if (loading) {
3681 stevensc 48
    return <Spinner absolute />;
2611 stevensc 49
  }
50
 
3432 stevensc 51
  if (credentialsError) {
3585 stevensc 52
    return <ErrorPage />;
2611 stevensc 53
  }
54
 
3585 stevensc 55
  return <AppRoutes />;
2611 stevensc 56
}