import Link from "next/link";
import { notFound } from "next/navigation";
import { AdminHeader, SavedNotice } from "@/components/admin/ui";
import { ArticleForm } from "@/components/admin/ArticleForm";
import { requireStaffPage } from "@/server/admin/guard";
import { articleFormInitial, articleFormOptions } from "@/server/admin/article-form-data";

export const metadata = { title: "ویرایش مقاله" };
export const dynamic = "force-dynamic";

export default async function EditArticlePage({ params, searchParams }: { params: Promise<{ id: string }>; searchParams: Promise<{ saved?: string }> }) {
  const { id } = await params;
  await requireStaffPage(`/admin/magazine/${id}`, "magazine");
  if (!/^[a-z0-9]{10,40}$/i.test(id)) notFound();
  const [data, options] = await Promise.all([articleFormInitial(id), articleFormOptions()]);
  if (!data) notFound();
  const saved = (await searchParams).saved;
  return (
    <>
      <AdminHeader
        title={data.value.title}
        actions={data.published ? <Link href={`/mag/${data.slug}`} target="_blank" className="btn-outline h-10 px-4">مشاهده در سایت</Link> : undefined}
      />
      <SavedNotice show={!!saved} text={saved === "published" ? "مقاله منتشر شد" : "پیش‌نویس ذخیره شد"} />
      <ArticleForm key={data.value.slug + saved} id={id} initial={data.value} published={data.published} {...options} />
    </>
  );
}
