nelle-observer/public/scripts/ntfy.js
2024-09-05 18:23:55 -06:00

335 lines
11 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://ntfy.ouroboros.group/beep";
const meowEndpoint = "https://ntfy.ouroboros.group/meow";
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");
const meowButton = document.getElementById("meow-button");
const optionsCheck = document.getElementById("optionsCheckbox");
const titleCheck = document.getElementById("titleCheckbox");
const attachmentCheck = document.getElementById("attachmentCheckbox");
const clickCheck = document.getElementById("clickCheckbox");
const titleBoxLabel = document.getElementById("titleBoxLabel");
const attachmentBoxLabel = document.getElementById("attachBoxLabel");
const clickBoxLabel = document.getElementById("clickBoxLabel");
const justMeowed = document.getElementById("justMeowed");
const optionsEnabled = sessionStorage.getItem("optionsEnabled");
const titleEnabled = sessionStorage.getItem("optionsEnabled");
const attachmentEnabled = sessionStorage.getItem("optionsEnabled");
const clickEnabled = sessionStorage.getItem("optionsEnabled");
const titlePFX = "title: ";
const msgPFX = "message: ";
const attachPFX = "attachment: ";
const clickPFX = "click-action: ";
// 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 meowClick() { meowButton.disabled=true;
setTimeout('meowButton.disabled=false;',11000);
meowButton.innerHTML = "<span>Sent! :3</span>";
sendNone(meowEndpoint, "meow");
setTimeout(() => {
meowButton.innerHTML = "<span>cooldown 10s</span>";
setTimeout(() => {
meowButton.innerHTML = "<span>cooldown 9s</span>";
setTimeout(() => {
meowButton.innerHTML = "<span>cooldown 8s</span>";
setTimeout(() => {
meowButton.innerHTML = "<span>cooldown 7s</span>";
setTimeout(() => {
meowButton.innerHTML = "<span>cooldown 6s</span>";
setTimeout(() => {
meowButton.innerHTML = "<span>cooldown 5s</span>";
setTimeout(() => {
meowButton.innerHTML = "<span>cooldown 4s</span>";
setTimeout(() => {
meowButton.innerHTML = "<span>cooldown 3s</span>";
setTimeout(() => {
meowButton.innerHTML = "<span>cooldown 2s</span>";
setTimeout(() => {
meowButton.innerHTML = "<span>cooldown 1s</span>";
setTimeout(() => {
meowButton.innerHTML = "<span>meow</span>";
}, 1000);
}, 1000);
}, 1000);
}, 1000);
}, 1000);
}, 1000);
}, 1000);
}, 1000);
}, 1000);
}, 1000);
}, 1000);
}
// 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);
}
}
// only message
function sendNone(endpoint, message) {
const r = new XMLHttpRequest();
r.open("POST", endpoint, true);
r.setRequestHeader("Content-Type", "text/plain");
r.send(message);
}
// send all
function sendAll(endpoint, title, message, attachment, click) {
const r = new XMLHttpRequest();
r.open("POST", endpoint, true);
r.setRequestHeader("Content-Type", "text/plain");
r.setRequestHeader("Title", title);
r.setRequestHeader("Attach", attachment);
r.setRequestHeader("Click", click);
r.send(message);
}
// send title only
function sendTitle(endpoint, title, message) {
const r = new XMLHttpRequest();
r.open("POST", endpoint, true);
r.setRequestHeader("Content-Type", "text/plain");
r.setRequestHeader("Title", title);
r.send(message);
}
// send attachment only
function sendAttach(endpoint, message, attachment) {
const r = new XMLHttpRequest();
r.open("POST", endpoint, true);
r.setRequestHeader("Content-Type", "text/plain");
r.setRequestHeader("Attach", attachment);
r.send(message);
}
// send click only
function sendClick(endpoint, message, click) {
const r = new XMLHttpRequest();
r.open("POST", endpoint, true);
r.setRequestHeader("Content-Type", "text/plain");
r.setRequestHeader("Click", click);
r.send(message);
}
// send Title & Attachment
function sendTitleAttach(endpoint, title, message, attachment) {
const r = new XMLHttpRequest();
r.open("POST", endpoint, true);
r.setRequestHeader("Content-Type", "text/plain");
r.setRequestHeader("Title", title);
r.setRequestHeader("Attach", attachment);
r.send(message);
}
// send Title & Click
function sendTitleClick(endpoint, title, message, click) {
const r = new XMLHttpRequest();
r.open("POST", endpoint, true);
r.setRequestHeader("Content-Type", "text/plain");
r.setRequestHeader("Title", title);
r.setRequestHeader("Click", click);
r.send(message);
}
// send Attach & Click
function sendAttachClick(endpoint, message, attachment, click) {
const r = new XMLHttpRequest();
r.open("POST", endpoint, true);
r.setRequestHeader("Content-Type", "text/plain");
r.setRequestHeader("Attach", attachment);
r.setRequestHeader("Click", click);
r.send(message);
}
// send notification
function sendNotification() {
// title only
if (titleEnabled && !attachmentEnabled && !clickEnabled) {
sendTitle(ntfyTitle.value, ntfyMessage.value);
ntfyTitle.value = "";
ntfyMessage.value = "";
}
// attachment only
if (!titleEnabled && attachmentEnabled && !clickEnabled) {
sendAttach(ntfyEndpoint, ntfyMessage.value, ntfyAttach.value);
ntfyMessage.value = "";
ntfyAttach.value = "";
}
// click only
if (!titleEnabled && !attachmentEnabled && clickEnabled) {
sendClick(ntfyEndpoint, ntfyMessage.value, ntfyClickAction.value);
ntfyMessage.value = "";
ntfyClickAction.value = "";
}
// title & attachment
if (titleEnabled && attachmentEnabled && !clickEnabled) {
sendTitleAttach(ntfyEndpoint, ntfyTitle.value, ntfyMessage.value, ntfyAttach.value);
ntfyTitle.value = "";
ntfyMessage.value = "";
ntfyAttach.value = "";
}
// title & click
if (titleEnabled && !attachmentEnabled && clickEnabled) {
sendTitleClick(ntfyEndpoint, ntfyTitle.value, ntfyMessage.value, ntfyClickAction.value);
ntfyTitle.value = "";
ntfyMessage.value = "";
ntfyClickAction.value = "";
}
// attachment & click
if (!titleEnabled && attachmentEnabled && clickEnabled) {
sendAttachClick(ntfyEndpoint, ntfyMessage.value, ntfyAttach.value, ntfyClickAction.value);
ntfyAttach.value = "";
ntfyMessage.value = "";
ntfyClickAction.value = "";
}
// all three
if (titleEnabled && attachmentEnabled && clickEnabled) {
sendAll(
ntfyEndpoint,
ntfyTitle.value,
ntfyMessage.value,
ntfyAttach.value,
ntfyClickAction.value
);
ntfyTitle.value = "";
ntfyMessage.value = "";
ntfyAttach.value = "";
ntfyClickAction.value = "";
}
// none
else {
sendNone(ntfyEndpoint, ntfyMessage.value);
ntfyMessage.value = "";
}
}