73 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import apx from "./apx.js";
 | |
| import { getOldestPrivatriids } from "./utils.js";
 | |
| 
 | |
| const bodyEl = document.querySelector("body");
 | |
| const threadNameInputEl = document.querySelector("#threadNameInput");
 | |
| const autoDeletionBtnElArray = document.querySelectorAll("li.autoDeletionBtn");
 | |
| const applyModificationsBtnEl = document.querySelector("#applyModificationsBtn");
 | |
| 
 | |
| const displayToastAlert = async (message) => {
 | |
|     let toastAlertTemplate = "";
 | |
| 
 | |
|     await fetch("./toastAlert.mustache")
 | |
|         .then(res => res.text())
 | |
|         .then(template => {
 | |
|             toastAlertTemplate = template;
 | |
|         });
 | |
| 
 | |
|     return Mustache.render(toastAlertTemplate, { message });
 | |
| };
 | |
| 
 | |
| let messageObj = {};
 | |
| 
 | |
| (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");
 | |
|     let ownerAlias = "";
 | |
|     
 | |
|     privatriidArray.forEach(async privatriid => {
 | |
|         if (privatriid.split("_")[0] === uuid) {
 | |
|             messageObj = await apx.indexedDB.get("privatri", "messages", privatriid);
 | |
|             ownerAlias = messageObj.owner;
 | |
|             
 | |
|             threadNameInputEl.value = (await apx.crypto.decryptMessage(messageObj.title, privateKey)).data;
 | |
| 
 | |
|             (Array.from(autoDeletionBtnElArray).find(el => el.getAttribute("data-auto-deletion") === String(messageObj.dt_autodestruction))).classList.add("bg-base-200");
 | |
|         
 | |
|             if (messageObj.urgencydeletion === true) {
 | |
|                 document.querySelector('input[type="checkbox"].toggle').checked = true;
 | |
|             };
 | |
|         };
 | |
|     });
 | |
| 
 | |
|     applyModificationsBtnEl.addEventListener("click", async () => {
 | |
|         if (JSON.parse(localStorage.getItem("apx")).data.headers.xalias === (await apx.crypto.decryptMessage(ownerAlias, privateKey)).data) {
 | |
|             messageObj.title = await apx.crypto.encryptMessage(threadNameInputEl.value, privateKey);
 | |
|             messageObj.dt_autodestruction = (() => {
 | |
|                 const selectedBtn = Array.from(autoDeletionBtnElArray).find(btn => btn.classList.contains("bg-base-200"));
 | |
|                 return parseInt(selectedBtn ? selectedBtn.getAttribute("data-auto-deletion") : 0, 10);
 | |
|             })();
 | |
|             messageObj.urgencydeletion = document.querySelector('input[type="checkbox"].toggle').checked;
 | |
| 
 | |
|             await apx.indexedDB.set("privatri", "messages", messageObj);
 | |
|         } else {
 | |
|             bodyEl.insertAdjacentHTML("beforeend", await displayToastAlert("You don't have the permissions to edit this thread."));
 | |
| 
 | |
|             setTimeout(() => {
 | |
|                 bodyEl.lastElementChild.remove();
 | |
|             }, 3000);
 | |
|         };
 | |
|     });
 | |
| })();
 | |
| 
 | |
| autoDeletionBtnElArray.forEach(btn => {
 | |
|     btn.addEventListener("click", () => {
 | |
|         autoDeletionBtnElArray.forEach(btn => btn.classList.remove("bg-base-200"));
 | |
|         btn.classList.add("bg-base-200");
 | |
|     });
 | |
| });
 |