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 GuideCoolRoofView from "./view-client";

const WP_URI = "/guide-cool-roof";
const PAGE_URL = `${SITE_URL}/guide-cool-roof`;

// Metas historiques, conservées en fallback si WP est indisponible.
const FALLBACK_META = {
  title: "Livre blanc cool roof : guide gratuit Covalba",
  description:
    "Téléchargez le livre blanc Covalba pour comprendre le cool roof, réduire la chaleur dans vos locaux et estimer les économies possibles.",
  canonical: PAGE_URL,
};

const fallbackJsonLd = {
  "@context": "https://schema.org",
  "@type": "WebPage",
  name: "Livre blanc cool roof Covalba",
  description:
    "Guide gratuit pour comprendre le cool roof et ses bénéfices pour les bâtiments professionnels.",
  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="guide-cool-roof-jsonld" data={fallbackJsonLd} />
        <GuideCoolRoofView sections={null} />
      </>
    );
  }

  return (
    <>
      <JsonLd
        id="guide-cool-roof-breadcrumb-jsonld"
        data={breadcrumbJsonLd([
          { name: "Accueil", url: `${SITE_URL}/` },
          { name: "Livre blanc cool roof", url: PAGE_URL },
        ])}
      />
      <GuideCoolRoofView sections={page.sections?.sections ?? null} />
    </>
  );
}
