"use client"; import { useState } from "react"; import { useRouter } from "next/navigation"; import { QuestionProp } from "@/lib/types/QuestionProp"; type Props = { annonceId: number; annonceQuestion: QuestionProp[] | undefined; }; export default function EditAnnonceQuestion({ annonceId, annonceQuestion }: Props) { const router = useRouter(); if (!annonceQuestion || annonceQuestion.length === 0) { return (
Aucune question pour l’instant.
); } return (
{annonceQuestion.map((q) => ( router.refresh()} /> ))}
); } function QuestionItem({ q, onRefresh }: { q: QuestionProp; onRefresh: () => void }) { const router = useRouter(); const [open, setOpen] = useState(false); const [answer, setAnswer] = useState(q.answer ?? ""); const [loading, setLoading] = useState(false); const [deleting, setDeleting] = useState(false); const [err, setErr] = useState(null); const submit = async () => { if (!answer.trim()) return; setLoading(true); setErr(null); try { const res = await fetch(`/api/question/${q.id}`, { method: "PATCH", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ answer: answer.trim() }), }); const data = await res.json().catch(() => ({})); if (!res.ok) throw new Error(data?.error || "Impossible d’enregistrer la réponse."); setOpen(false); onRefresh(); } catch (e: any) { setErr(e?.message || "Erreur réseau."); } finally { setLoading(false); } }; const handleDelete = async () => { const confirmed = window.confirm("Supprimer cette question ? Cette action est irréversible."); if (!confirmed) return; setDeleting(true); setErr(null); try { const res = await fetch(`/api/question/${q.id}`, { method: "DELETE" }); if (!res.ok) { const data = await res.json().catch(() => ({})); throw new Error(data?.error || "Suppression impossible."); } onRefresh(); } catch (e: any) { setErr(e?.message || "Erreur réseau."); } finally { setDeleting(false); } }; const answeredAtText = q.answeredAt ? new Date(q.answeredAt).toLocaleDateString("fr-FR") : ""; return (

{q.authorName ?? "Utilisateur anonyme"} :

{q.content}

{err &&

{err}

}
{q.answer && !open ? (

Réponse :

{q.answer}

— {q.answerAuthorName ?? "Agent"} {answeredAtText && `le ${answeredAtText}`}

) : (
{!open && (
)} {open && (