Files
objects/wco/privatri_mathieu/threadAliasList.js
2025-08-14 10:36:30 +02:00

89 lines
3.5 KiB
JavaScript

import apx from "./apx.js";
import { getOldestPrivatriids } from "./utils.js";
const bodyEl = document.querySelector("body");
const aliasListContainerEl = document.querySelector("#aliasListContainer");
let aliasesArray = [];
const newAlias = async (alias) => {
let aliasTemplate = "";
await fetch("./alias.mustache")
.then(res => res.text())
.then(template => {
aliasTemplate = template;
});
return Mustache.render(aliasTemplate, { alias });
};
const displayToastAlert = async (message) => {
let toastAlertTemplate = "";
await fetch("./toastAlert.mustache")
.then(res => res.text())
.then(template => {
toastAlertTemplate = template;
});
return Mustache.render(toastAlertTemplate, { message });
};
(async () => {
const params = new URLSearchParams(window.location.search);
const uuid = params.get("uuid");
const privateKey = (await apx.indexedDB.get("privatri", "threads", uuid)).privateKey;
const privatriidArray = await getOldestPrivatriids("privatri", "messages");
privatriidArray.forEach(async privatriid => {
if (privatriid.split("_")[0] === uuid) {
aliasesArray = (await apx.indexedDB.get("privatri", "messages", privatriid)).aliases;
const ownerAlias = (await apx.indexedDB.get("privatri", "messages", privatriid)).owner;
for (const alias of aliasesArray) {
aliasListContainerEl.insertAdjacentHTML("beforeend", await newAlias({
decrypted: (await apx.crypto.decryptMessage(alias, privateKey)).data,
crypted: alias
}));
};
document.querySelectorAll("button.removeAliasBtn").forEach(btn => {
btn.addEventListener("click", async () => {
if (JSON.parse(localStorage.getItem("apx")).data.headers.xalias === (await apx.crypto.decryptMessage(ownerAlias, privateKey)).data) {
if (btn.getAttribute("data-alias") !== ownerAlias) {
const alias = btn.getAttribute("data-alias");
aliasesArray = aliasesArray.filter(a => a !== alias);
btn.parentElement.parentElement.remove();
privatriidArray.forEach(async privatriid => {
if (privatriid.split("_")[0] === uuid) {
const messageObj = await apx.indexedDB.get("privatri", "messages", privatriid);
messageObj.aliases = aliasesArray;
await apx.indexedDB.set("privatri", "messages", messageObj);
};
});
} else {
bodyEl.insertAdjacentHTML("beforeend", await displayToastAlert("You cannot remove the owner of the thread."));
setTimeout(() => {
bodyEl.lastElementChild.remove();
}, 3000);
};
} else {
bodyEl.insertAdjacentHTML("beforeend", await displayToastAlert("You don't have the permissions to remove this alias."));
setTimeout(() => {
bodyEl.lastElementChild.remove();
}, 3000);
};
});
});
};
});
})();