"use client"

// i18n (ADR-094) -- monteres én gang i rot-layouten. Selve locale-
// oppløsningen på serveren (i18n/request.ts) leser KUN en cookie, uten
// noen fetch-avhengighet (rask, synkron). Denne komponenten er stedet
// der brukerens preferred_locale (allerede på backend siden ADR-015,
// aldri lest av frontend før nå) faktisk får virkning: FØRSTE gang en
// innlogget bruker besøker appen uten at cookien er satt ennå, hentes
// /auth/me og cookien settes deretter -- kun én gang, ikke ved hvert
// besøk (cookien vinner etter det, selv om brukeren senere endrer
// preferred_locale et annet sted, inntil de bruker språkbryteren igjen).
import { useEffect } from "react"
import { useRouter } from "next/navigation"
import { DEFAULT_LOCALE, isLocale, LOCALE_COOKIE } from "@/lib/locale"

function hasLocaleCookie(): boolean {
  return document.cookie.split("; ").some((c) => c.startsWith(`${LOCALE_COOKIE}=`))
}

export function LocaleBootstrap() {
  const router = useRouter()

  useEffect(() => {
    if (hasLocaleCookie()) return
    let cancelled = false
    fetch("/auth/me", { credentials: "include" })
      .then((res) => (res.ok ? res.json() : null))
      .then((me: { preferred_locale?: string } | null) => {
        if (cancelled || !me) return
        const locale = isLocale(me.preferred_locale) ? me.preferred_locale : DEFAULT_LOCALE
        if (locale === DEFAULT_LOCALE) return // allerede det serveren rendret med
        document.cookie = `${LOCALE_COOKIE}=${locale}; path=/; max-age=31536000; SameSite=Lax`
        router.refresh()
      })
      .catch(() => {
        // Stille -- utlogget/nettverksfeil betyr bare at nb-standarden
        // (allerede rendret) beholdes.
      })
    return () => {
      cancelled = true
    }
  }, [router])

  return null
}
