import { Suspense } from "react";
import { AdminLoginForm } from "@/components/admin/AdminLoginForm";

export const metadata = {
  title: "Admin Login",
};

type AdminLoginPageProps = {
  searchParams?: Promise<{
    callbackUrl?: string;
    email?: string;
    error?: string;
    password?: string;
  }>;
};

function safeCallbackUrl(value?: string) {
  if (!value || !value.startsWith("/admin") || value.startsWith("/admin/login")) {
    return "/admin";
  }

  return value;
}

function errorMessage(error?: string, email?: string, password?: string) {
  if (error === "CredentialsSignin") {
    return "Invalid email or password.";
  }

  if (error) {
    return "Unable to login. Please try again.";
  }

  if (email || password) {
    return "Login did not submit correctly. Please enter your credentials again.";
  }

  return "";
}

export default async function AdminLoginPage({ searchParams }: AdminLoginPageProps) {
  const params = await searchParams;
  const callbackUrl = safeCallbackUrl(params?.callbackUrl);
  const initialError = errorMessage(params?.error, params?.email, params?.password);

  return (
    <section className="blue-gradient flex min-h-screen items-center justify-center px-4 py-10">
      <Suspense fallback={<div className="soft-card p-6">Loading login...</div>}>
        <AdminLoginForm initialCallbackUrl={callbackUrl} initialError={initialError} />
      </Suspense>
    </section>
  );
}
