Files
geointel-Public/frontend/src/App.tsx
T

48 lines
1.4 KiB
TypeScript

import { Suspense, lazy } from 'react'
import { LandingPage } from './components/auth/LandingPage'
import { useOperatorSession } from './hooks/useOperatorSession'
// De werkbank wordt pas opgehaald wanneer iemand is aangemeld. Daardoor betaalt
// het inlogscherm niet voor de kaartmotor en de paneelopmaak.
const WorkbenchApp = lazy(() => import('./WorkbenchApp'))
function Voorbereiden({ tekst }: { tekst: string }): JSX.Element {
return (
<div className="landing-auth-loading" role="status" aria-live="polite">
<div><span aria-hidden="true" /><strong>{tekst}</strong></div>
</div>
)
}
function App(): JSX.Element {
const { session, sessionError, loggingOut, handleAuthenticated, handleLogout } = useOperatorSession()
if (session === null) {
return <Voorbereiden tekst="GeoIntel wordt voorbereid…" />
}
if (!session.authenticated) {
return (
<LandingPage
serviceError={sessionError}
guestAccessEnabled={session.guest_access_enabled}
authentikEnabled={session.authentik_enabled}
onAuthenticated={handleAuthenticated}
/>
)
}
return (
<Suspense fallback={<Voorbereiden tekst="De werkbank wordt geladen…" />}>
<WorkbenchApp
username={session.username}
accessMode={session.role ?? (session.authentication_required ? 'operator' : 'open')}
loggingOut={loggingOut}
onLogout={handleLogout}
/>
</Suspense>
)
}
export default App