nelle-observer/frontend/public/scripts/ntfy.js
2024-10-30 19:48:48 -06:00

207 lines
6.4 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// i deeply apologize for the horrors within...
const ntfyEndpoint = "https://nelle.observer/api/ntfy";
//const ntfyEndpoint = "http://0.0.0.0:7879/api/ntfy";
// text fields and buttons
const ntfyMessage = document.getElementById("ntfy-message");
const ntfyTitle = document.getElementById("ntfy-title");
const ntfyAttach = document.getElementById("ntfy-attach");
const ntfyClickAction = document.getElementById("ntfy-click");
const ntfyButton = document.getElementById("ntfy-button");
// options checkboxes
const optionsCheck = document.getElementById("optionsCheckbox");
const titleCheck = document.getElementById("titleCheckbox");
const attachmentCheck = document.getElementById("attachmentCheckbox");
const clickCheck = document.getElementById("clickCheckbox");
// labels
const titleBoxLabel = document.getElementById("titleBoxLabel");
const attachmentBoxLabel = document.getElementById("attachBoxLabel");
const clickBoxLabel = document.getElementById("clickBoxLabel");
// Options storage variables
const optionsEnabled = sessionStorage.getItem("optionsEnabled");
const titleEnabled = sessionStorage.getItem("optionsEnabled");
const attachmentEnabled = sessionStorage.getItem("optionsEnabled");
const clickEnabled = sessionStorage.getItem("optionsEnabled");
// Prefixs for placeholders
const titlePFX = "title: ";
const msgPFX = "message: ";
const attachPFX = "attachment: ";
const clickPFX = "click-action: ";
// Ctrl + Enter to send
document.addEventListener("keydown", (event) => {
if (event.ctrlKey && event.key === "Enter") {
ntfyClick()
}
});
// Random placeholder
function getPlaceholder() {
placeholderSelector = Math.floor(Math.random() * 8) + 1;
switch (placeholderSelector) {
case 1:
ntfyTitle.placeholder = `${titlePFX}hey there`;
ntfyMessage.placeholder = `${msgPFX}hi nelle! (。><。)`;
break;
case 2:
ntfyTitle.placeholder = `${titlePFX}fuck you`;
ntfyMessage.placeholder = `${msgPFX}(╹◡╹)凸`;
break;
case 3:
ntfyTitle.placeholder = `${titlePFX}confession of sin`;
ntfyMessage.placeholder = `${msgPFX}I dont like SciAdv`;
break;
case 4:
ntfyTitle.placeholder = `${titlePFX}a funny joke`;
ntfyMessage.placeholder = `${msgPFX}Knock Knock...`;
break;
case 5:
ntfyTitle.placeholder = `${titlePFX}yes, its me`;
ntfyMessage.placeholder = `${msgPFX}El. Psy. Kongroo.`;
break;
case 6:
ntfyTitle.placeholder = `${titlePFX}SDXc^73hce1!3&`;
ntfyMessage.placeholder = `${msgPFX}we're watching you.`;
break;
case 7:
ntfyTitle.placeholder = `${titlePFX}haiiii :3`;
ntfyMessage.placeholder = `${msgPFX}you wouldnt happen to know where an IBN5100 is, would you?`;
break;
case 8:
ntfyTitle.placeholder = `${titlePFX}an important question`;
ntfyMessage.placeholder = `${msgPFX}if you had to choose, between: bacon, unlimited bacon, but no games. or. games. unlimited games, but no games. which would you pick?`;
break;
case 9:
ntfyTitle.placeholder = `${titlePFX}query`;
ntfyMessage.placeholder = `${msgPFX}time travel?`;
break;
default:
ntfyTitle.placeholder = `${titlePFX}title the message for some reason?`;
ntfyMessage.placeholder = `${msgPFX}type some words and hit send.`;
ntfyAttach.placeholder = `${attachPFX}https://http.cat/images/100.jpg`;
ntfyClickAction.placeholder = `${clickPFX}https://www.youtube.com/watch?v=dQw4w9WgXcQ`;
}
}
function checkBoxes() {
if (optionsEnabled) {
optionsCheck.checked = true;
toggleOptions();
}
if (titleEnabled) {
titleCheck.checked = true;
toggleTitle();
}
if (attachmentEnabled) {
attachmentCheck.checked = true;
toggleAttach();
}
if (clickEnabled) {
clickCheck.checked = true;
toggleClick();
}
}
function toggleOptions() {
if (optionsCheck.checked) {
sessionStorage.setItem("optionsEnabled", 1);
titleBoxLabel.style.display = "initial";
attachmentBoxLabel.style.display = "initial";
clickBoxLabel.style.display = "initial";
titleCheck.style.display = "initial";
attachmentCheck.style.display = "initial";
clickCheck.style.display = "initial";
}
if (!optionsCheck.checked) {
sessionStorage.removeItem("optionsEnabled");
titleBoxLabel.style.display = "none";
attachmentBoxLabel.style.display = "none";
clickBoxLabel.style.display = "none";
titleCheck.style.display = "none";
attachmentCheck.style.display = "none";
clickCheck.style.display = "none";
}
}
function toggleTitle() {
if (titleCheck.checked) {
sessionStorage.setItem("titleEnabled", 1);
ntfyTitle.style.display = "initial";
}
if (!titleCheck.checked) {
sessionStorage.removeItem("titleEnabled");
ntfyTitle.style.display = "none";
}
}
function toggleAttach() {
if (attachmentCheck.checked) {
sessionStorage.setItem("attachmentEnabled", 1);
ntfyAttach.style.display = "initial";
}
if (!attachmentCheck.checked) {
sessionStorage.removeItem("attachmentEnabled");
ntfyAttach.style.display = "none";
}
}
function toggleClick() {
if (clickCheck.checked) {
sessionStorage.setItem("clickEnabled", 1);
ntfyClickAction.style.display = "initial";
}
if (!clickCheck.checked) {
sessionStorage.removeItem("clickEnabled");
ntfyClickAction.style.display = "none";
}
}
// on send button click
async function ntfyClick() {
if (!ntfyMessage.value.replace(/\s/g, "").length) {
ntfyButton.innerHTML = "<span>ಠ﹏ಠ</span>";
setTimeout(() => {
ntfyButton.innerHTML = "<span>Send</span>";
return;
}, 1000);
} else {
ntfyButton.innerHTML = "<span>Sent! ( ꈍᴗꈍ)</span>";
sendNotification();
setTimeout(() => {
ntfyButton.innerHTML = "<span>Send</span>";
}, 1000);
}
}
// send all
function sendAll(endpoint, title, message, attachment, click) {
const xhr = new XMLHttpRequest();
const formData = new FormData();
formData.append("Title", title);
formData.append("Message", message);
formData.append("Attach", attachment);
formData.append("Click", click);
// Submit the data via fetch()
fetch(endpoint, {
method: "POST",
body: formData,
});
}
// send notification
function sendNotification() {
sendAll(
ntfyEndpoint,
ntfyTitle.value,
ntfyMessage.value,
ntfyAttach.value,
ntfyClickAction.value
);
ntfyTitle.value = "";
ntfyMessage.value = "";
ntfyAttach.value = "";
ntfyClickAction.value = "";
}