import { AdminPasswordForm, AdminProfileForm } from "@/admin/components/AdminProfileForms";
import { AdminAutoLayout } from "@/admin/layout/AdminAutoLayout";
import { requireAdmin } from "@/lib/auth";

type AdminProfilePageProps = {
  searchParams: Promise<{ error?: string; success?: string }>;
};

const errorMessages: Record<string, string> = {
  "current-password": "Current password is incorrect.",
  "email-exists": "This email is already used by another admin.",
  password: "New password must be at least 8 characters and both password fields must match.",
  profile: "Please enter a valid name and email address."
};

const successMessages: Record<string, string> = {
  password: "Password changed successfully.",
  profile: "Profile updated successfully."
};

export default async function AdminProfilePage({ searchParams }: AdminProfilePageProps) {
  const session = await requireAdmin();
  const params = await searchParams;
  const successText = params.success ? successMessages[params.success] ?? "Saved successfully." : null;

  return (
    <AdminAutoLayout
      description="Update your personal admin details, public bio, email address, and password."
      error={params.error}
      errorMessages={errorMessages}
      eyebrow="Admin profile"
      title="Profile settings"
      width="full"
    >
      {successText ? <p className="admin-success-message">{successText}</p> : null}

      <div className="main-layout">
        <AdminProfileForm bio={session.bio} email={session.email} name={session.name} />
        <AdminPasswordForm />
      </div>
    </AdminAutoLayout>
  );
}
