Use Hilla router config

This commit is contained in:
grimsi
2025-06-03 17:50:34 +02:00
parent 7fa2c029af
commit 0fc6c128f4
2 changed files with 82 additions and 84 deletions
+2 -4
View File
@@ -2,7 +2,6 @@ import {Outlet, useHref, useNavigate} from 'react-router';
import "./main.css"; import "./main.css";
import "Frontend/util/custom-validators"; import "Frontend/util/custom-validators";
import {HeroUIProvider} from "@heroui/react"; import {HeroUIProvider} from "@heroui/react";
import {ToastProvider} from "@heroui/toast";
import {ThemeProvider as NextThemesProvider} from "next-themes"; import {ThemeProvider as NextThemesProvider} from "next-themes";
import {themeNames} from "Frontend/theming/themes"; import {themeNames} from "Frontend/theming/themes";
import {AuthProvider} from "Frontend/util/auth"; import {AuthProvider} from "Frontend/util/auth";
@@ -12,10 +11,9 @@ import {ErrorHandlingMiddleware} from "Frontend/util/middleware";
import {initializeLibraryState} from "Frontend/state/LibraryState"; import {initializeLibraryState} from "Frontend/state/LibraryState";
import {initializeGameState} from "Frontend/state/GameState"; import {initializeGameState} from "Frontend/state/GameState";
import {initializeScanState} from "Frontend/state/ScanState"; import {initializeScanState} from "Frontend/state/ScanState";
import {ToastProvider} from "@heroui/toast";
export default function App() { export default function App() {
const navigate = useNavigate();
client.middlewares = [ErrorHandlingMiddleware]; client.middlewares = [ErrorHandlingMiddleware];
initializeLibraryState(); initializeLibraryState();
@@ -23,7 +21,7 @@ export default function App() {
initializeScanState(); initializeScanState();
return ( return (
<HeroUIProvider className="size-full" navigate={navigate} useHref={useHref}> <HeroUIProvider className="size-full" navigate={useNavigate} useHref={useHref}>
<NextThemesProvider attribute="class" themes={themeNames()} defaultTheme="gameyfin-violet-dark"> <NextThemesProvider attribute="class" themes={themeNames()} defaultTheme="gameyfin-violet-dark">
<AuthProvider> <AuthProvider>
<IconContext.Provider value={{size: 20}}> <IconContext.Provider value={{size: 20}}>
+13 -13
View File
@@ -1,5 +1,3 @@
import {protectRoutes} from '@vaadin/hilla-react-auth';
import {createBrowserRouter, RouteObject} from 'react-router';
import LoginView from "Frontend/views/LoginView"; import LoginView from "Frontend/views/LoginView";
import MainLayout from "Frontend/views/MainLayout"; import MainLayout from "Frontend/views/MainLayout";
import HomeView from "Frontend/views/HomeView"; import HomeView from "Frontend/views/HomeView";
@@ -24,8 +22,10 @@ import LibraryManagementView from "Frontend/views/LibraryManagementView";
import SearchView from "Frontend/views/SearchView"; import SearchView from "Frontend/views/SearchView";
import RecentlyAddedView from "Frontend/views/RecentlyAddedView"; import RecentlyAddedView from "Frontend/views/RecentlyAddedView";
import LibraryView from "Frontend/views/LibraryView"; import LibraryView from "Frontend/views/LibraryView";
import {RouterConfigurationBuilder} from "@vaadin/hilla-file-router/runtime.js";
export const routes = protectRoutes([ export const {router, routes} = new RouterConfigurationBuilder()
.withReactRoutes([
{ {
element: <App/>, element: <App/>,
handle: {requiresLogin: false}, handle: {requiresLogin: false},
@@ -38,7 +38,7 @@ export const routes = protectRoutes([
index: true, element: <HomeView/> index: true, element: <HomeView/>
}, },
{ {
path: '/search', path: 'search',
element: <SearchView/> element: <SearchView/>
}, },
{ {
@@ -84,22 +84,22 @@ export const routes = protectRoutes([
] ]
}, },
{ {
path: '/login', element: <LoginView/>, handle: {requiresLogin: false} path: 'login', element: <LoginView/>, handle: {requiresLogin: false}
}, },
{ {
path: '/setup', element: <SetupView/>, handle: {requiresLogin: false} path: 'setup', element: <SetupView/>, handle: {requiresLogin: false}
}, },
{ {
path: '/accept-invitation', element: <InvitationRegistrationView/>, handle: {requiresLogin: false} path: 'accept-invitation', element: <InvitationRegistrationView/>, handle: {requiresLogin: false}
}, },
{ {
path: '/reset-password', element: <PasswordResetView/>, handle: {requiresLogin: false} path: 'reset-password', element: <PasswordResetView/>, handle: {requiresLogin: false}
}, },
{ {
path: '/confirm-email', element: <EmailConfirmationView/>, handle: {requiresLogin: true} path: 'confirm-email', element: <EmailConfirmationView/>, handle: {requiresLogin: true}
}, },
], ]
} }
]) as RouteObject[]; ])
.protect("/login")
export default createBrowserRouter(routes); .build();