import { CustomerPageShell } from "@/app/customer/_components/customer-page-shell";
import {
  canManageSection,
  pageKeysForSection,
} from "@/app/customer/_lib/admin/admin-section-permissions";
import { loadAdminPageContext } from "@/app/customer/_lib/admin/load-admin-page-context";
import { fetchPortalParentBanks } from "@/app/customer/_lib/admin/parent-banks-server-api";

import { ParentBanksPageClient } from "./_components/parent-banks-page-client";

type PageProps = {
  params: Promise<{ tenant: string }>;
  searchParams: Promise<{ q?: string }>;
};

export default async function ParentBanksAdminPage({
  params,
  searchParams,
}: Readonly<PageProps>) {
  const { tenant } = await params;
  const { q } = await searchParams;
  const initialQ = typeof q === "string" ? q.trim() : "";

  const ctx = await loadAdminPageContext(tenant, {
    page: pageKeysForSection("parentBanks"),
    label: "Parent Banks",
  });
  if (ctx.denied) {
    return ctx.deniedView;
  }

  const result = await fetchPortalParentBanks(tenant);
  const canManage = canManageSection("parentBanks", ctx.capabilities);

  return (
    <CustomerPageShell>
      <ParentBanksPageClient
        tenant={tenant}
        initialItems={result.items}
        initialStatusOptions={result.statusOptions}
        initialErrorMessage={result.errorMessage}
        catalogAvailable={result.available}
        canManage={canManage}
        capabilities={ctx.capabilities}
        initialQ={initialQ}
      />
    </CustomerPageShell>
  );
}
