diff --git a/src/app/admin/tournaments/[id]/edit/page.tsx b/src/app/admin/tournaments/[id]/edit/page.tsx index 82461a2..d1f6d63 100644 --- a/src/app/admin/tournaments/[id]/edit/page.tsx +++ b/src/app/admin/tournaments/[id]/edit/page.tsx @@ -12,7 +12,9 @@ interface PageProps { } export default async function EditTournamentPage({ params }: PageProps) { - const tournamentId = parseInt(params.id, 10) + // Next.js 16 requires awaiting params + const { id } = await params + const tournamentId = parseInt(id, 10) if (isNaN(tournamentId)) { notFound() diff --git a/src/app/admin/tournaments/[id]/entry/page.tsx b/src/app/admin/tournaments/[id]/entry/page.tsx index 0a5161b..550c286 100644 --- a/src/app/admin/tournaments/[id]/entry/page.tsx +++ b/src/app/admin/tournaments/[id]/entry/page.tsx @@ -31,23 +31,41 @@ interface GameEntry { score2: number } -export default function TournamentEntryPage({ params }: { params: { id: string } }) { +export default function TournamentEntryPage({ params }: { params: Promise<{ id: string }> }) { const router = useRouter() const [tournament, setTournament] = useState(null) + const [tournamentId, setTournamentId] = useState(null) const [gameText, setGameText] = useState("") const [parsedGames, setParsedGames] = useState([]) const [error, setError] = useState("") const [success, setSuccess] = useState("") const [isLoading, setIsLoading] = useState(false) + // Parse params and validate tournamentId useEffect(() => { - loadTournament() + async function parseParams() { + const { id } = await params + const parsedId = parseInt(id, 10) + if (isNaN(parsedId)) { + router.push('/admin/tournaments') + } else { + setTournamentId(parsedId) + } + } + parseParams() + }, [params, router]) + + // Load tournament when tournamentId is available + useEffect(() => { + if (tournamentId) { + loadTournament() + } // eslint-disable-next-line react-hooks/exhaustive-deps - }, []) + }, [tournamentId]) const loadTournament = async () => { try { - const response = await fetch(`/api/tournaments/${params.id}`) + const response = await fetch(`/api/tournaments/${tournamentId}`) const data = await response.json() if (response.ok) { setTournament(data.tournament) @@ -103,7 +121,7 @@ export default function TournamentEntryPage({ params }: { params: { id: string } setIsLoading(true) try { - const response = await fetch(`/api/tournaments/${params.id}/games/bulk`, { + const response = await fetch(`/api/tournaments/${tournamentId}/games/bulk`, { method: "POST", headers: { "Content-Type": "application/json", @@ -154,7 +172,7 @@ export default function TournamentEntryPage({ params }: { params: { id: string }