Update routing and add error boundary

This commit is contained in:
2025-02-25 22:50:05 -05:00
parent bc7ffcd5bf
commit 29724da42f
3 changed files with 129 additions and 126 deletions

View File

@@ -1,4 +1,4 @@
import { BrowserRouter, Route, Routes } from "react-router"; import { createBrowserRouter, RouterProvider } from "react-router";
import NavBar from "./components/nav/NavBar"; import NavBar from "./components/nav/NavBar";
import AdminPage from "./pages/protected/AdminPage"; import AdminPage from "./pages/protected/AdminPage";
import GamePage from "./pages/protected/GamePage"; import GamePage from "./pages/protected/GamePage";
@@ -13,9 +13,16 @@ import HomePage from "./pages/public/HomePage";
import LoginPage from "./pages/public/LoginPage"; import LoginPage from "./pages/public/LoginPage";
import SignupPage from "./pages/public/SignupPage"; import SignupPage from "./pages/public/SignupPage";
import { ProtectedRoute } from "./providers/AuthProvider"; import { ProtectedRoute } from "./providers/AuthProvider";
import ErrorBoundary from "./providers/ErrorBoundary";
const publicRoutes: { path: string; element: React.ReactElement; }[] = [ const routes = createBrowserRouter([
{
element: <NavBar/>,
children: [
{
errorElement: <ErrorBoundary/>,
children: [
{ {
path: "/", path: "/",
element: <HomePage/> element: <HomePage/>
@@ -27,10 +34,10 @@ const publicRoutes: { path: string; element: React.ReactElement; }[] = [
{ {
path: "/signup", path: "/signup",
element: <SignupPage/> element: <SignupPage/>
} },
]; {
element: <ProtectedRoute/>,
const protectedRoutes: { path: string; element: React.ReactElement; }[] = [ children: [
{ {
path: "/logout", path: "/logout",
element: <LogoutPage/> element: <LogoutPage/>
@@ -71,40 +78,17 @@ const protectedRoutes: { path: string; element: React.ReactElement; }[] = [
path: "/raidGroup/:raidGroupId/raidInstance/:raidInstanceId", path: "/raidGroup/:raidGroupId/raidInstance/:raidInstanceId",
element: <RaidInstancePage/> element: <RaidInstancePage/>
} }
]; ]
}
]
}
]
}
]);
export default function App(){ export default function App(){
return ( return (
<BrowserRouter> <RouterProvider router={routes}/>
{/* Nav Bar */}
<NavBar/>
{/* Routing */}
<Routes>
{/* Public Routes */}
{
publicRoutes.map((route) => (
<Route
key={route.path}
path={route.path}
element={route.element}
/>
))
}
{/* Protected Routes */}
<Route element={<ProtectedRoute/>}>
{
protectedRoutes.map((route) => (
<Route
key={route.path}
path={route.path}
element={route.element}
/>
))
}
</Route>
</Routes>
</BrowserRouter>
); );
} }

View File

@@ -1,6 +1,6 @@
import clsx from "clsx"; import clsx from "clsx";
import { BsList } from "react-icons/bs"; import { BsList } from "react-icons/bs";
import { Link } from "react-router"; import { Link, Outlet } from "react-router";
import DarkModeToggle from "./DarkModeToggle"; import DarkModeToggle from "./DarkModeToggle";
import ProtectedNavLinks from "./ProtectedNavLinks"; import ProtectedNavLinks from "./ProtectedNavLinks";
import PublicNavLinks from "./PublicNavLinks"; import PublicNavLinks from "./PublicNavLinks";
@@ -9,6 +9,7 @@ import raidBuilderIcon from "/raidBuilderIcon.svg";
export default function NavBar(){ export default function NavBar(){
return ( return (
<>
<nav <nav
className={clsx( className={clsx(
"border-b-2 z-40", "border-b-2 z-40",
@@ -52,5 +53,7 @@ export default function NavBar(){
</div> </div>
</div> </div>
</nav> </nav>
<Outlet/>
</>
); );
} }

View File

@@ -0,0 +1,16 @@
import { useRouteError } from "react-router";
export default function ErrorBoundary(){
const error = useRouteError();
console.log("error");
console.log(error);
return (
<div>
Error Boundary
</div>
);
}