"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 && (
)}
)}
);
}