import { lazy, Suspense } from "react"; import { Navigate, Route, Routes, useLocation } from "react-router-dom"; import { AppLayout } from "./layout/AppLayout"; import { WorkbenchPage } from "./pages/WorkbenchPage"; import { LoginPage } from "./pages/LoginPage"; import { ForceChangePasswordPage } from "./pages/ForceChangePasswordPage"; import { useAuth } from "./auth/AuthContext"; const CollectPage = lazy(() => import("./pages/CollectPage").then((m) => ({ default: m.CollectPage }))); const ConfigSyncPage = lazy(() => import("./pages/ConfigSyncPage").then((m) => ({ default: m.ConfigSyncPage })), ); const NePage = lazy(() => import("./pages/NePage").then((m) => ({ default: m.NePage }))); const UmePage = lazy(() => import("./pages/UmePage").then((m) => ({ default: m.UmePage }))); const WebcrtPage = lazy(() => import("./pages/WebcrtPage").then((m) => ({ default: m.WebcrtPage }))); const TopologyPage = lazy(() => import("./pages/TopologyPage").then((m) => ({ default: m.TopologyPage }))); const NetworkLayout = lazy(() => import("./pages/network/NetworkLayout").then((m) => ({ default: m.NetworkLayout })), ); const NetworkDevicesPage = lazy(() => import("./pages/network/NetworkDevicesPage").then((m) => ({ default: m.NetworkDevicesPage })), ); const NetworkAlarmsPage = lazy(() => import("./pages/network/NetworkAlarmsPage").then((m) => ({ default: m.NetworkAlarmsPage })), ); const NetworkConfigsPage = lazy(() => import("./pages/network/NetworkConfigsPage").then((m) => ({ default: m.NetworkConfigsPage })), ); const LldpLinksPage = lazy(() => import("./pages/network/LldpLinksPage").then((m) => ({ default: m.LldpLinksPage })), ); const TopologyClassifyPage = lazy(() => import("./pages/network/TopologyClassifyPage").then((m) => ({ default: m.TopologyClassifyPage })), ); const PortTrafficPage = lazy(() => import("./pages/network/PortTrafficPage").then((m) => ({ default: m.PortTrafficPage })), ); const PortTrafficBoardListPage = lazy(() => import("./pages/network/PortTrafficBoardListPage").then((m) => ({ default: m.PortTrafficBoardListPage, })), ); const PortTrafficWallPage = lazy(() => import("./pages/network/PortTrafficWallPage").then((m) => ({ default: m.PortTrafficWallPage })), ); const UsersPage = lazy(() => import("./pages/UsersPage").then((m) => ({ default: m.UsersPage }))); const AuditLayout = lazy(() => import("./pages/audit/AuditLayout").then((m) => ({ default: m.AuditLayout })), ); const TaskOverviewPage = lazy(() => import("./pages/audit/TaskOverviewPage").then((m) => ({ default: m.TaskOverviewPage })), ); const AuditPage = lazy(() => import("./pages/AuditPage").then((m) => ({ default: m.AuditPage }))); const ApiTokensPage = lazy(() => import("./pages/ApiTokensPage").then((m) => ({ default: m.ApiTokensPage })), ); const SessionsPage = lazy(() => import("./pages/SessionsPage").then((m) => ({ default: m.SessionsPage })), ); /** Preserve query when redirecting legacy /network/webcrt → /webcrt. */ function NetworkWebcrtRedirect() { const { search } = useLocation(); return ; } /** Legacy `?board_id=` under network wall → dedicated board tab route. */ function LegacyPortTrafficWallRedirect() { const { search } = useLocation(); const boardId = new URLSearchParams(search).get("board_id")?.trim() || ""; if (boardId) { return ; } return ; } function PageFallback() { return (
Loading…
); } function ProtectedApp() { const { ready, user } = useAuth(); if (!ready) { return (
Loading…
); } if (!user) { return ; } if (user.must_change_password) { return ; } return ( }> } /> } /> } /> } /> } /> } /> } /> }> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> }> } /> } /> } /> } /> } /> } /> ); } function App() { return ( } /> } /> ); } export default App;