nginx-proxy-manager/frontend/src/components/Router.tsx
Jamie Curnow ae00ab09e4 Fixes to lang selection now apply immediately
Moved lang list to separate file
Cleaned up some lang workarounds
2021-07-27 11:40:44 +10:00

83 lines
1.9 KiB
TypeScript

import React, { lazy, Suspense } from "react";
import { SiteWrapper, SuspenseLoader } from "components";
import {
useAuthState,
useLocaleState,
useHealthState,
UserProvider,
} from "context";
import { BrowserRouter, Switch, Route } from "react-router-dom";
const AccessLists = lazy(() => import("pages/AccessLists"));
const AuditLog = lazy(() => import("pages/AuditLog"));
const Certificates = lazy(() => import("pages/Certificates"));
const Dashboard = lazy(() => import("pages/Dashboard"));
const Hosts = lazy(() => import("pages/Hosts"));
const Login = lazy(() => import("pages/Login"));
const Settings = lazy(() => import("pages/Settings"));
const Setup = lazy(() => import("pages/Setup"));
const Users = lazy(() => import("pages/Users"));
function Router() {
const { health } = useHealthState();
const { authenticated } = useAuthState();
const { locale } = useLocaleState();
const Spinner = <SuspenseLoader />;
if (health.loading) {
return Spinner;
}
if (health.healthy && !health.setup) {
return (
<Suspense fallback={Spinner}>
<Setup />
</Suspense>
);
}
if (!authenticated) {
return (
<Suspense fallback={Spinner}>
<Login />
</Suspense>
);
}
return (
<UserProvider>
<BrowserRouter>
<SiteWrapper key={`locale-${locale}`}>
<Suspense fallback={Spinner}>
<Switch>
<Route path="/hosts">
<Hosts />
</Route>
<Route path="/certificates">
<Certificates />
</Route>
<Route path="/audit-log">
<AuditLog />
</Route>
<Route path="/access-lists">
<AccessLists />
</Route>
<Route path="/users">
<Users />
</Route>
<Route path="/settings">
<Settings />
</Route>
<Route path="/">
<Dashboard />
</Route>
</Switch>
</Suspense>
</SiteWrapper>
</BrowserRouter>
</UserProvider>
);
}
export default Router;