import React, { useEffect } from 'react'; import InsufficientPermission from './components/permission/InsufficientPermission'; import PermissionAwareRoute from './components/permission/PermissionAwareRoute'; import GeneralSettings from './views/generalSettings/GeneralSettings'; import JobMutation from './views/jobs/mutation/JobMutation'; import UserMutator from './views/user/mutation/UserMutator'; import JobInsight from './views/jobs/insights/JobInsight.jsx'; import { useActions, useSelector } from './services/state/store'; import { Routes, Route, Navigate } 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 './App.less'; import TrackingModal from './components/tracking/TrackingModal.jsx'; import { Banner } from '@douyinfe/semi-ui'; import VersionBanner from './components/version/VersionBanner.jsx'; export default function FredyApp() { const actions = useActions(); const [loading, setLoading] = React.useState(true); const currentUser = useSelector((state) => state.user.currentUser); const versionUpdate = useSelector((state) => state.versionUpdate.versionUpdate); const settings = useSelector((state) => state.generalSettings.settings); useEffect(() => { async function init() { await actions.user.getCurrentUser(); if (!needsLogin()) { await actions.provider.getProvider(); await actions.jobs.getJobs(); await actions.jobs.getProcessingTimes(); await actions.notificationAdapter.getAdapter(); await actions.generalSettings.getGeneralSettings(); await actions.versionUpdate.getVersionUpdate(); } setLoading(false); } init(); }, [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() ) : (
{versionUpdate?.newVersion && } {settings.demoMode && ( <>
)} {settings.analyticsEnabled === null && !settings.demoMode && } } /> } /> } /> } /> } /> {/* Permission-aware routes */} } /> } /> } /> } /> } />
); } FredyApp.displayName = 'FredyApp';