import { DashboardHeader } from "@/components/dashboard-header";
import { Checklist } from "@/components/flight-check/checklist";
import {
  Breadcrumb,
  BreadcrumbItem,
  BreadcrumbList,
  BreadcrumbPage,
} from "@/components/ui/breadcrumb";
import { env } from "@/env";
import { getSitesForActiveOrg } from "@/lib/sites/access";
import { getActiveSiteId } from "@/lib/sites/active-site";
import {
  getLatestAuditAction,
  getOrgAuditOverviewAction,
} from "@/lib/spec/audit/actions";
import { CHECKLIST } from "@/lib/spec/checklist-data";

export default async function Page() {
  // Resolve the active site server-side (cookie validated against the org's
  // sites), then load the initial latest audit + cross-site overview. Mutations
  // (running an audit) only fire on a user click — never on mount.
  const sites = await getSitesForActiveOrg();
  const siteId = await getActiveSiteId(sites.map((s) => s.id));
  const activeSite = sites.find((s) => s.id === siteId);
  const siteName = activeSite?.name ?? "";
  // `Site.plan` carries the site's URL (see getSitesForOrg). Empty when unset.
  const siteUrl = activeSite?.plan ?? "";

  const [initialAudit, overview] = await Promise.all([
    siteId ? getLatestAuditAction(siteId) : Promise.resolve(null),
    getOrgAuditOverviewAction(),
  ]);

  const appUrl = env.BETTER_AUTH_URL ?? "https://dash.seoinsight.app";

  return (
    <>
      <DashboardHeader>
        <Breadcrumb>
          <BreadcrumbList>
            <BreadcrumbItem>
              <BreadcrumbPage>Checklist</BreadcrumbPage>
            </BreadcrumbItem>
          </BreadcrumbList>
        </Breadcrumb>
      </DashboardHeader>
      {/* key={siteId} : le state client (audit, checklist manuelle, filtres)
          est par-site — remonter à chaque changement de site actif évite
          d'afficher l'audit du site précédent (useState(initialAudit) ne se
          réinitialise pas seul sur re-render RSC). */}
      <Checklist
        key={siteId}
        categories={CHECKLIST}
        siteId={siteId}
        siteName={siteName}
        siteUrl={siteUrl}
        appUrl={appUrl}
        initialAudit={initialAudit}
        overview={overview}
      />
    </>
  );
}
