import Payment from "@/components/client-payment/payment";
import ErrorMessages from "@/components/common/error-messages";
import { getPublicData } from "@/utils/fetch";
import { headers } from "next/headers";
import RedirectPayment from "./redirect";

export default async function clientPay({
  params,
  searchParams,
}: {
  params: { Id: string };
  searchParams: { [key: string]: string | string[] | undefined };
}) {
  const { Id } = params;
  const { client } = searchParams;
  const host = await getHostName();

  let url = `/api/v1/public/short/${Id}`;
  if (client === "true") {
    url = `/api/v1/public/client/${Id}`;
  }
  const data = await getPublicData(`${url}?host=${host}`);
  if (!data?.success) {
    return <ErrorMessages message={data?.error?.message} />;
  }
  if (data?.success && !client && data?.data?.url) {
    const uuid = data?.data?.url?.split("/").pop();
    return <RedirectPayment uuid={uuid} />;
    // redirect(`/pay/${uuid}?client=true`);
  }
  return (
    <>
      {data?.data ? (
        <Payment client={data?.data} />
      ) : (
        <div className="p-5 text-center">Validating....</div>
      )}
    </>
  );
}
export async function getHostName() {
  const requestHeaders = headers();
  let host = requestHeaders.get("x-forwarded-host");
  if (!host) {
    host = requestHeaders.get("host");
  }
  if (host?.includes(":")) {
    host = host.split(":")[0];
  }
  return host;
}
