sitegen/src/q+a/views/backend-inbox.client.ts

75 lines
1.9 KiB
TypeScript
Raw Normal View History

2025-07-07 20:58:02 -07:00
// @ts-ignore
globalThis.onReply = (id: string) => {
location.href = `/admin/q+a/${id}?return=inbox`;
};
// @ts-ignore
globalThis.onDelete = async (id: string) => {
const div = document.querySelector(`[data-q="${id}"]`) as HTMLDivElement;
if (!div) return alert("Question not found");
// Pending State
div.style.opacity = "0.5";
div.style.pointerEvents = "none";
div?.querySelectorAll("button").forEach((b) => {
b.disabled = true;
});
try {
const resp = await fetch(`/admin/q+a/${id}`, {
method: "DELETE",
headers: {
Accept: "application/json",
},
});
if (resp.status !== 200) {
throw new Error("Failed to delete question, status: " + resp.status);
}
} catch (e: any) {
div.style.opacity = "1";
div.style.pointerEvents = "auto";
div?.querySelectorAll("button").forEach((b) => {
b.disabled = false;
});
return alert(e.message);
}
div.remove();
};
// @ts-ignore
globalThis.onDeleteFull = async (id: string) => {
const div = document.querySelector(`[data-q="${id}"]`) as HTMLDivElement;
if (!div) return alert("Question not found");
// Confirmation
if (!confirm("Are you sure you want to delete this question?")) return;
// Pending State
div.style.opacity = "0.5";
div.style.pointerEvents = "none";
div?.querySelectorAll("button").forEach((b) => {
b.disabled = true;
});
try {
const resp = await fetch(`/admin/q+a/${id}`, {
method: "DELETE",
headers: {
Accept: "application/json",
"X-Delete-Full": "true",
},
});
if (resp.status !== 200) {
throw new Error("Failed to delete question, status: " + resp.status);
}
} catch (e: any) {
div.style.opacity = "1";
div.style.pointerEvents = "auto";
div?.querySelectorAll("button").forEach((b) => {
b.disabled = false;
});
return alert(e.message);
}
div.remove();
};