import { VideoForm } from "@/admin/components/VideoForm";
import { AdminAutoLayout } from "@/admin/layout/AdminAutoLayout";
import { requirePermission } from "@/lib/auth";
import { prisma } from "@/lib/prisma";
import Link from "next/link";

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

const errorMessages: Record<string, string> = {
  required: "Please enter a title and valid YouTube URL. Description can be short or empty.",
  youtube: "Please enter a valid YouTube video or shorts URL."
};

export default async function NewVideoPage({ searchParams }: NewVideoPageProps) {
  await requirePermission("videos");
  const params = await searchParams;
  const categories = await prisma.category.findMany({ orderBy: { name: "asc" } });

  return (
    <AdminAutoLayout
      description="Add a long-form 16:9 YouTube video. For Shorts, use the dedicated Shorts upload page."
      error={params.error}
      errorMessages={errorMessages}
      eyebrow="Video"
      title="New video"
      width="wide"
    >
      <Link className="btn btn-secondary" href="/admin/shorts/new" style={{ marginBottom: "1rem" }}>
        Upload a YouTube Short instead →
      </Link>
      <VideoForm categories={categories} defaultKind="VIDEO" />
    </AdminAutoLayout>
  );
}
