"use client"; import EditableText from "@/components/editable-text"; import { LocalEditor } from "@/components/editor"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Dialog, DialogTrigger, DialogContent } from "@/components/ui/dialog"; import useApiMutation from "@/hooks/use-api"; import sluggify from "@/lib/sluggify"; import { NewBlog } from "@/types/types"; import { useEffect, useMemo, useState } from "react"; import { DialogTitle } from "@radix-ui/react-dialog"; import { useToast } from "@/hooks/use-toast"; import { ActionButton, ActionButtonDefault, ActionButtonError, ActionButtonLoading, ActionButtonSuccess, } from "@/components/action-button"; export default function BlogEditor() { const { toast } = useToast(); const [title, setTitle] = useState(""); const [imageUrl, setImageUrl] = useState("/placeholder.svg"); const content = localStorage.getItem("blog_draft") ?? ""; useEffect(() => { const localImage = localStorage.getItem("blog_draft_image"); setImageUrl( localImage && localImage.length > 0 ? localImage : "/placeholder.svg", ); }, []); const [summary, setSummary] = useState(""); const slug = useMemo(() => sluggify(title), [title]); const { trigger: newBlog, isMutating: isSending, isSuccess, error, } = useApiMutation( "/blogs/new", {}, "POST", true, false, ); return (

{title.length > 0 ? title : "Un titre doit-être fourni"}

{slug}

Blog cover { setImageUrl(e.target.value); localStorage.setItem( "blog_draft_image", e.currentTarget.value, ); }} /> setSummary(e.target.value)} />
{ try { const blogContent = localStorage.getItem("blog_draft"); if (!blogContent) return; if (title.length < 1) return; const res = await newBlog({ title, summary, image: imageUrl, slug, content: blogContent, }); if (!res) { toast({ title: "Aucune réponse du serveur." }); return; } if (res.status === "Error") { toast({ title: "Erreur.", content: "Une erreur est survenue.", }); } if (res.data) console.log(res.data); return res; } catch (error: any) { toast({ title: "Erreur.", content: "Une erreur est survenue.", }); } }} > Publier
); }