// ==UserScript==
// @name Wasteof Plugins
// @namespace http://tampermonkey.net/
// @version 2025-02-13
// @description It's like vendetta but not for Discord, for wasteof, and it doesn't have themes or over a hundred plugins or is the cutest client mod for wasteof, and is basically nothing like vendetta
// @author MrOwlsss
// @match https://wasteof.money/*
// @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant none
// @license MIT
// ==/UserScript==
(function() {
"dont use strict, idiot";
const pink = "#ec4899";
const purple = "#8b5cf6";
const violet = "#8b5cf6";
const green = "#22c55e";
const blue = "#3b82f6"; // yes, default blue and theme-blue are different colors
const red = "#ef4444";
const orange = "#f97316";
if (localStorage.getItem("womplugins-ele") == null) {
localStorage.setItem("womplugins-ele", "enabled")
}
function createSettingModule(id) {
const settingsElement = document.createElement("div");
const footer = document.getElementById("footer");
settingsElement.classList.add("bg-gray-100");
settingsElement.classList.add("dark:bg-gray-800");
settingsElement.classList.add("p-4");
settingsElement.classList.add("rounded-xl");
settingsElement.classList.add("my-2");
settingsElement.id = id;
document.getElementsByTagName("main")[0].insertBefore(settingsElement, footer);
return settingsElement
}
function addHeaderNode(id, content) {
const settingsElement = document.getElementById(id);
const header = document.createElement("h2");
header.classList.add("font-bold");
header.classList.add("text-2xl");
header.classList.add("mb-2");
header.innerHTML = content;
settingsElement.appendChild(header);
return settingsElement
}
function addTextNode(id, content) {
const settingsElement = document.getElementById(id);
const header = document.createElement("p");
header.innerHTML = content;
settingsElement.appendChild(header);
return settingsElement
}
function addButtonNode(id, content, colorOrID, color) {
const settingsElement = document.getElementById(id);
const button = document.createElement("button");
button.classList.add("bg-primary-500", "text-white", "block", "mt-2", "text-center", "font-bold", "p-2", "h-10", "rounded-lg", "cursor-pointer")
button.innerHTML = content;
if (colorOrID) {
if (colorOrID.startsWith("#" || "rgb(" || "rgba(")) {
button.style.background = colorOrID;
} else {
button.id = colorOrID
}
}
if (color) {
button.style.background = color;
}
settingsElement.appendChild(button);
return button;
}
function addMenuDropdown(oldid, title, newid) {
const settingsElement = document.getElementById(oldid);
const menu = document.createElement("div");
menu.classList.add("select-none");
menu.classList.add("my-2");
menu.id = newid;
menu.innerHTML = `<div id="${newid}-top" class="menuDropdown bg-white dark:bg-gray-700 p-4 mb-2 rounded-xl flex cursor-pointer hover:bg-white transition-colors bg-gray-50">
<span class="inline-block font-semibold w-full">${title}</span>
<span class="inline-block secondary-text"
><span
><svg
xmlns="http://www.w3.org/2000/svg"
class="h-5 w-5"
viewBox="0 0 20 20"
fill="currentColor"
>
<path
fill-rule="evenodd"
d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z"
clip-rule="evenodd"
></path></svg></span
></span>
</div>
<div class="bg-white dark:bg-gray-700 p-4 rounded-xl" id="${newid}-menu">
<div id="${newid}-content" class="menuDropdownMenu">
<span class="block">
</span>
</div>
</div>
`;
settingsElement.appendChild(menu);
document.getElementById(`${newid}-top`).onclick = function () { if (opened) { document.getElementById(`${newid}-menu`).style.display = "none"; opened = false; } else { document.getElementById(`${newid}-menu`).style.display = "block"; opened = true } }
document.getElementById(`${newid}-menu`).style.display = "none";
let opened = false;
console.log(oldid)
if (document.getElementById(oldid).classList.contains("menuDropdownMenu")) {
document.getElementById(`${newid}-top`).classList.add("dark:bg-gray-800");
document.getElementById(`${newid}-menu`).classList.add("dark:bg-gray-800");
}
return menu
}
// window.setInterval(() => {
if (window.location.href == "https://wasteof.money/settings") {
// if (!document.getElementById("plugins")) {
console.log("g")
document.getElementsByClassName("w-full")[13].id = "footer";
createSettingModule("plugins");
addHeaderNode("plugins", "Wasteof Plugins");
addMenuDropdown("plugins", "Wasteof Plugins", "womplugins");
addHeaderNode("womplugins-content", "Wasteof Plugins");
addTextNode("womplugins-content", "Wasteof Plugins Base");
addTextNode("womplugins-content", "<b>By</b> MrOwlsss");
addTextNode("womplugins-content", "<b>Version</b> 1.3");
addHeaderNode("womplugins-content", "<br>Settings");
addMenuDropdown("womplugins-content", "Element API", "womplugins-ele");
addHeaderNode("womplugins-ele-content", "Element API");
addTextNode("womplugins-ele-content", "This will literally break most plugins if disabled");
addButtonNode("womplugins-ele-content", "Enable", "womplugins-eleonoff")
addMenuDropdown("plugins", "Leaderboard Pin", "lbpin");
addHeaderNode("lbpin-content", "Leaderboard Pin");
addTextNode("lbpin-content", "The original. Pins the Leaderboard post to the top of the feed");
addTextNode("lbpin-content", "<b>By</b> MrOwlsss");
addTextNode("lbpin-content", "<b>Version</b> 1.0");
addButtonNode("lbpin-content", "Enable", "lbpinonoff");
addMenuDropdown("plugins", "More Images", "more-images");
addHeaderNode("more-images-content", "More Images");
addTextNode("more-images-content", "Adds another way to embed images in Wasteof");
addTextNode("more-images-content", "<b>By</b> MrOwlsss");
addTextNode("more-images-content", "<b>Version</b> 1.0");
addButtonNode("more-images-content", "Enable", "more-imagesonoff")
addMenuDropdown("plugins", "Wasteof Tweaks", "wasteof-tweaks");
addHeaderNode("wasteof-tweaks-content", "Wasteof Tweaks");
addTextNode("wasteof-tweaks-content", "Like Vanilla Tweaks for Minecraft but for Wasteof");
addTextNode("wasteof-tweaks-content", "<b>By</b> MrOwlsss");
addTextNode("wasteof-tweaks-content", "<b>Version</b> 1.0");
addButtonNode("wasteof-tweaks-content", "Enable", "wasteof-tweaksonoff")
addHeaderNode("wasteof-tweaks-content", "<br>Settings");
//Settings!//
addMenuDropdown("wasteof-tweaks-content", "More Badges", "wasteof-tweaks-mbs");
addHeaderNode("wasteof-tweaks-mbs-content", "More User Badges");
addTextNode("wasteof-tweaks-mbs-content", "Adds more badges to user pages");
addButtonNode("wasteof-tweaks-mbs-content", "Enable", "wasteof-tweaks-mbsonoff")
addMenuDropdown("wasteof-tweaks-content", "Search Bar in Topnav", "wasteof-tweaks-sbtn");
addHeaderNode("wasteof-tweaks-sbtn-content", "Search Bar in Topnav");
addTextNode("wasteof-tweaks-sbtn-content", "Adds the Wasteof search bar in the top navigation bar.");
addButtonNode("wasteof-tweaks-sbtn-content", "Enable", "wasteof-tweaks-sbtnonoff")
addMenuDropdown("wasteof-tweaks-content", "Hashtag Support", "wasteof-tweaks-hts");
addHeaderNode("wasteof-tweaks-hts-content", "Hashtag Support");
addTextNode("wasteof-tweaks-hts-content", "Enables hashtag (#) support to Wasteof");
addButtonNode("wasteof-tweaks-hts-content", "Enable", "wasteof-tweaks-htsonoff")
addMenuDropdown("plugins", "Push Notification Count", "pushNotifCount");
addHeaderNode("pushNotifCount-content", "Push Notification Count");
addTextNode("pushNotifCount-content", "Will give you desktop notifications when you receive a notification (assuming Wasteof is open)");
addTextNode("pushNotifCount-content", "<b>By</b> MrOwlsss");
addTextNode("pushNotifCount-content", "<b>Version</b> 1.0");
addButtonNode("pushNotifCount-content", "Enable", "pushNotifCountonoff")
addMenuDropdown("plugins", "Custom CSS", "custom-css");
addHeaderNode("custom-css-content", "Custom CSS");
addTextNode("custom-css-content", "Theme Wasteof your own way! Requires knowlege of CSS.");
addTextNode("custom-css-content", "<b>By</b> MrOwlsss");
addTextNode("custom-css-content", "<b>Version</b> 1.0");
addButtonNode("custom-css-content", "Enable", "custom-cssonoff")
addButtonNode("custom-css-content", "Edit CSS", "custom-css-edit", orange)
// addMenuDropdown("plugins", "Sideload Plugins", "sideloadPlugins");
// addHeaderNode("sideloadPlugins-content", "Push Notification Count");
// addTextNode("sideloadPlugins-content", "Allows you to sideload plugins from external sources. <b>BE SURE YOU KNOW WHAT YOU'RE DOING</b>");
// addTextNode("sideloadPlugins-content", "<b>By</b> MrOwlsss");
// addTextNode("sideloadPlugins-content", "<b>Version</b> 1.0");
// addButtonNode("sideloadPlugins-content", "Enable", "sideloadPluginsonoff")
// addButtonNode("sideloadPlugins-content", "Sideload", "sideloadAPlugins")
createSettingModule("colors");
addMenuDropdown("colors", "Colors", "thecolors");
addButtonNode("thecolors-content", "Default", "default");
addButtonNode("thecolors-content", "Pink", pink);
addButtonNode("thecolors-content", "Violet", violet);
addButtonNode("thecolors-content", "Green", green);
addButtonNode("thecolors-content", "Blue", blue);
addButtonNode("thecolors-content", "Red", red);
addButtonNode("thecolors-content", "Orange", orange);
}
// }
// // }
// }
// }, 100);
function createDialog(title, id) {
const anewDialog = document.createElement("div");
anewDialog.id = id;
anewDialog.innerHTML = `<div class="vfm vfm--inset vfm--fixed" style="z-index: 1000;" data-v-02823e40="" value="true"><div class="vfm__overlay vfm--overlay vfm--absolute vfm--inset" style="" data-v-02823e40=""></div> <div aria-expanded="true" role="dialog" aria-modal="true" tabindex="-1" class="vfm__container vfm--absolute vfm--inset vfm--outline-none flex justify-center items-center" style="" data-v-02823e40=""><div class="vfm__content relative flex flex-col max-h-full mx-4 rounded w-full h-full md:w-1/2 md:h-1/2" data-v-02823e40="" style="touch-action: none; position: relative; top: 23px; left: -159px; margin: unset;"><span id="modal-header" class="mr-8 w-full bg-primary-500 dark:bg-gray-800 text-white p-2 rounded-t-xl dark:border-t-2 dark:border-l-2 dark:border-r-2 border-gray-700 font-semibold cursor-move">${title}</span><div
class="flex-grow overflow-y-auto bg-white dark:bg-gray-900 dark:border-b-2 dark:border-l-2 dark:border-r-2 border-gray-700 p-2 flex flex-col rounded-b" id="${id}-content"></div><button onclick="document.getElementById('${id}').remove();" class="absolute top-0 right-0 mt-2 mr-2 text-white"><span><svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" viewBox="0 0 20 20" fill="currentColor">
<path fill-rule="evenodd" d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" clip-rule="evenodd"></path>
</svg></span></button> </div>`
document.body.appendChild(anewDialog)
return anewDialog;
}
//createDialog("Add account", "addAccount");
//document.getElementById("addAccount-content").innerHTML = `<p>Add an account:</p><br><input placeholder="Username"><input placeholder="Password">`;
if (window.location.href == "https://wasteof.money/settings") {
function pluginEnableDisable(plugin, warning) {
if (localStorage.getItem(plugin) == "enabled") {
document.getElementById(plugin + "onoff").style.background = "#ef4444";
document.getElementById(plugin + "onoff").innerText = "Disable";
} else {
document.getElementById(plugin + "onoff").style.background = "#22c55e";
document.getElementById(plugin + "onoff").innerText = "Enable";
}
document.getElementById(plugin + "onoff").addEventListener("click", () => {
let enabled = localStorage.getItem(plugin);
if (enabled != "enabled") {
if (warning == "usesUserToken") {
createDialog("Warning", plugin + "UUTWarnDialog");
addHeaderNode(plugin + "UUTWarnDialog-content", "This plugin uses your user token")
addTextNode(plugin + "UUTWarnDialog-content", "This plugin uses your user token, presumeably to make API calls on your behalf.<br>Are you sure you want to enable this plugin?")
addButtonNode(plugin + "UUTWarnDialog-content", "Enable", plugin + "UUTWarnButton", green);
// addTextNode(plugin + "UUTWarnDialog-content", "This plugin is sideloaded and contains unreviewed code. Make sure you know what you're doing.")
addTextNode(plugin + "UUTWarnDialog-content", "This plugin has been reviewed and officially added to Wasteof Plugins.")
document.getElementById(plugin + "UUTWarnButton").addEventListener("click", () => {
document.getElementById(plugin + "onoff").style.background = "#ef4444";
document.getElementById(plugin + "onoff").innerText = "Disable";
localStorage.setItem(plugin, "enabled");
document.getElementById(plugin + "UUTWarnDialog").remove();
})
} else {
document.getElementById(plugin + "onoff").style.background = "#ef4444";
document.getElementById(plugin + "onoff").innerText = "Disable";
localStorage.setItem(plugin, "enabled");
}
} else {
document.getElementById(plugin + "onoff").style.background = "#22c55e";
document.getElementById(plugin + "onoff").innerText = "Enable ";
localStorage.setItem(plugin, "disabled");
}
});
}
pluginEnableDisable("womplugins-ele");
pluginEnableDisable("lbpin");
pluginEnableDisable("more-images");
pluginEnableDisable("wasteof-tweaks");
pluginEnableDisable("wasteof-tweaks-sbtn");
pluginEnableDisable("wasteof-tweaks-mbs");
pluginEnableDisable("wasteof-tweaks-hts");
pluginEnableDisable("pushNotifCount", "usesUserToken");
// pluginEnableDisable("sideloadPlugins");
pluginEnableDisable("custom-css");
}
//element api
window.setInterval(() => {
if (localStorage.getItem("womplugins-ele") == "enabled") {
document.getElementsByClassName("text-2xl pl-2")[0].classList.add("wasteof-logo")
document.getElementsByClassName("bg-primary-500 dark:bg-gray-800 shadow-md p-2 sticky w-full z-50 top-0")[0].classList.add("navbar")
Array.from(document.getElementsByClassName("bg-gray-100 dark:bg-gray-800 px-8 mb-4 border-2 dark:border-gray-700 rounded-xl")).forEach((p) => {
p.classList.add("post")
})
document.getElementsByClassName("flex w-full md:w-1/2 justify-center md:justify-start text-white font-extrabold")[0].classList.add("nav-left")
document.getElementsByClassName("flex w-full content-center justify-between md:w-1/2 md:justify-end")[0].classList.add("nav-right")
document.getElementsByClassName("font-bold text-4xl")[0].classList.add("feed-text")
}
}, 100)
//leaderboard pin
window.setInterval(function () {
if (window.location.href == "https://wasteof.money/" && localStorage.getItem("lbpin") == "enabled") {
if (!document.getElementById("leaderboard")) {
const leaderboard = document.createElement("div");
leaderboard.id = "leaderboard"
const postList = document.getElementsByClassName("max-w-2xl")[0];
const lastPost = document.getElementsByClassName("max-w-2xl")[0].getElementsByClassName("rounded-xl")[0];
leaderboard.classList.add("bg-gray-100");
leaderboard.classList.add("dark:bg-gray-800");
leaderboard.classList.add("px-8");
leaderboard.classList.add("border-2");
leaderboard.classList.add("dark:border-gray-700");
leaderboard.classList.add("rounded-xl");
leaderboard.style = "margin-bottom: 15px;"
const requestOptions = {
method: "GET",
redirect: "follow"
};
let postText;
let comments;
let loves;
let reposts;
const timestamp = 1666228888577;
const date = new Date(timestamp);
const monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
const year = date.getFullYear();
const month = monthNames[date.getMonth()];
const day = date.getDate();
const hours = date.getHours();
const minutes = date.getMinutes();
fetch("https://api.wasteof.money/posts/6660af119adc44a7ef3853a2", requestOptions)
.then((response) => response.text())
.then((result) => {
postText = JSON.parse(result);
return postText;
})
.then((parsedData) => {
postText = parsedData["content"];
comments = parsedData["comments"];
loves = parsedData["loves"];
reposts = parsedData["reposts"]
leaderboard.innerHTML = `<a href="/posts/6660af119adc44a7ef3853a2" class="block"><div class="w-full mt-4 mb-2 pb-1 border-b-2 dark:border-gray-700 font-semibold"><a href="/users/leaderboard" class="w-full block"><img src="https://api.wasteof.money/users/leaderboard/picture" alt="burrito's profile picture" class="h-8 inline-block bg-white dark:border-gray-700 rounded-full border-2"> <span class="ml-1 inline-block theme-indigo">
@leaderboard
<span class="inline-flex h-2 w-2 rounded-full bg-primary-500 ml-1"></span> <!----></span></a></div> <span class="prose dark:prose-light max-w-none break-words"><details><summary>Leaderboard</summary>${postText}</details></span> <!----> <!----> <div class="mt-3 mb-5"><span class="block mb-2 secondary-text italic">
Jun 5, 2024, 1:31 PM
<span class="cursor-pointer"></span> <!----></span> <div class="select-none"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="inline h-5 w-5 cursor-pointer active:scale-125 active:text-red-400 hover:scale-110 transition"><path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path></svg> <span class="mr-2">${loves}</span> <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 24 24" class="inline h-5 w-5 cursor-pointer active:scale-125 active:text-yellow-400 hover:scale-110 transition"><path d="M11.6 3.4l-.8-.8c-.5-.6-.4-1.5.3-1.8.4-.3 1-.2 1.4.2a509.8 509.8 0 012.7 2.7c.5.4.5 1.2.1 1.6l-2.8 2.9c-.5.5-1.3.5-1.8-.1-.3-.5-.2-1 .2-1.5l.8-1H7a4.3 4.3 0 00-4.1 4.7 2036.2 2036.2 0 01.2 8h2.4c.5 0 .8.2 1 .6.2.4.2.9 0 1.2-.2.4-.6.6-1 .6H1.8c-.7 0-1.2-.5-1.2-1.1v-.2V10c0-1.3.3-2.5 1-3.6 1.3-2 3.2-3 5.6-3h4.4zM12.3 18.3h4.6c2.3 0 4.2-2 4.2-4.3V5.9c0-.2 0-.2-.2-.2h-2.3c-.6 0-1-.3-1.2-.8a1.2 1.2 0 011.1-1.6h3.6c.8 0 1.3.5 1.3 1.3v9c0 1.1-.1 2.2-.6 3.2a6.4 6.4 0 01-5.6 3.7l-4.6.1h-.2l.7.8c.4.4.5.9.3 1.3-.3.8-1.3 1-1.9.4L9 20.6l-.4-.5c-.3-.4-.3-1 0-1.4l2.9-3c.6-.6 1.7-.3 2 .6 0 .4 0 .7-.3 1l-.9 1z" fill="currentColor"></path></svg> <span class="mr-2">${reposts}</span> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="inline h-5 w-5"><path fill-rule="evenodd" d="M18 13V5a2 2 0 00-2-2H4a2 2 0 00-2 2v8a2 2 0 002 2h3l3 3 3-3h3a2 2 0 002-2zM5 7a1 1 0 011-1h8a1 1 0 110 2H6a1 1 0 01-1-1zm1 3a1 1 0 100 2h3a1 1 0 100-2H6z" clip-rule="evenodd"></path></svg> <span>${comments}</span> <span class="float-right relative inline-block z-20"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="h-5 w-5 cursor-pointer"><path d="M6 10a2 2 0 11-4 0 2 2 0 014 0zM12 10a2 2 0 11-4 0 2 2 0 014 0zM16 12a2 2 0 100-4 2 2 0 000 4z"></path></svg> <!----></span></div></div></a> <div class="v-portal" style="display: none;"></div></div>`;
})
.catch((error) => console.error(error));
postList.insertBefore(leaderboard, lastPost);
}
}
}, 100)
//more images
if (localStorage.getItem("more-images") == "enabled") {
window.setInterval(() => {
let pElements = Array.from(document.getElementsByTagName("p"));
pElements.forEach((ele) => {
const pText = ele.innerText;
if (pText.startsWith("{img}") && ele.parentElement.contentEditable != "true") {
console.log("more image code");
const imgURL = pText.slice(5);
const newImg = document.createElement("img");
newImg.src = imgURL;
ele.innerText = "";
ele.appendChild(newImg);
ele.style.maxHeight = "250px";
ele.style.maxWidth = "250px";
}
})
}, 100);
}
//custom css
if (localStorage.getItem("custom-css") == "enabled") {
setInterval(() => {
if (!document.getElementById("customWOMCSS")) {
const cCSS = document.createElement("style");
cCSS.innerText = localStorage.getItem("customCSS");
cCSS.id = "customWOMCSS";
document.body.appendChild(cCSS);
}
}, 100)
}
if (window.location.href == "https://wasteof.money/settings") {
document.querySelector("#custom-css-edit").addEventListener("click", () => {
let cssdialog = createDialog("Edit Custom CSS", "editccss");
const cssInput = document.createElement("textarea");
cssInput.classList.add("text-input")
cssInput.id = "cssinput";
cssInput.value = localStorage.getItem("customCSS");
document.querySelector("#editccss-content").appendChild(cssInput)
let savebutton = addButtonNode("editccss-content", "Save", green);
savebutton.style.width = "60px";
savebutton.onclick = ()=> {
localStorage.setItem("customCSS", cssInput.value);
cssdialog.remove();
document.querySelector("#customWOMCSS").innerText = localStorage.getItem("customCSS");
}
})
}
//wasteof tweaks
if (localStorage.getItem("wasteof-tweaks") == "enabled") {
if (localStorage.getItem("wasteof-tweaks-mbs") == "enabled") {
window.setInterval(() => {
if (document.location.pathname.split("/")[1] == "users") {
if (document.location.pathname == "/users/owenathletic" || document.location.pathname == "/users/markovmoney" || document.location.pathname == "/users/amyathletic") {
if (document.getElementById("BotIndicator")) {
} else {
const botIndicator = document.createElement("span");
const themeDot = document.getElementsByClassName("md:text-4xl")[0];
botIndicator.id = "BotIndicator"
botIndicator.innerHTML = `<svg fill-rule="evenodd" xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" viewBox="0 0 24 24" fill="currentColor"><path d="M17.5 15.5C17.5 16.61 16.61 17.5 15.5 17.5S13.5 16.61 13.5 15.5 14.4 13.5 15.5 13.5 17.5 14.4 17.5 15.5M8.5 13.5C7.4 13.5 6.5 14.4 6.5 15.5S7.4 17.5 8.5 17.5 10.5 16.61 10.5 15.5 9.61 13.5 8.5 13.5M23 15V18C23 18.55 22.55 19 22 19H21V20C21 21.11 20.11 22 19 22H5C3.9 22 3 21.11 3 20V19H2C1.45 19 1 18.55 1 18V15C1 14.45 1.45 14 2 14H3C3 10.13 6.13 7 10 7H11V5.73C10.4 5.39 10 4.74 10 4C10 2.9 10.9 2 12 2S14 2.9 14 4C14 4.74 13.6 5.39 13 5.73V7H14C17.87 7 21 10.13 21 14H22C22.55 14 23 14.45 23 15M21 16H19V14C19 11.24 16.76 9 14 9H10C7.24 9 5 11.24 5 14V16H3V17H5V20H19V17H21V16Z"></path></svg>`;
botIndicator.classList.add("inline-block", "text-primary-500", "dark:text-primary-300");
botIndicator.title = "AI/Bot";
themeDot.appendChild(botIndicator);
}
}
let joinedText = document.getElementsByClassName("text-gray-400")[1].childNodes[0].title.split(" ").splice(0, 5).join(" ").split(" ");
joinedText[4] = joinedText[4].split(":").splice(0, 2).join(":");
joinedText = "Joined " + joinedText.join(" ")
document.getElementsByClassName("text-gray-400")[1].childNodes[0].innerHTML = joinedText
}
}, 20)
}
const timestamp = 1666228888577;
const date = new Date(timestamp);
const monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
const year = date.getFullYear();
const month = monthNames[date.getMonth()];
const day = date.getDate();
const hours = date.getHours();
const minutes = date.getMinutes();
//alert(`Joined ${month} ${day}, ${year}`);
if (localStorage.getItem("wasteof-tweaks-sbtn") == "enabled") {
window.setInterval(function () {
if (!document.getElementById("inlineWOMSearch")) {
const newSearch = document.createElement("div");
// newSearch.action = "/search";
// newSearch.method = "get";
newSearch.style.marginTop = "-5px"
newSearch.innerHTML = `<input style="height: 36px" id="inlineWOMSearch" type="text" placeholder="search anything..." name="q" autofocus="autofocus" class="text-input" style="margin-left: 10px;"> <button id="inlineWOMSearchButton" class="bg-primary-500 inline-block text-white font-bold mt-2 p-2 rounded-lg cursor-pointer" >search</button>`
document.getElementsByClassName("nav-left")[0].appendChild(newSearch);
document.getElementsByTagName("img")[0].style = "margin-top: 5px;"
function search() {
let searchText = document.getElementById("inlineWOMSearch").value;
if (searchText.split(":")[0] == "user") {
location.href = "/search/users?q=" + searchText.split(":")[1];
} else if (searchText.split(":")[0] == "@") {
location.href = "/users/" + searchText.split(":")[1];
} else {
location.href = "/search?q=" + searchText;
}
}
document.getElementById("inlineWOMSearchButton").addEventListener("click", function() {
search()
})
document.getElementById("inlineWOMSearch").addEventListener("keypress", function (event) {
if (event.key === "Enter") {
search()
}
});
}
})
}
if (localStorage.getItem("wasteof-tweaks-hts") == "enabled") {
window.setInterval(function () {
let pElements = Array.from(document.getElementsByTagName("p"));
pElements.forEach((element) => {
let pText = element.innerHTML.split(" ");
pText.forEach((word, index) => {
if (word.startsWith("#")) {
// console.log(word);
pText[index] = `<a href="https://wasteof.money/search?q=${encodeURIComponent(word.split("").splice(1).join(""))}&ht=yes">${word}</a>`; // Correctly replace the word
}
});
let theText = pText.join(" ");
// console.log(theText);
if (!element.hasAttribute("urlified") && element.parentElement.contentEditable != "true") {
element.innerHTML = theText; // Update the innerHTML with the new text
element.setAttribute("urlified", "true");
}
});
}, 100);
// window.setInterval(function () {
// if (document.location.pathname == "/search") {
// const queryString = window.location.search;
// const urlParams = new URLSearchParams(queryString);
// if (urlParams.get("ht")) {
// let pElements = Array.from(document.getElementsByClassName("prose"));
// pElements.forEach((element) => {
// if (!element.innerHTML.split(" ").includes(`#${urlParams.get("q")}`)) {
// element.parentElement.parentElement.remove()
// }
// });
// }
// }
// }, 100)
}
}
// push-notifs
if (localStorage.getItem("pushNotifCount") == "enabled") {
function getCookie(cname) {
let name = cname + "=";
let decodedCookie = decodeURIComponent(document.cookie);
let ca = decodedCookie.split(';');
for (let i = 0; i < ca.length; i++) {
let c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
const userAuth = getCookie("token");
let unreadCount
const myHeaders = new Headers();
myHeaders.append("Authorization", userAuth);
const requestOptions = {
method: "GET",
headers: myHeaders,
redirect: "follow"
};
window.setInterval(() => {
fetch("https://api.wasteof.money/messages/count", requestOptions)
.then((response) => response.text())
.then((result) => unreadCount = JSON.parse(result))
.then((unreadCount) => alertNotifs(unreadCount["count"]))
.catch((error) => console.error(error));
function alertNotifs(unreads) {
if (unreads > 0) {
if (localStorage.getItem("unreadCount") != unreads) {
var title = `${unreads} Notification(s)`;
var icon = 'https://wasteof.money/brand/nav-logo.svg';
var body = `You have ${unreads} notifications!`;
var notification = new Notification(title, { body, icon });
localStorage.setItem("unreadCount", unreads)
}
}
}
}, 3000)
}
})();