|
export class VoteManager {
|
|
constructor() {
|
|
this.initVoteButtons();
|
|
this.initNotificationDismiss();
|
|
}
|
|
|
|
initVoteButtons() {
|
|
document.querySelectorAll(".post-action-btn[data-vote]").forEach((btn) => {
|
|
btn.addEventListener("click", async () => {
|
|
const targetUid = btn.dataset.target;
|
|
const targetType = btn.dataset.type || "post";
|
|
const value = btn.dataset.vote;
|
|
|
|
const form = document.createElement("form");
|
|
form.method = "POST";
|
|
form.action = `/votes/${targetType}/${targetUid}`;
|
|
const input = document.createElement("input");
|
|
input.type = "hidden";
|
|
input.name = "value";
|
|
input.value = value;
|
|
form.appendChild(input);
|
|
document.body.appendChild(form);
|
|
form.submit();
|
|
});
|
|
});
|
|
}
|
|
|
|
initNotificationDismiss() {
|
|
document.querySelectorAll(".notification-dismiss").forEach((btn) => {
|
|
btn.addEventListener("click", async () => {
|
|
const uid = btn.dataset.uid;
|
|
if (!uid) {
|
|
return;
|
|
}
|
|
const form = document.createElement("form");
|
|
form.method = "POST";
|
|
form.action = `/notifications/mark-read/${uid}`;
|
|
document.body.appendChild(form);
|
|
form.submit();
|
|
});
|
|
});
|
|
}
|
|
}
|