Opretter en ny, rigtig rute ("Fælles Vinindkøb (test)", id 9,
test.vinindkoeb.dk, afsender "Test - Fælles Vinindkøb"
<test@vinindkoeb.dk>) direkte i databasen, så brugeren kan teste hele
flowet — inkl. rigtig mail-udsendelse via Postal — uden at røre de
308 rigtige deltagere. Mere robust end de midlertidige isolerede
sandboxes brugt til verifikation indtil nu.
Med to ruter under samme organisation kan admin-UI'et ikke længere
antage "der er kun én rute": RouteContext.tsx (samme mønster som
AuthContext) henter ruterne én gang efter login og holder det valgte
rute-id (persisteret i localStorage). Layout.tsx får en rute-vælger i
navbaren (kun vist når der er mere end én rute). ParticipantsPage,
RoundsPage og TemplatesPage havde hver deres egen "GET /routes, brug
routes[0]"-logik — omskrevet til at læse fra useRoute() i stedet, så
de automatisk genindlæser når man skifter rute.
DNS-post og reverse proxy-indgang for test.vinindkoeb.dk skal
stadig sættes op manuelt uden for denne kodebase, samme mønster som
vinindkoeb.dk/admin.vinindkoeb.dk.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
45 lines
1.4 KiB
TypeScript
45 lines
1.4 KiB
TypeScript
import { Navigate, Route, BrowserRouter, Routes } from 'react-router-dom'
|
|
import { AuthProvider, useAuth } from './AuthContext'
|
|
import { Layout } from './Layout'
|
|
import { LoginPage } from './pages/LoginPage'
|
|
import { OrdersPage } from './pages/OrdersPage'
|
|
import { ParticipantsPage } from './pages/ParticipantsPage'
|
|
import { RoundDetailPage } from './pages/RoundDetailPage'
|
|
import { RoundsPage } from './pages/RoundsPage'
|
|
import { RouteProvider } from './RouteContext'
|
|
import { TemplatesPage } from './pages/TemplatesPage'
|
|
import './App.css'
|
|
|
|
function AppRoutes() {
|
|
const { currentUser, loading } = useAuth()
|
|
|
|
if (loading) return <p>Indlæser...</p>
|
|
if (!currentUser) return <LoginPage />
|
|
|
|
return (
|
|
<RouteProvider>
|
|
<Routes>
|
|
<Route element={<Layout />}>
|
|
<Route path="/deltagere" element={<ParticipantsPage />} />
|
|
<Route path="/runder" element={<RoundsPage />} />
|
|
<Route path="/runder/:roundId" element={<RoundDetailPage />} />
|
|
<Route path="/runder/:roundId/ordrer" element={<OrdersPage />} />
|
|
<Route path="/skabeloner" element={<TemplatesPage />} />
|
|
<Route path="*" element={<Navigate to="/deltagere" replace />} />
|
|
</Route>
|
|
</Routes>
|
|
</RouteProvider>
|
|
)
|
|
}
|
|
|
|
function App() {
|
|
return (
|
|
<BrowserRouter>
|
|
<AuthProvider>
|
|
<AppRoutes />
|
|
</AuthProvider>
|
|
</BrowserRouter>
|
|
)
|
|
}
|
|
|
|
export default App
|