import { authOptions } from "@/app/auth";
import VerifyRegistrationOTPForm from "@/components/auth/verify-registration-otp-form";
import ClientErrorMessage from "@/components/client-error-message";
import { checkTempIdOrPhone } from "@/queries/authentication";
import { tryCatch } from "@/utils/tryCatch";
import { getServerSession } from "next-auth";
import { redirect } from "next/navigation";

export default async function VerifyRegistrationOTP({
	searchParams,
}: {
	searchParams: Promise<{ phone_number: string }>;
}) {
	const session = await getServerSession(authOptions)
	if (session) {
		// If the user is already logged in, redirect them to the home page
		return redirect("/");
	}
	const phone_number = (await searchParams).phone_number;
	if (!phone_number) {
		return redirect("/login");
	}
	console.log(
		"phone number from server page params (verify otp page)",
		phone_number,
	);
	const [error, response] = await tryCatch(
		checkTempIdOrPhone({ phone_number }),
	);
	if (error) {
		console.log("Error in checkIdOrPhone", error);
		return <ClientErrorMessage message={error.message} />;
	}
	if (response.otp_verified) redirect("/auth/signin");
	return <VerifyRegistrationOTPForm phone_number={phone_number} />;
}
