import { getTranslations, setRequestLocale } from "next-intl/server";
import { Link } from "@/i18n/navigation";
import { connectDB } from "@/lib/db";
import { Client } from "@/models/Client";
import { AuthCard } from "@/components/auth/AuthCard";

export const dynamic = "force-dynamic";

export default async function VerifyPage({
  params,
}: {
  params: Promise<{ locale: string; token: string }>;
}) {
  const { locale, token } = await params;
  setRequestLocale(locale);
  const t = await getTranslations({ locale, namespace: "auth" });

  await connectDB();
  const client = await Client.findOne({
    verificationToken: token,
    verificationTokenExpires: { $gt: new Date() },
  });

  if (!client) {
    return (
      <AuthCard title={t("verifyFailedTitle")} subtitle={t("verifyFailedText")}>
        <div className="text-center">
          <Link href="/register" className="text-xs underline hover:text-[var(--rk-ink)]">
            {t("registerLink")}
          </Link>
        </div>
      </AuthCard>
    );
  }

  client.verified = true;
  client.verificationToken = null;
  client.verificationTokenExpires = null;
  await client.save();

  return (
    <AuthCard title={t("verifySuccessTitle")} subtitle={t("verifySuccessText")}>
      <div className="text-center">
        <Link
          href="/login"
          className="inline-block border border-white/30 rounded-lg px-6 py-2.5 text-xs uppercase tracking-[0.2em] text-[var(--rk-ink)] hover:border-white hover:bg-white/5 transition-colors"
        >
          {t("loginButton")}
        </Link>
      </div>
    </AuthCard>
  );
}
