import type { Metadata } from "next"
import { PublicTournament } from "@/components/public-tournament"

// Server-side -- IKKE nettleser-fetch, går derfor IKKE gjennom
// next.config.mjs sin rewrites() (kun for trafikk inn til Next.js-serveren
// fra en klient). Peker direkte på API-et.
const API_ORIGIN = process.env.TEECUP_API_ORIGIN || "http://localhost:8000"

type PublicTournamentInfo = {
  name: string
  organization_name: string
  description: string | null
  hero_image_url: string | null
}

export async function generateMetadata({
  params,
}: {
  params: Promise<{ id: string }>
}): Promise<Metadata> {
  const { id } = await params
  try {
    const res = await fetch(`${API_ORIGIN}/public/tournaments/${id}`, { cache: "no-store" })
    if (!res.ok) {
      return { title: "Turnering | TeeCup" }
    }
    const data: PublicTournamentInfo = await res.json()
    const title = `${data.name} | ${data.organization_name}`
    const description =
      data.description?.trim() || `${data.name} arrangeres av ${data.organization_name} på TeeCup.`
    const images = data.hero_image_url ? [{ url: data.hero_image_url }] : undefined
    return {
      title,
      description,
      openGraph: { title, description, siteName: "TeeCup", type: "website", images },
      twitter: { card: images ? "summary_large_image" : "summary", title, description, images },
    }
  } catch {
    // Feil her skal ALDRI hindre selve siden i å laste -- kun forringe
    // delingsforhåndsvisningen, som fortsatt får en trygg standardtittel.
    return { title: "TeeCup" }
  }
}

export default async function PublicTournamentPage({
  params,
  searchParams,
}: {
  params: Promise<{ id: string }>
  searchParams: Promise<{ code?: string }>
}) {
  const { id } = await params
  const { code } = await searchParams
  return <PublicTournament tournamentId={id} code={code} />
}
