import { lazy, Suspense } from "react"; import { Routes, Route, Navigate } from "react-router-dom"; import { useAtom } from "jotai"; import { Backdrop } from "@mui/material"; import Loading from "@src/components/Loading"; import ProjectSourceFirebase from "@src/sources/ProjectSourceFirebase"; import MembersSourceFirebase from "@src/sources/MembersSourceFirebase"; import ConfirmDialog from "@src/components/ConfirmDialog"; import RowyRunModal from "@src/components/RowyRunModal"; import NotFound from "@src/pages/NotFoundPage"; import RequireAuth from "@src/layouts/RequireAuth"; import AdminRoute from "@src/layouts/AdminRoute"; import { projectScope, currentUserAtom, userRolesAtom, altPressAtom, } from "@src/atoms/projectScope"; import { ROUTES } from "@src/constants/routes"; import useKeyPressWithAtom from "@src/hooks/useKeyPressWithAtom"; import TableGroupRedirectPage from "./pages/TableGroupRedirectPage"; import SignOutPage from "@src/pages/Auth/SignOutPage"; // prettier-ignore const AuthPage = lazy(() => import("@src/pages/Auth/AuthPage" /* webpackChunkName: "AuthPage" */)); // prettier-ignore const SignUpPage = lazy(() => import("@src/pages/Auth/SignUpPage" /* webpackChunkName: "SignUpPage" */)); // prettier-ignore const JwtAuthPage = lazy(() => import("@src/pages/Auth/JwtAuthPage" /* webpackChunkName: "JwtAuthPage" */)); // prettier-ignore const ImpersonatorAuthPage = lazy(() => import("@src/pages/Auth/ImpersonatorAuthPage" /* webpackChunkName: "ImpersonatorAuthPage" */)); // prettier-ignore const SetupPage = lazy(() => import("@src/pages/SetupPage" /* webpackChunkName: "SetupPage" */)); // prettier-ignore const Navigation = lazy(() => import("@src/layouts/Navigation" /* webpackChunkName: "Navigation" */)); // prettier-ignore const TableSettingsDialog = lazy(() => import("@src/components/TableSettingsDialog" /* webpackChunkName: "TableSettingsDialog" */)); // prettier-ignore const TablesPage = lazy(() => import("@src/pages/TablesPage" /* webpackChunkName: "TablesPage" */)); // prettier-ignore const ProvidedTablePage = lazy(() => import("@src/pages/Table/ProvidedTablePage" /* webpackChunkName: "ProvidedTablePage" */)); // prettier-ignore const ProvidedSubTablePage = lazy(() => import("@src/pages/Table/ProvidedSubTablePage" /* webpackChunkName: "ProvidedSubTablePage" */)); // prettier-ignore const TableTutorialPage = lazy(() => import("@src/pages/Table/TableTutorialPage" /* webpackChunkName: "TableTutorialPage" */)); // prettier-ignore const FunctionPage = lazy(() => import("@src/pages/FunctionPage" /* webpackChunkName: "FunctionPage" */)); // prettier-ignore const UserSettingsPage = lazy(() => import("@src/pages/Settings/UserSettingsPage" /* webpackChunkName: "UserSettingsPage" */)); // prettier-ignore const ProjectSettingsPage = lazy(() => import("@src/pages/Settings/ProjectSettingsPage" /* webpackChunkName: "ProjectSettingsPage" */)); // prettier-ignore const MembersPage = lazy(() => import("@src/pages/Settings/MembersPage" /* webpackChunkName: "MembersPage" */)); // prettier-ignore const DebugPage = lazy(() => import("@src/pages/Settings/DebugPage" /* webpackChunkName: "DebugPage" */)); export default function App() { const [currentUser] = useAtom(currentUserAtom, projectScope); const [userRoles] = useAtom(userRolesAtom, projectScope); useKeyPressWithAtom("Alt", altPressAtom, projectScope); return ( }> {userRoles.includes("ADMIN") && } {currentUser === undefined ? ( ) : ( } /> } /> } /> } /> } /> } /> } /> } > } /> } /> } /> }> } /> } > } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> )} ); }