blakeblackshear.frigate/web/src/App.jsx

46 lines
2.0 KiB
React
Raw Normal View History

2021-02-07 22:46:05 +01:00
import * as Routes from './routes';
2021-01-09 18:26:46 +01:00
import { h } from 'preact';
import ActivityIndicator from './components/ActivityIndicator';
2021-02-07 22:46:05 +01:00
import AsyncRoute from 'preact-async-route';
import AppBar from './AppBar';
2021-02-07 22:46:05 +01:00
import Cameras from './routes/Cameras';
2021-01-09 18:26:46 +01:00
import { Router } from 'preact-router';
import Sidebar from './Sidebar';
import { DarkModeProvider, DrawerProvider } from './context';
import { FetchStatus, useConfig } from './api';
2021-01-09 18:26:46 +01:00
export default function App() {
2022-02-27 15:04:12 +01:00
const { status, data: config } = useConfig();
const cameraComponent = config && config.ui.use_experimental ? Routes.getCameraV2 : Routes.getCamera;
2021-02-02 05:28:25 +01:00
return (
2021-01-31 15:24:04 +01:00
<DarkModeProvider>
<DrawerProvider>
2021-02-14 05:37:22 +01:00
<div data-testid="app" className="w-full">
<AppBar />
{status !== FetchStatus.LOADED ? (
<div className="flex flex-grow-1 min-h-screen justify-center items-center">
<ActivityIndicator />
2021-01-31 15:24:04 +01:00
</div>
) : (
<div className="flex flex-row min-h-screen w-full bg-white dark:bg-gray-900 text-gray-900 dark:text-white">
<Sidebar />
2022-02-27 15:04:12 +01:00
<div className="w-full flex-auto mt-16 min-w-0">
<Router>
2021-02-07 22:46:05 +01:00
<AsyncRoute path="/cameras/:camera/editor" getComponent={Routes.getCameraMap} />
2022-02-27 15:04:12 +01:00
<AsyncRoute path="/cameras/:camera" getComponent={cameraComponent} />
2021-06-12 16:55:40 +02:00
<AsyncRoute path="/birdseye" getComponent={Routes.getBirdseye} />
2021-02-07 22:46:05 +01:00
<AsyncRoute path="/events" getComponent={Routes.getEvents} />
<AsyncRoute path="/recording/:camera/:date?/:hour?/:seconds?" getComponent={Routes.getRecording} />
2021-02-07 22:46:05 +01:00
<AsyncRoute path="/debug" getComponent={Routes.getDebug} />
<AsyncRoute path="/styleguide" getComponent={Routes.getStyleGuide} />
<Cameras default path="/" />
</Router>
</div>
</div>
)}
</div>
</DrawerProvider>
2021-01-31 15:24:04 +01:00
</DarkModeProvider>
2021-01-09 18:26:46 +01:00
);
}