import { auth } from "@/lib/auth"; import { generateSlug, getAllCategories, getTutorialById, updateTutorial, } from "@/lib/tutorials"; import { revalidatePath } from "next/cache"; import Link from "next/link"; import { notFound, redirect } from "next/navigation"; import { TutorialForm } from "../../_components/tutorial-form"; export const dynamic = "force-dynamic"; const ALLOWED_DISCORD_ID = "281113457833672706"; type Props = { params: Promise<{ id: string }>; }; export default async function EditTutorialPage({ params }: Props) { const { id } = await params; const [tutorial, categories] = await Promise.all([ getTutorialById(id), getAllCategories(), ]); if (!tutorial) { notFound(); } // Capture le slug ici pour l'utiliser dans la Server Action const tutorialSlug = tutorial.slug; async function handleUpdate(formData: FormData) { "use server"; const session = await auth(); if ( !session?.user?.discordId || session.user.discordId !== ALLOWED_DISCORD_ID ) { throw new Error("Non autorisé"); } const title = formData.get("title")?.toString().trim(); const categoryId = formData.get("categoryId")?.toString(); const difficulty = formData.get("difficulty")?.toString() || "Intermédiaire"; const readTime = formData.get("readTime")?.toString().trim(); const excerpt = formData.get("excerpt")?.toString().trim(); const content = formData.get("content")?.toString().trim(); if (!title || !categoryId || !content) { throw new Error("Titre, catégorie et contenu sont obligatoires."); } await updateTutorial(id, { slug: generateSlug(title), title, categoryId, difficulty: difficulty as "Débutant" | "Intermédiaire" | "Avancé", readTime: readTime || "5 min", excerpt: excerpt || (content.length > 180 ? content.slice(0, 180) + "..." : content), content, }); revalidatePath("/dashboard"); revalidatePath("/"); revalidatePath(`/tutos/${tutorialSlug}`); redirect("/dashboard"); } return (
{tutorial.title}