import type { Metadata } from "next";

import Index from "@/views/Index";
import Navbar from "@/components/Navbar";
import Footer from "@/components/Footer";
import StickyMobileCTA from "@/components/StickyMobileCTA";
import JsonLd from "@/components/seo/JsonLd";
import { BlockRenderer } from "@/components/blocks/BlockRenderer";
import { buildMetadata, SITE_URL } from "@/lib/seo";
import { getWpPage } from "@/lib/wp/queries/page";
import { getLatestPosts } from "@/lib/wp/queries/post";
import { toBlogCard } from "@/lib/blog/content";
import { breadcrumbJsonLd, wpSeoToMetadata } from "@/lib/wp/seoToMetadata";
import type { WpPage } from "@/lib/wp/types";
import type { LatestPostCard } from "@/components/blocks/latestPostsContext";

async function fetchLatestPosts(): Promise<LatestPostCard[]> {
  try {
    return (await getLatestPosts(3)).map((p) => {
      const card = toBlogCard(p);
      return {
        title: card.title,
        category: card.category,
        image: card.image?.sourceUrl ?? "",
        href: card.href,
      };
    });
  } catch (error) {
    console.error("[wp] derniers articles indisponibles :", error);
    return [];
  }
}

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

// Metas historiques (reprises du layout), conservées en fallback si WP est indisponible.
const FALLBACK_META = {
  title: "Cool roof : expert fabricant français depuis 2018 | Covalba",
  description:
    "Covalba, pionnier français du cool roof depuis 2018. Revêtements réfléchissants haute performance, jusqu'à -10°C en intérieur, déployés sur +2M m² en France.",
  canonical: 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, latestPosts] = await Promise.all([fetchPage(), fetchLatestPosts()]);

  if (!page) return <Index />;

  return (
    <div className="min-h-screen bg-background">
      <a href="#contact" className="skip-link">
        Aller au formulaire de contact
      </a>
      <JsonLd
        id="home-breadcrumb-jsonld"
        data={breadcrumbJsonLd([{ name: "Accueil", url: PAGE_URL }])}
      />
      <Navbar />
      <main>
        <BlockRenderer sections={page.sections?.sections} latestPosts={latestPosts} locale="fr" />
      </main>
      <Footer />
      <StickyMobileCTA />
    </div>
  );
}
