import type { Metadata } from "next";

import JsonLd from "@/components/seo/JsonLd";
import { buildMetadata, SITE_URL } from "@/lib/seo";
import { getWpPage } from "@/lib/wp/queries/page";
import { breadcrumbJsonLd, wpSeoToMetadata } from "@/lib/wp/seoToMetadata";
import type { WpPage } from "@/lib/wp/types";
import ReferencesView from "./view-client";

const WP_URI = "/references";
const PAGE_URL = `${SITE_URL}/references`;

// Metas historiques, conservées en fallback si WP est indisponible.
const FALLBACK_META = {
  title: "Références cool roof : projets Covalba",
  description:
    "Découvrez les références Covalba : projets cool roof en tertiaire, distribution, logistique, industrie et territoires.",
  canonical: PAGE_URL,
};

const fallbackJsonLd = {
  "@context": "https://schema.org",
  "@type": "CollectionPage",
  name: "Références Covalba",
  description: "Projets cool roof réalisés avec les solutions Covalba.",
  url: PAGE_URL,
};

async function fetchPage(): Promise<WpPage | null> {
  try {
    const page = await getWpPage(WP_URI);
    if (!page) console.warn(`[wp] page ${WP_URI} introuvable, fallback vue codée.`);
    return page;
  } catch (error) {
    console.error(`[wp] page ${WP_URI} indisponible, fallback vue codée :`, error);
    return null;
  }
}

export async function generateMetadata(): Promise<Metadata> {
  const page = await fetchPage();
  if (!page) return buildMetadata(FALLBACK_META);
  return wpSeoToMetadata(page.seo, FALLBACK_META);
}

export default async function Page() {
  const page = await fetchPage();

  if (!page) {
    return (
      <>
        <JsonLd id="references-jsonld" data={fallbackJsonLd} />
        <ReferencesView sections={null} />
      </>
    );
  }

  return (
    <>
      <JsonLd
        id="references-breadcrumb-jsonld"
        data={breadcrumbJsonLd([
          { name: "Accueil", url: `${SITE_URL}/` },
          { name: "Références", url: PAGE_URL },
        ])}
      />
      <ReferencesView sections={page.sections?.sections ?? null} />
    </>
  );
}
