"use client";

import { AumModeHeaderBadge } from "@/app/customer/_components/aum-mode-header-badge";
import { DefaultLayoutHeaderBadge } from "@/app/customer/_components/default-layout-header-badge";
import { ReportBankModeHeaderBadge } from "@/app/customer/_components/report-bank-mode-header-badge";
import { useHeaderPreferences } from "@/app/customer/_lib/use-header-preferences";
import { CUSTOMER_ROUTE_KEYS } from "@/config/customer-route-keys";
import { sessionAllowsRouteKeys } from "@/app/customer/_lib/customer-route-guard";
import { canAccessSettingsSection } from "@/app/customer/[tenant]/settings/_lib/settings-section-permissions";

type CustomerHeaderPreferenceBadgesProps = {
  tenant: string;
  allowedRoutes?: readonly string[];
};

/**
 * Batches AUM / report-bank / default-layout preference fetches for the shell header.
 */
export function CustomerHeaderPreferenceBadges({
  tenant,
  allowedRoutes = [],
}: CustomerHeaderPreferenceBadgesProps) {
  const sections = {
    aum: canAccessSettingsSection("general", allowedRoutes),
    reportBanks: canAccessSettingsSection("report-banks", allowedRoutes),
    defaultLayout: sessionAllowsRouteKeys(allowedRoutes, [CUSTOMER_ROUTE_KEYS.userLayout]),
  };

  const prefs = useHeaderPreferences(tenant, sections);

  return (
    <>
      <AumModeHeaderBadge
        tenant={tenant}
        allowedRoutes={allowedRoutes}
        mode={prefs.aumMode}
        loading={prefs.loading && sections.aum}
      />
      <ReportBankModeHeaderBadge
        tenant={tenant}
        allowedRoutes={allowedRoutes}
        mode={prefs.reportBankMode}
        loading={prefs.loading && sections.reportBanks}
      />
      <DefaultLayoutHeaderBadge
        tenant={tenant}
        allowedRoutes={allowedRoutes}
        layout={prefs.defaultLayout}
        loading={prefs.loading && sections.defaultLayout}
      />
    </>
  );
}
