From 0fc6c128f438b1860ed989030fbcbc16becbb4cc Mon Sep 17 00:00:00 2001 From: grimsi <9295182+grimsi@users.noreply.github.com> Date: Tue, 3 Jun 2025 17:50:34 +0200 Subject: [PATCH] Use Hilla router config --- gameyfin/src/main/frontend/App.tsx | 6 +- gameyfin/src/main/frontend/routes.tsx | 160 +++++++++++++------------- 2 files changed, 82 insertions(+), 84 deletions(-) diff --git a/gameyfin/src/main/frontend/App.tsx b/gameyfin/src/main/frontend/App.tsx index 26a580d..3eae1d2 100644 --- a/gameyfin/src/main/frontend/App.tsx +++ b/gameyfin/src/main/frontend/App.tsx @@ -2,7 +2,6 @@ import {Outlet, useHref, useNavigate} from 'react-router'; import "./main.css"; import "Frontend/util/custom-validators"; import {HeroUIProvider} from "@heroui/react"; -import {ToastProvider} from "@heroui/toast"; import {ThemeProvider as NextThemesProvider} from "next-themes"; import {themeNames} from "Frontend/theming/themes"; import {AuthProvider} from "Frontend/util/auth"; @@ -12,10 +11,9 @@ import {ErrorHandlingMiddleware} from "Frontend/util/middleware"; import {initializeLibraryState} from "Frontend/state/LibraryState"; import {initializeGameState} from "Frontend/state/GameState"; import {initializeScanState} from "Frontend/state/ScanState"; +import {ToastProvider} from "@heroui/toast"; export default function App() { - const navigate = useNavigate(); - client.middlewares = [ErrorHandlingMiddleware]; initializeLibraryState(); @@ -23,7 +21,7 @@ export default function App() { initializeScanState(); return ( - + diff --git a/gameyfin/src/main/frontend/routes.tsx b/gameyfin/src/main/frontend/routes.tsx index 3bd07ff..bc0cc12 100644 --- a/gameyfin/src/main/frontend/routes.tsx +++ b/gameyfin/src/main/frontend/routes.tsx @@ -1,5 +1,3 @@ -import {protectRoutes} from '@vaadin/hilla-react-auth'; -import {createBrowserRouter, RouteObject} from 'react-router'; import LoginView from "Frontend/views/LoginView"; import MainLayout from "Frontend/views/MainLayout"; import HomeView from "Frontend/views/HomeView"; @@ -24,82 +22,84 @@ import LibraryManagementView from "Frontend/views/LibraryManagementView"; import SearchView from "Frontend/views/SearchView"; import RecentlyAddedView from "Frontend/views/RecentlyAddedView"; import LibraryView from "Frontend/views/LibraryView"; +import {RouterConfigurationBuilder} from "@vaadin/hilla-file-router/runtime.js"; -export const routes = protectRoutes([ - { - element: , - handle: {requiresLogin: false}, - children: [ - { - element: , - handle: {requiresLogin: true}, - children: [ - { - index: true, element: - }, - { - path: '/search', - element: - }, - { - path: 'recently-added', - element: - }, - { - path: 'library/:libraryId', - element: - }, - { - path: 'game/:gameId', - element: - }, - { - path: 'settings', - element: , - children: [ - {path: 'profile', element: }, - {path: 'appearance', element: } - ] - }, - { - path: 'administration', - element: , - children: [ - { - path: 'libraries', - element: - }, - { - path: 'libraries/library/:libraryId', - element: - }, - {path: 'users', element: }, - {path: 'sso', element: }, - {path: 'messages', element: }, - {path: 'plugins', element: }, - {path: 'logs', element: }, - {path: 'system', element: } - ] - } - ] - }, - { - path: '/login', element: , handle: {requiresLogin: false} - }, - { - path: '/setup', element: , handle: {requiresLogin: false} - }, - { - path: '/accept-invitation', element: , handle: {requiresLogin: false} - }, - { - path: '/reset-password', element: , handle: {requiresLogin: false} - }, - { - path: '/confirm-email', element: , handle: {requiresLogin: true} - }, - ], - } -]) as RouteObject[]; - -export default createBrowserRouter(routes); +export const {router, routes} = new RouterConfigurationBuilder() + .withReactRoutes([ + { + element: , + handle: {requiresLogin: false}, + children: [ + { + element: , + handle: {requiresLogin: true}, + children: [ + { + index: true, element: + }, + { + path: 'search', + element: + }, + { + path: 'recently-added', + element: + }, + { + path: 'library/:libraryId', + element: + }, + { + path: 'game/:gameId', + element: + }, + { + path: 'settings', + element: , + children: [ + {path: 'profile', element: }, + {path: 'appearance', element: } + ] + }, + { + path: 'administration', + element: , + children: [ + { + path: 'libraries', + element: + }, + { + path: 'libraries/library/:libraryId', + element: + }, + {path: 'users', element: }, + {path: 'sso', element: }, + {path: 'messages', element: }, + {path: 'plugins', element: }, + {path: 'logs', element: }, + {path: 'system', element: } + ] + } + ] + }, + { + path: 'login', element: , handle: {requiresLogin: false} + }, + { + path: 'setup', element: , handle: {requiresLogin: false} + }, + { + path: 'accept-invitation', element: , handle: {requiresLogin: false} + }, + { + path: 'reset-password', element: , handle: {requiresLogin: false} + }, + { + path: 'confirm-email', element: , handle: {requiresLogin: true} + }, + ] + } + ]) + .protect("/login") + .build();