import type { Metadata } from "next"; import config from "@payload-config"; import { getPayload } from "payload"; import { headers as nextHeaders } from "next/headers"; import Link from "next/link"; import { notFound, redirect } from "next/navigation"; import { ArrowLeftIcon, MicIcon } from "lucide-react"; import { VoiceoverRecorder } from "@/components/frontend/voiceover/VoiceoverRecorder"; import { getScriptForUser } from "@/lib/voiceover"; import { isPayloadUser } from "@/utils/access-control/isPayloadUser"; export const metadata: Metadata = { title: "Record voiceover — Polaris Task Force", description: "Read a Polaris Task Force voiceover script and submit a recording.", }; export default async function VoiceoverScriptPage({ params, }: { readonly params: Promise<{ id: string }>; }) { const { id } = await params; const scriptId = Number(id); if (!Number.isInteger(scriptId) || scriptId < 1) notFound(); const headers = await nextHeaders(); const payloadConfig = await config; const payload = await getPayload({ config: payloadConfig }); const { user } = await payload.auth({ headers, canSetHeaders: false }); if (!isPayloadUser(user)) { redirect(`/login?returnTo=${encodeURIComponent(`/voiceover/${id}`)}`); } const script = await getScriptForUser(payload, user, scriptId); if (!script) notFound(); return (
Voiceover scripts

{script.title}

Read the script at your pace, then submit one clear take for review.

); }