Frontend for individuelle turneringer er ferdig håndkodet og grundig browserverifisert — inkludert ekte innlogging, håndregnet HCP-kryssjekk (stemte eksakt), databasebekreftet slagregistrering, og full opprett-fra-bunnen-flyt. Underveis fant og fikset jeg tre reelle feil: Et backend-hull som ville rammet alle brukere: list_tournaments (brukt av dashbordet) manglet de to nye kolonnene i sin egen SELECT-spørring — ga en rå 500 på hele turneringslisten, ikke bare individuelle turneringer. Et layout-problem der turneringsnavnet ble avkuttet på smal mobilskjerm. Manglende form-språk i scorekortet (kun farge, ikke sirkel/firkant som resten av appen bruker). Alle tre er rettet og re-verifisert. Utrullingsplan (denne gangen berører det både backend og frontend): Redeploy teecup_api — for list_tournaments-fiksen (ingen migrasjon, ren kodefiks). Redeploy teecup_frontend — den nye individuell-turnering-skjermen + dashbordets format-valg. Verifiser: begge containere booter rent, /health//dashboard fortsatt 200, teeoff.no upåvirket.
28 lines
1,013 B
TypeScript
28 lines
1,013 B
TypeScript
import { TournamentRouter } from "@/components/tournament-router"
|
|
|
|
export default async function TournamentPage({
|
|
params,
|
|
searchParams,
|
|
}: {
|
|
params: Promise<{ id: string }>
|
|
searchParams: Promise<{ org?: string; name?: string }>
|
|
}) {
|
|
const { id } = await params
|
|
const { org, name } = await searchParams
|
|
const tournamentName = name?.trim() || "Turnering"
|
|
|
|
// org-parameteren følger alltid med fra dashbordets TournamentCard-lenke
|
|
// (se components/tournament-card.tsx) -- API-et krever organization_id på
|
|
// alle team-/roster-endepunkter (RLS, se ADR-001/003).
|
|
if (!org) {
|
|
return (
|
|
<main className="flex min-h-[100dvh] flex-col items-center justify-center gap-2 bg-background px-5 text-center">
|
|
<p className="text-sm font-medium text-destructive">
|
|
Mangler organisasjon i lenken. Gå tilbake til dashbordet og prøv igjen.
|
|
</p>
|
|
</main>
|
|
)
|
|
}
|
|
|
|
return <TournamentRouter organizationId={org} tournamentId={id} tournamentName={tournamentName} />
|
|
}
|