import { useEffect, useState } from "react"; import { api, APIError } from "./api"; import { BootScreen, Shell } from "./components/Layout"; import { LoginPage } from "./pages/LoginPage"; import { Routes } from "./pages/Routes"; import { currentRoute, type RouteState } from "./routing"; export function App() { const [actor, setActor] = useState(undefined); const [route, setRoute] = useState(() => currentRoute()); useEffect(() => { const onPopState = () => setRoute(currentRoute()); window.addEventListener("popstate", onPopState); return () => window.removeEventListener("popstate", onPopState); }, []); useEffect(() => { api.session() .then((session) => setActor(session.actor)) .catch((error) => { if (error instanceof APIError && error.status === 401) { setActor(null); return; } setActor(null); }); }, []); const navigate = (href: string) => { window.history.pushState(null, "", href); setRoute(currentRoute()); }; if (actor === undefined) { return ; } if (actor === null) { return ; } return ( setActor(null)}> ); }