import React, { useEffect } from 'react'; import InsufficientPermission from './components/permission/InsufficientPermission'; import PermissionAwareRoute from './components/permission/PermissionAwareRoute'; import ToastsContainer from './components/toasts/ToastContainer'; import JobMutation from './views/jobs/mutation/JobMutation'; import UserMutator from './views/user/mutation/UserMutator'; import ToastContext from './components/toasts/ToastContext'; import JobInsight from './views/jobs/insights/JobInsight'; import { useDispatch, useSelector } from 'react-redux'; import useToast from './components/toasts/useToast'; import { Switch, Redirect } from 'react-router-dom'; import Logout from './components/logout/Logout'; import Logo from './components/logo/Logo'; import Menu from './components/menu/Menu'; import Login from './views/login/Login'; import Users from './views/user/Users'; import Jobs from './views/jobs/Jobs'; import { Route } from 'react-router'; import './App.less'; export default function FredyApp() { const dispatch = useDispatch(); const [showToast, onToastFinished, toasts] = useToast(); const [loading, setLoading] = React.useState(true); const currentUser = useSelector((state) => state.user.currentUser); useEffect(async () => { await dispatch.provider.getProvider(); await dispatch.jobs.getJobs(); await dispatch.jobs.getProcessingTimes(); await dispatch.notificationAdapter.getAdapter(); await dispatch.user.getCurrentUser(); setLoading(false); }, [currentUser?.userId]); const needsLogin = () => { return currentUser == null || Object.keys(currentUser).length === 0; }; const isAdmin = () => currentUser != null && currentUser.isAdmin; const login = () => ( ); return loading ? null : needsLogin() ? ( login() ) : (
} currentUser={currentUser} /> } currentUser={currentUser} /> } currentUser={currentUser} />
); } FredyApp.displayName = 'FredyApp';