import { CustomerPageShell } from "@/app/customer/_components/customer-page-shell";
import { fetchPortalLinkBankCustomers } from "@/app/customer/_lib/admin/link-bank-accounts-server-api";
import {
  EMPTY_CUSTOMER_PORTAL_CAPABILITIES,
  getCustomerSessionContext,
} from "@/lib/frontend-auth/server";

import { LinkBankAccountsPageClient } from "./_components/link-bank-accounts-page-client";

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

export default async function LinkBankAccountsAdminPage({ params }: Readonly<PageProps>) {
  const { tenant } = await params;
  const [result, session] = await Promise.all([
    fetchPortalLinkBankCustomers(tenant),
    getCustomerSessionContext(tenant),
  ]);

  const capabilities = session.permissions.capabilities ?? EMPTY_CUSTOMER_PORTAL_CAPABILITIES;
  const canManage =
    capabilities.admin_link_bank_manage ||
    session.permissions.routes.includes("access/link_bank_accounts_manage");

  return (
    <CustomerPageShell>
      <LinkBankAccountsPageClient
        tenant={tenant}
        initialCustomers={result.items}
        initialErrorMessage={result.errorMessage}
        canManage={canManage}
      />
    </CustomerPageShell>
  );
}
