import type { Metadata } from "next";
import { redirect } from "next/navigation";
import { Suspense } from "react";
import { AuthCard } from "@/features/auth/auth-shell";
import { PasswordForm } from "@/features/auth/password-form";
import { getServerSession } from "@/lib/auth/server-session";
import { isMonetizationApiConfigured } from "@/lib/auth/server-config";

export const metadata: Metadata = { title: "Set Password" };
export const dynamic = "force-dynamic";

export default async function Page() {
  const apiEnabled = isMonetizationApiConfigured();
  let unavailableMessage = "";
  let hasSession = false;
  let passwordSetupRequired = false;
  if (apiEnabled) {
    try {
      const session = await getServerSession();
      hasSession = session !== null;
      passwordSetupRequired = session?.passwordSetupRequired ?? false;
    } catch {
      unavailableMessage =
        "Your session could not be verified. Check the authentication service and try again.";
    }
    if (!unavailableMessage && !hasSession) redirect("/signin");
    if (!unavailableMessage && hasSession && !passwordSetupRequired) redirect("/");
  }

  return (
    <AuthCard
      title="Set Your Password"
      description="Set a password to complete your account setup."
    >
      <Suspense>
        <PasswordForm
          mode="set"
          apiEnabled={apiEnabled}
          unavailableMessage={unavailableMessage}
        />
      </Suspense>
    </AuthCard>
  );
}
