// eslint-disable-next-line @typescript-eslint/no-use-before-define import React, { useEffect, useState } from 'react'; import { Router } from 'react-router'; import { Switch, Route } from 'react-router-dom'; import { RecoilRoot } from 'recoil'; import MobileRedirect from './components/mobile-redirect'; import RouterServices, { RouteType } from './features/router/services/router-service'; import ErrorBoundary from '@views/error/error-boundary'; import InitService from './features/global/services/init-service'; import useTimeout from '@features/global/hooks/use-timeout'; import ApplicationLoader from './components/loader/application-loader'; import DebugState from './components/debug/debug-state'; import '@styles/index.less'; const delayMessage = 5000; export default () => { const [displayDelayLoader, setDisplayDelayLoader] = useState(false); const [firstRenderDate] = useState(Date.now()); useEffect(() => { InitService.init(); }, []); const server_infos_loaded = InitService.useWatcher(() => InitService.server_infos_loaded); useTimeout(() => { if (!server_infos_loaded && Date.now() >= firstRenderDate + delayMessage) { setDisplayDelayLoader(true); } }, delayMessage); useEffect(() => { if (server_infos_loaded) { setDisplayDelayLoader(false); try { window.document.getElementById('app_loader')?.remove(); } catch (err) { //Null } } }, [server_infos_loaded]); if (displayDelayLoader && !server_infos_loaded) { return ; } if (!server_infos_loaded) { return <>; } return ( {RouterServices.routes.map((route: RouteType, index: number) => ( route.options?.withErrorBoundary ? ( ) : ( ) } /> ))} { { RouterServices.replace( `${ RouterServices.pathnames.LOGIN }?auto&${RouterServices.history.location.search.substr(1)}`, ); return
; }} /> } ); };