import { notFound } from "next/navigation"

import { BankApiForm } from "@/components/xml-apis/bank-api/bank-api-form"
import {
  fetchBackendBankApiById,
  fetchBackendCorporateAccountOptions,
} from "../_lib/bank-api-server-api"

type PageProps = {
  params: Promise<{ id: string }>
}

export default async function BankApiEditRoute({ params }: PageProps) {
  const { id } = await params
  const bankId = id.trim()

  if (!bankId || !/^\d+$/.test(bankId)) {
    notFound()
  }

  const [{ detail, errorMessage }, { options, errorMessage: optionsError }] =
    await Promise.all([
      fetchBackendBankApiById(bankId),
      fetchBackendCorporateAccountOptions(),
    ])

  if (
    errorMessage === "Authentication is required." ||
    optionsError === "Authentication is required."
  ) {
    throw new Error("Authentication is required.")
  }

  if (!detail) {
    notFound()
  }

  return (
    <BankApiForm
      mode="update"
      initial={detail}
      corporateAccountOptions={options}
    />
  )
}
