import { notFound } from "next/navigation";

import { AssetDetailsFormRouter } from "../_components/asset-details-form";
import {
  isSupportedDetailAssetClass,
  type SupportedDetailAssetClass,
} from "../_components/detail-types";
import { fetchBackendMissingAssetMarketDataDetail } from "../_lib/missing-asset-market-data-server-api";

type PageProps = {
  searchParams: Promise<{ isin?: string; asset_class?: string }>;
};

export default async function MissingAssetAddDetailsPage({ searchParams }: PageProps) {
  const { isin, asset_class: assetClassParam } = await searchParams;

  if (!isin?.trim() || !assetClassParam?.trim()) {
    notFound();
  }

  if (!isSupportedDetailAssetClass(assetClassParam)) {
    notFound();
  }

  const assetClass = assetClassParam as SupportedDetailAssetClass;
  const detail = await fetchBackendMissingAssetMarketDataDetail(isin.trim(), assetClass);

  if (!detail) {
    notFound();
  }

  return (
    <AssetDetailsFormRouter
      marketRow={detail.marketRow}
      assetClass={assetClass}
      initial={detail.initial}
    />
  );
}
