Commentaires publiés
Chargement des commentaires...
`;
return;
}
reviewsList.innerHTML = reviews.map(review => `
${escapeHtml(formatName(review.name))}
${review.is_verified ? `Client vérifié` : ``}
${renderStars(review.rating)}
${escapeHtml(formatDate(review.created_at))}
${escapeHtml(review.comment)}
`).join("");
}
async function loadReviews() {
let query = supabase
.from("comments")
.select("id, name, rating, comment, created_at, is_verified")
.eq("approved", true);
if (sortSelect.value === "best") {
query = query.order("rating", { ascending: false }).order("created_at", { ascending: false });
} else if (sortSelect.value === "worst") {
query = query.order("rating", { ascending: true }).order("created_at", { ascending: false });
} else {
query = query.order("created_at", { ascending: false });
}
const { data, error } = await query;
if (error) {
reviewsList.innerHTML = `
${t.loadError}
`;
console.error(error);
return;
}
updateSummary(data || []);
renderReviews(data || []);
}
sortSelect.addEventListener("change", loadReviews);
reviewForm.addEventListener("submit", async (e) => {
e.preventDefault();
formMessage.textContent = "";
formMessage.className = "form-message";
const honeypot = reviewForm.website.value.trim();
const name = reviewForm.name.value.trim();
const rating = Number(reviewForm.rating.value);
const comment = reviewForm.comment.value.trim();
const timeSpent = Date.now() - createdAtPageLoad;
if (honeypot) {
formMessage.textContent = t.blocked;
formMessage.classList.add("error");
return;
}
if (timeSpent