Files
PacketStation/frontend/src/screens/ScreenRoute.tsx
T

17 lines
748 B
TypeScript
Raw Normal View History

import { Navigate, useParams } from "react-router";
import { homePath, isScreen, orderScreens } from "../auth/roles";
import { useAuth } from "../auth/useAuth";
import { AdminPage } from "./admin/AdminPage";
import { PlaceholderScreen } from "./PlaceholderScreen";
/** /:screen. An unknown screen, or one the user does not have, goes to the user's first screen. */
export function ScreenRoute() {
const { screen } = useParams();
const { me } = useAuth();
if (!me) return null;
const allowed = orderScreens(me.screens);
if (!isScreen(screen) || !allowed.includes(screen)) return <Navigate to={homePath(me.screens)} replace />;
if (screen === "admin") return <AdminPage />;
return <PlaceholderScreen key={screen} screen={screen} />;
}