import React, { useEffect, useState } from 'react'; import { Route, Routes } from 'react-router-dom'; import { observer } from 'mobx-react-lite'; import dataGripStore, { DataParseStatusEnum } from 'ts/store/DataGrip'; import DropZone from 'ts/components/DropZone'; import SplashScreen from 'ts/components/SplashScreen'; import Confirm from 'ts/components/ModalWindow/Confirm'; import PageWrapper from '../../PageWrapper'; import Team from '../../Team/index'; import Person from '../../Person/index'; import PrintAll from '../../PrintAll/index'; import Welcome from '../../Welcome/index'; import Settings from '../../Settings/index'; import DebugPage from '../../Debug/index'; interface IViewWithChartsProps { showSplashScreen: boolean; } function ViewWithCharts({ showSplashScreen }: IViewWithChartsProps) { return ( <> <Confirm /> <Routes> <Route path="/settings" element={( <PageWrapper> <Settings /> </PageWrapper> )} /> <Route path="/debug" element={( <PageWrapper> <DebugPage /> </PageWrapper> )} /> <Route path="/print" element={( <PageWrapper> <PrintAll /> </PageWrapper> )} /> <Route path="/:type/:page" element={( <PageWrapper> <Team /> </PageWrapper> )} /> <Route path="/:type/:page/:userId" element={( <PageWrapper> <Person /> </PageWrapper> )} /> <Route path="*" element={( <PageWrapper> <Team /> </PageWrapper> )} /> </Routes> {showSplashScreen && <SplashScreen />} </> ); } function ViewWithWelcome() { return ( <Routes> <Route path="*" element={( <Welcome /> )} /> </Routes> ); } const Success = observer(() => { const [showSplashScreen, setShowSplashScreen] = useState<boolean>(true); const status = dataGripStore.status; useEffect(() => { // @ts-ignore dataGripStore.setCommits(window?.report || []); }, []); if (status === DataParseStatusEnum.PROCESSING) return null; return ( <> {status === DataParseStatusEnum.DONE && ( <ViewWithCharts showSplashScreen={showSplashScreen} /> )} {status === DataParseStatusEnum.WAITING && ( <ViewWithWelcome /> )} <DropZone onChange={(type: string, data: any[]) => { setShowSplashScreen(false); if (type === 'dump') dataGripStore.setCommits(data); setTimeout(() => { setShowSplashScreen(true); }); }} /> </> ); }); export default Success;