From 47c25762584859ae619d19b9d35ba2a8eb2c1c0b Mon Sep 17 00:00:00 2001 From: Gusted Date: Fri, 30 Apr 2021 12:57:53 +0200 Subject: [PATCH] Add USw hook to remove get stylus button This patch add an hook into the https://userstyles.world/style/* pages to watch for the Get Stylus button and removes it. As user's who already have stylus installed don't need to see this again. --- content/install-hook-userstylesworld.js | 41 +++++++++++++++++++++++++ manifest.json | 6 ++++ 2 files changed, 47 insertions(+) create mode 100644 content/install-hook-userstylesworld.js diff --git a/content/install-hook-userstylesworld.js b/content/install-hook-userstylesworld.js new file mode 100644 index 00000000..a8dbd67d --- /dev/null +++ b/content/install-hook-userstylesworld.js @@ -0,0 +1,41 @@ +/* global API */// msg.js +'use strict'; + +(() => { + function watchForStylusButton() { + // Use 1 function so we won't have duplicate code around. + const stylusQuery = () => document.querySelector("a#stylus"); + + if (!stylusQuery()) { + const stylusButtonObserver = new MutationObserver(() => { + if (stylusQuery()) { + stylusButtonObserver.disconnect(); + stylusQuery().remove(); + } + }); + stylusButtonObserver.observe(document.body, {childList: true, subtree: true}); + } else { + stylusQuery().remove(); + } + } + + // Some trickery to make sure that the DOM is ready(document.body/document.head). + // And can possibly observe it for a stylus button. + + function isDOMReady() { + return document.readyState === 'complete' || document.readyState === 'interactive'; + } + + if (!isDOMReady()) { + const onReadyStateChange = () => { + if (isDOMReady()) { + document.removeEventListener('readystatechange', onReadyStateChange); + watchForStylusButton(); + } + }; + document.addEventListener('readystatechange', onReadyStateChange); + } else { + watchForStylusButton(); + } + +})() diff --git a/manifest.json b/manifest.json index aafb0dcc..b8bdce67 100644 --- a/manifest.json +++ b/manifest.json @@ -89,6 +89,12 @@ "run_at": "document_start", "all_frames": false, "js": ["content/install-hook-openusercss.js"] + }, + { + "matches": ["https://userstyles.world/style/*"], + "run_at": "document_start", + "all_frames": false, + "js": ["content/install-hook-userstylesworld.js"] } ], "browser_action": {