Allow deleting own suggestions in Suggest phase and surface delete chip

This commit is contained in:
2026-01-28 16:58:18 +01:00
parent e6b341d837
commit 3ec1808ad1
3 changed files with 35 additions and 2 deletions

View File

@@ -107,7 +107,7 @@ function renderMySuggestions() {
const wrap = $("my-suggestions");
if (!wrap) return;
wrap.innerHTML = "";
state.mySuggestions.forEach((s) => wrap.appendChild(buildCard(s, { showAuthor: false })));
state.mySuggestions.forEach((s) => wrap.appendChild(buildCard(s, { showAuthor: false, allowDelete: true })));
}
function renderAllSuggestions() {
@@ -289,7 +289,7 @@ async function refreshPhaseData() {
await Promise.all([loadSuggestData(), loadRevealData(), loadVoteData(), loadResults()]);
}
function buildCard(s, { showAuthor }) {
function buildCard(s, { showAuthor = false, allowDelete = false }) {
const card = document.createElement("article");
card.className = "game-card";
const hasImage = !!s.screenshotUrl;
@@ -304,6 +304,7 @@ function buildCard(s, { showAuthor }) {
${s.youtubeUrl ? `<a class="link compact" href="${s.youtubeUrl}" target="_blank" rel="noopener">YouTube ↗</a>` : ""}
<div class="title-meta">
${showAuthor && s.author ? `<span class="chip">${s.author}</span>` : ""}
${allowDelete ? `<button class="chip danger-chip" data-delete="${s.id}" type="button">Delete</button>` : ""}
</div>
</div>
${s.genre ? `<p class="muted">${s.genre}</p>` : ""}
@@ -314,6 +315,18 @@ function buildCard(s, { showAuthor }) {
const btn = card.querySelector(".card-visual");
btn.addEventListener("click", () => openLightbox(s.screenshotUrl, s.name));
}
if (allowDelete) {
const del = card.querySelector("[data-delete]");
del.addEventListener("click", async () => {
try {
await api(`/api/suggestions/${s.id}`, { method: "DELETE" });
toast("Suggestion deleted");
await loadSuggestData();
} catch (err) {
toast(err.message, true);
}
});
}
return card;
}