From 1fcbe56133cdf48949962162828e976b7132b284 Mon Sep 17 00:00:00 2001 From: LordMZTE Date: Sun, 24 Mar 2024 22:55:49 +0100 Subject: [PATCH] redo userscript --- .../tampermonkey-mzte-css/assets/header.txt | 8 --- plugins/tampermonkey-mzte-css/src/Main.hx | 7 --- .../.gitignore | 0 plugins/tampermonkey-mzte/assets/header.txt | 11 ++++ .../tampermonkey-mzte/assets/own_style.css | 15 +++++ .../assets/style.css | 0 .../build.hxml | 0 plugins/tampermonkey-mzte/src/GM.hx | 12 ++++ .../src/Macro.hx | 0 plugins/tampermonkey-mzte/src/Main.hx | 21 +++++++ .../tampermonkey-mzte/src/Notifications.hx | 17 ++++++ .../tampermonkey-mzte/src/actions/Action.hx | 14 +++++ .../src/actions/ClearCookiesAction.hx | 56 +++++++++++++++++++ .../src/actions/InfoAction.hx | 41 ++++++++++++++ .../src/actions/ToggleStyleAction.hx | 44 +++++++++++++++ 15 files changed, 231 insertions(+), 15 deletions(-) delete mode 100644 plugins/tampermonkey-mzte-css/assets/header.txt delete mode 100644 plugins/tampermonkey-mzte-css/src/Main.hx rename plugins/{tampermonkey-mzte-css => tampermonkey-mzte}/.gitignore (100%) create mode 100644 plugins/tampermonkey-mzte/assets/header.txt create mode 100644 plugins/tampermonkey-mzte/assets/own_style.css rename plugins/{tampermonkey-mzte-css => tampermonkey-mzte}/assets/style.css (100%) rename plugins/{tampermonkey-mzte-css => tampermonkey-mzte}/build.hxml (100%) create mode 100644 plugins/tampermonkey-mzte/src/GM.hx rename plugins/{tampermonkey-mzte-css => tampermonkey-mzte}/src/Macro.hx (100%) create mode 100644 plugins/tampermonkey-mzte/src/Main.hx create mode 100644 plugins/tampermonkey-mzte/src/Notifications.hx create mode 100644 plugins/tampermonkey-mzte/src/actions/Action.hx create mode 100644 plugins/tampermonkey-mzte/src/actions/ClearCookiesAction.hx create mode 100644 plugins/tampermonkey-mzte/src/actions/InfoAction.hx create mode 100644 plugins/tampermonkey-mzte/src/actions/ToggleStyleAction.hx diff --git a/plugins/tampermonkey-mzte-css/assets/header.txt b/plugins/tampermonkey-mzte-css/assets/header.txt deleted file mode 100644 index 64c4d3c..0000000 --- a/plugins/tampermonkey-mzte-css/assets/header.txt +++ /dev/null @@ -1,8 +0,0 @@ -// ==UserScript== -// @name MZTE CSS -// @version 0.1.0 -// @description Injects some CSS into every page -// @author LordMZTE -// @include * -// @run-at document-start -// ==/UserScript== diff --git a/plugins/tampermonkey-mzte-css/src/Main.hx b/plugins/tampermonkey-mzte-css/src/Main.hx deleted file mode 100644 index c8f5704..0000000 --- a/plugins/tampermonkey-mzte-css/src/Main.hx +++ /dev/null @@ -1,7 +0,0 @@ -import js.Browser; - -function main() { - var elem = Browser.document.createStyleElement(); - elem.innerHTML = Macro.fileContent("assets/style.css"); - Browser.document.addEventListener("DOMContentLoaded", () -> Browser.document.body.appendChild(elem)); -} diff --git a/plugins/tampermonkey-mzte-css/.gitignore b/plugins/tampermonkey-mzte/.gitignore similarity index 100% rename from plugins/tampermonkey-mzte-css/.gitignore rename to plugins/tampermonkey-mzte/.gitignore diff --git a/plugins/tampermonkey-mzte/assets/header.txt b/plugins/tampermonkey-mzte/assets/header.txt new file mode 100644 index 0000000..bbd99f7 --- /dev/null +++ b/plugins/tampermonkey-mzte/assets/header.txt @@ -0,0 +1,11 @@ +// ==UserScript== +// @name MZTE +// @version 0.1.0 +// @description Random stuff +// @author LordMZTE +// @include * +// @run-at document-start +// @grant GM_registerMenuCommand +// @grant GM_getValue +// @grant GM_setValue +// ==/UserScript== diff --git a/plugins/tampermonkey-mzte/assets/own_style.css b/plugins/tampermonkey-mzte/assets/own_style.css new file mode 100644 index 0000000..eab606f --- /dev/null +++ b/plugins/tampermonkey-mzte/assets/own_style.css @@ -0,0 +1,15 @@ +.tampermonkey_mzte_notif { + position: fixed; + z-index: 100000; + right: 0; + bottom: 0; + font-family: "Iosevka Nerd Font", monospace; + color: #cdd6f4; + font-size: 20px; + background-color: #1e1e2e; + margin-right: 20px; + margin-bottom: 20px; + border-style: solid; + border-width: 2px; + border-color: #f38ba8; +} diff --git a/plugins/tampermonkey-mzte-css/assets/style.css b/plugins/tampermonkey-mzte/assets/style.css similarity index 100% rename from plugins/tampermonkey-mzte-css/assets/style.css rename to plugins/tampermonkey-mzte/assets/style.css diff --git a/plugins/tampermonkey-mzte-css/build.hxml b/plugins/tampermonkey-mzte/build.hxml similarity index 100% rename from plugins/tampermonkey-mzte-css/build.hxml rename to plugins/tampermonkey-mzte/build.hxml diff --git a/plugins/tampermonkey-mzte/src/GM.hx b/plugins/tampermonkey-mzte/src/GM.hx new file mode 100644 index 0000000..0c8b875 --- /dev/null +++ b/plugins/tampermonkey-mzte/src/GM.hx @@ -0,0 +1,12 @@ +import js.html.MouseEvent; + +@:native("") extern class GM { + @:native("GM_registerMenuCommand") + static function registerMenuCommand(label:String, cb:MouseEvent->Void):Void; + + @:native("GM_getValue") + static function getValue(key:String, ?defaultValue:Dynamic):Dynamic; + + @:native("GM_setValue") + static function setValue(key:String, value:Dynamic):Void; +} diff --git a/plugins/tampermonkey-mzte-css/src/Macro.hx b/plugins/tampermonkey-mzte/src/Macro.hx similarity index 100% rename from plugins/tampermonkey-mzte-css/src/Macro.hx rename to plugins/tampermonkey-mzte/src/Macro.hx diff --git a/plugins/tampermonkey-mzte/src/Main.hx b/plugins/tampermonkey-mzte/src/Main.hx new file mode 100644 index 0000000..a87d35d --- /dev/null +++ b/plugins/tampermonkey-mzte/src/Main.hx @@ -0,0 +1,21 @@ +import js.Browser; + +function main() { + var ownStyle = Browser.document.createStyleElement(); + ownStyle.innerHTML = Macro.fileContent("assets/own_style.css"); + + var style = Browser.document.createStyleElement(); + style.innerHTML = Macro.fileContent("assets/style.css"); + + Browser.document.addEventListener("DOMContentLoaded", () -> { + Browser.document.body.appendChild(ownStyle); + + if (!actions.ToggleStyleAction.blacklist.has(Browser.window.location.hostname)) { + Browser.document.body.appendChild(style); + } + }); + + new actions.InfoAction().register(); + new actions.ToggleStyleAction(style).register(); + new actions.ClearCookiesAction().register(); +} diff --git a/plugins/tampermonkey-mzte/src/Notifications.hx b/plugins/tampermonkey-mzte/src/Notifications.hx new file mode 100644 index 0000000..9862331 --- /dev/null +++ b/plugins/tampermonkey-mzte/src/Notifications.hx @@ -0,0 +1,17 @@ +import js.Browser; +import js.html.Element; + +function show(text:String):Void { + var span = Browser.document.createSpanElement(); + span.innerText = text; + showElem(span); +} + +function showElem(elem:Element):Void { + var div = Browser.document.createDivElement(); + div.className = "tampermonkey_mzte_notif"; + div.appendChild(elem); + + Browser.document.body.appendChild(div); + Browser.window.setTimeout(div.remove, 5000); +} diff --git a/plugins/tampermonkey-mzte/src/actions/Action.hx b/plugins/tampermonkey-mzte/src/actions/Action.hx new file mode 100644 index 0000000..e08909d --- /dev/null +++ b/plugins/tampermonkey-mzte/src/actions/Action.hx @@ -0,0 +1,14 @@ +package actions; + +import js.html.MouseEvent; + +abstract class Action { + var label(get, never):String; + + public function register():Void { + GM.registerMenuCommand(this.label, this.call); + }; + + abstract function get_label():String; + abstract function call(ev: MouseEvent):Void; +} diff --git a/plugins/tampermonkey-mzte/src/actions/ClearCookiesAction.hx b/plugins/tampermonkey-mzte/src/actions/ClearCookiesAction.hx new file mode 100644 index 0000000..e965ff1 --- /dev/null +++ b/plugins/tampermonkey-mzte/src/actions/ClearCookiesAction.hx @@ -0,0 +1,56 @@ +package actions; + +import js.lib.Date; +import js.Browser; +import js.html.MouseEvent; + +class ClearCookiesAction extends Action { + public static var cookies(get, never):Array; + + public function new() {} + + function get_label():String { + return "Clear Cookies"; + } + + function call(ev:MouseEvent) { + var cks = cookies; + + var now = new Date().toUTCString(); + + for (cookie in cks) { + var key = cookie.split("=")[0]; + Browser.document.cookie = '$key=;expires=$now;path=/'; + } + + if (cks.length == 0) { + Notifications.show("No Cookies to Delete."); + return; + } + + var notifElem = Browser.document.createDivElement(); + + var labelElem = Browser.document.createParagraphElement(); + labelElem.innerText = "Deleted These Cookies:"; + notifElem.appendChild(labelElem); + + var listElem = Browser.document.createUListElement(); + listElem.setAttribute("style", "list-style-position: inside;"); + for (cookie in cks) { + var liElem = Browser.document.createLIElement(); + liElem.innerText = cookie.split("=")[0]; + + listElem.appendChild(liElem); + } + notifElem.append(listElem); + + Notifications.showElem(notifElem); + } + + static function get_cookies():Array { + return Browser.document.cookie + .split(";") + .map(StringTools.trim) + .filter(s -> s.length != 0); + } +} diff --git a/plugins/tampermonkey-mzte/src/actions/InfoAction.hx b/plugins/tampermonkey-mzte/src/actions/InfoAction.hx new file mode 100644 index 0000000..cff954a --- /dev/null +++ b/plugins/tampermonkey-mzte/src/actions/InfoAction.hx @@ -0,0 +1,41 @@ +package actions; + +import js.Browser; +import js.html.MouseEvent; + +using js.lib.HaxeIterator; + +class InfoAction extends Action { + public function new() {} + + function get_label():String { + return "Info"; + } + + function call(ev:MouseEvent) { + var divElem = Browser.document.createDivElement(); + divElem.setAttribute("style", "overflow-y:scroll;height:500px;"); + + { + var labelElem = Browser.document.createParagraphElement(); + labelElem.innerText = '${ClearCookiesAction.cookies.length} cookies'; + divElem.appendChild(labelElem); + } + + { + var labelElem = Browser.document.createParagraphElement(); + labelElem.innerText = "Style Blacklist:"; + divElem.appendChild(labelElem); + + var listElem = Browser.document.createUListElement(); + for (domain in ToggleStyleAction.blacklist.keys()) { + var liElem = Browser.document.createLIElement(); + liElem.innerText = domain; + listElem.appendChild(liElem); + } + divElem.appendChild(listElem); + } + + Notifications.showElem(divElem); + } +} diff --git a/plugins/tampermonkey-mzte/src/actions/ToggleStyleAction.hx b/plugins/tampermonkey-mzte/src/actions/ToggleStyleAction.hx new file mode 100644 index 0000000..bc9f58d --- /dev/null +++ b/plugins/tampermonkey-mzte/src/actions/ToggleStyleAction.hx @@ -0,0 +1,44 @@ +package actions; + +import js.lib.Set; +import js.Browser; +import js.html.StyleElement; +import js.html.MouseEvent; + +class ToggleStyleAction extends Action { + public static var blacklist(get, set):Set; + + static function get_blacklist():Set { + var arr:Array = GM.getValue("domainBlacklist", []); + return new Set(arr); + } + + static function set_blacklist(value:Set):Set { + GM.setValue("domainBlacklist", [for (v in value) v]); + return value; + } + + var styleElem:StyleElement; + + public function new(style_elem:StyleElement) { + this.styleElem = style_elem; + } + + function get_label():String { + return "Toggle Style"; + } + + function call(ev:MouseEvent) { + var bl = blacklist; + if (this.styleElem.parentElement == null) { + Browser.document.body.appendChild(this.styleElem); + bl.delete(Browser.window.location.hostname); + Notifications.show("Style Enabled"); + } else { + this.styleElem.remove(); + bl.add(Browser.window.location.hostname); + Notifications.show("Style Disabled"); + } + blacklist = bl; + } +}