import { useEffect } from "react"; import { Navigate, Route, Routes } from "react-router-dom"; import { useQueryClient } from "@tanstack/react-query"; import { useBootstrap, useMe } from "./api/hooks.js"; import { Layout } from "./components/Layout.jsx"; import { AuthPage } from "./pages/AuthPage.jsx"; import { HomePage } from "./pages/HomePage.jsx"; import { ScriptsPage } from "./pages/ScriptsPage.jsx"; import { ScriptDryRunPage } from "./pages/ScriptDryRunPage.jsx"; import { ScriptEditPage, ScriptNewPage } from "./pages/ScriptEditPage.jsx"; import { WorkflowsPage } from "./pages/WorkflowsPage.jsx"; import { WorkflowEditPage, WorkflowNewPage } from "./pages/WorkflowEditPage.jsx"; import { WorkflowTrashPage } from "./pages/WorkflowTrashPage.jsx"; import { EventsPage } from "./pages/EventsPage.jsx"; import { EventDetailPage } from "./pages/EventDetailPage.jsx"; import { FailuresPage } from "./pages/FailuresPage.jsx"; import { KvPage } from "./pages/KvPage.jsx"; import { AuthProfilesPage } from "./pages/AuthProfilesPage.jsx"; import { ResponsesPage } from "./pages/ResponsesPage.jsx"; import { UsersPage } from "./pages/UsersPage.jsx"; import { SecretsPage } from "./pages/SecretsPage.jsx"; import { VariablesPage } from "./pages/VariablesPage.jsx"; import { ProfilesPage } from "./pages/ProfilesPage.jsx"; import { OpsPage } from "./pages/OpsPage.jsx"; import { BackupPage } from "./pages/BackupPage.jsx"; export function App() { const qc = useQueryClient(); const bootstrap = useBootstrap(); const me = useMe(); useEffect(() => { function onUnauthorized() { qc.setQueryData(["me"], null); } window.addEventListener("jerapah-flow:unauthorized", onUnauthorized); return () => window.removeEventListener("jerapah-flow:unauthorized", onUnauthorized); }, [qc]); const user = me.data?.user; const loading = bootstrap.isLoading || (me.isLoading && !me.isError && me.data === undefined); if (loading) { return (
); } if (!user) { return ; } return ( } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> {user.role === "admin" ? ( <> } /> } /> } /> } /> } /> } /> } /> } /> } /> ) : ( <> } /> } /> } /> } /> } /> } /> } /> )} } /> ); }