import type { Metadata } from "next"
import { cookies } from "next/headers"
import { redirect } from "next/navigation"
import { Velkommen } from "@/components/teecup/velkommen"

export const metadata: Metadata = {
  title: "Velkommen – TeeCup",
  description: "Fullfør profilen din for å komme i gang med TeeCup.",
}

// Server-side, IKKE nettleser-fetch -- går derfor IKKE gjennom
// next.config.mjs sin rewrites() (samme mønster som /logg-inn/page.tsx og
// den tidligere app/page.tsx). Peker direkte på API-et.
const API_ORIGIN = process.env.TEECUP_API_ORIGIN || "http://localhost:8000"
// Må matche SESSION_COOKIE_NAME i app/auth.py -- ingen delt konstant på
// tvers av Python/TypeScript, samme mønster som andre API-kontrakt-felt
// som dupliseres bevisst i frontend-koden.
const SESSION_COOKIE_NAME = "teecup_session"

export default async function VelkommenPage() {
  const cookieStore = await cookies()
  const session = cookieStore.get(SESSION_COOKIE_NAME)
  let authenticated = false
  let profileComplete = true
  let firstName: string | null = null
  let displayName = ""
  if (session) {
    try {
      const res = await fetch(`${API_ORIGIN}/auth/me`, {
        headers: { Cookie: `${SESSION_COOKIE_NAME}=${session.value}` },
        cache: "no-store",
      })
      authenticated = res.ok
      if (res.ok) {
        const data = await res.json()
        profileComplete = Boolean(data.profile_complete)
        firstName = data.first_name ?? null
        displayName = data.display_name ?? ""
      }
    } catch {
      // API utilgjengelig -- send til innlogging i stedet for å henge.
      authenticated = false
    }
  }
  // redirect() kaster en egen NEXT_REDIRECT-kontrollflyt-exception som MÅ
  // boble videre til Next.js -- må derfor stå UTENFOR try/catch-en over
  // (reell bug funnet 2026-08-08 i /logg-inn/page.tsx av nøyaktig denne
  // fallgruven, se CHANGELOG.md -- unngås her fra start).
  if (!authenticated) {
    redirect("/logg-inn")
  }
  // Denne siden finnes KUN for innlogget-men-ikke-fullført-profil -- en
  // bruker med komplett profil skal aldri se den (send rett til dashbordet).
  if (profileComplete) {
    redirect("/dashboard")
  }

  return <Velkommen firstName={firstName} displayName={displayName} />
}
