import { fetchEndpoint, getRequestOrigin } from "@/server/markattyApi";
import { buildMetadata } from "@/server/seo";
import { getServerHomeData } from "@/features/home/getServerHomeData";
import HomeView from "@/features/home/HomeView";

/**
 * Home route (/) — Server Component.
 *
 * Fetches store settings server-side to emit site-level SEO metadata +
 * Organization JSON-LD in the initial HTML. The layout-aware home content is the
 * client <HomeView>.
 */

async function getSettings() {
  return fetchEndpoint("catalog/settings");
}

export async function generateMetadata() {
  const s = await getSettings();
  const name = s?.company_details?.company_name || "Store";
  const origin = await getRequestOrigin();
  return buildMetadata({
    title: name,
    description: `Shop the latest products and offers at ${name}.`,
    image: s?.logo || undefined,
    canonical: origin || undefined,
    type: "website",
  });
}

export default async function Page() {
  const [s, homeData] = await Promise.all([getSettings(), getServerHomeData()]);
  const origin = await getRequestOrigin();
  const name = s?.company_details?.company_name || "Store";

  const jsonLd = {
    "@context": "https://schema.org",
    "@type": "Organization",
    name,
    url: origin || undefined,
    logo: s?.logo || undefined,
  };

  return (
    <>
      <script
        type="application/ld+json"
        dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}
      />
      <HomeView initialHomeData={homeData} />
    </>
  );
}
