Rev 3034 | Rev 3396 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import React, { useEffect, useState } from 'react'import { useDispatch, useSelector } from 'react-redux'import { axios } from './utils'import { useFetch } from '@hooks'import { labelsAdapter } from './utils/labels'import { setIntlLabels } from './redux/intl/intl.action'import { logout, setPermissions } from './redux/auth/auth.actions'import AppRoutes from './routes/routes'import Spinner from './components/UI/Spinner'import ErrorPage from './pages/error/error-page'import './styles/globals.scss'export default function App() {const [loading, setLoading] = useState(true)const [credentialsError, setCredentialsError] = useState(false)const { data: labels } = useFetch('/language')const { isAuth } = useSelector(({ auth }) => auth)const dispatch = useDispatch()const getCredentials = async () => {const response = await axios.get('/signin')const { data, success } = response.dataif (!success) throw new Error(data)return data}const getUserCredentials = async () => {setLoading(true)getCredentials().then((credentials) => {const localAes = window.localStorage.getItem('aes')const localJwt = window.localStorage.getItem('jwt')const permissions = structuredClone(credentials)permissions.isAuth = credentials.is_logged_inif (localAes) {permissions.aes = localAes} else {permissions.aes = credentials.aeswindow.localStorage.setItem('aes', credentials.aes)}if (localJwt) {permissions.jwt = localJwt} else {permissions.jwt = credentials.jwtwindow.localStorage.setItem('jwt', credentials.jwt)}dispatch(setPermissions(permissions))}).catch((error) => {if (error.message.includes('sesión')) {dispatch(logout())getUserCredentials()} else {setCredentialsError(true)}}).finally(() => setLoading(false))}useEffect(() => {getUserCredentials()}, [isAuth])useEffect(() => {dispatch(setIntlLabels(labelsAdapter(labels)))}, [labels])if (loading) {return <Spinner />}if (credentialsError) {return <ErrorPage />}return <AppRoutes />}