import Link from "next/link";
import { redirect } from "next/navigation";
import { registerUserAction } from "@/lib/actions";
import { getSession } from "@/lib/auth";

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

const errorMessages: Record<string, string> = {
  "email-exists": "This email is already registered.",
  required: "Please enter name, valid email, and at least 8 character password."
};

export default async function RegisterPage({ searchParams }: RegisterPageProps) {
  const [session, params] = await Promise.all([getSession(), searchParams]);

  if (session) {
    redirect(session.role === "USER" ? "/dashboard" : "/admin");
  }

  return (
    <main className="container" style={{ padding: "4rem 1.25rem" }}>
      <form action={registerUserAction} className="contact-form-pro public-auth-card">
        <span className="pill">User Registration</span>
        <h1 className="section-title">Join Just Chill Nepal</h1>
        <p className="muted">Create an account. Admin approval is required before uploading content.</p>
        {params.error ? <p className="admin-error-message">{errorMessages[params.error] ?? "Please check the form."}</p> : null}
        <label className="field">
          Full Name
          <input name="name" required />
        </label>
        <label className="field">
          Email
          <input name="email" required type="email" />
        </label>
        <label className="field">
          Password
          <input minLength={8} name="password" required type="password" />
        </label>
        <button className="btn contact-submit" type="submit">Register</button>
        <p className="muted">Already registered? <Link href="/login">Login here</Link>.</p>
      </form>
    </main>
  );
}
