summaryrefslogtreecommitdiffstats
path: root/src/assets/javascripts/remove-twitter-sw.js
diff options
context:
space:
mode:
authorSimonBrazell <simon@brazell.com.au>2021-01-10 22:04:03 +1100
committerSimonBrazell <simon@brazell.com.au>2021-01-10 22:04:03 +1100
commit944f2e6ef09a1534bac061acca2e3b3a4c13b13a (patch)
tree86bbd36f9896db47b6938d098658192bd31db01e /src/assets/javascripts/remove-twitter-sw.js
parentc442c3e74bc181ca05fc510b7fcd05117ddd1afc (diff)
downloadprivacy-redirect-944f2e6ef09a1534bac061acca2e3b3a4c13b13a.tar.gz
privacy-redirect-944f2e6ef09a1534bac061acca2e3b3a4c13b13a.tar.bz2
privacy-redirect-944f2e6ef09a1534bac061acca2e3b3a4c13b13a.zip
Restructure code with helper modules, add search engine settings, & advanced settings collapsibles.
Diffstat (limited to 'src/assets/javascripts/remove-twitter-sw.js')
-rw-r--r--src/assets/javascripts/remove-twitter-sw.js89
1 files changed, 89 insertions, 0 deletions
diff --git a/src/assets/javascripts/remove-twitter-sw.js b/src/assets/javascripts/remove-twitter-sw.js
new file mode 100644
index 0000000..c39b4c9
--- /dev/null
+++ b/src/assets/javascripts/remove-twitter-sw.js
@@ -0,0 +1,89 @@
+"use strict";
+
+let disableNitter;
+let nitterInstance;
+let redirectBypassFlag;
+let exceptions;
+
+window.browser = window.browser || window.chrome;
+
+Promise.all([
+ import(browser.extension.getURL("src/assets/javascripts/helpers/common.js")),
+ import(browser.extension.getURL("src/assets/javascripts/helpers/twitter.js")),
+]).then(
+ (helpers) => {
+ let commonHelper;
+ let twitterHelper;
+ [commonHelper, twitterHelper] = helpers;
+
+ function isNotException(url) {
+ return !exceptions.some((regex) => regex.test(url.href));
+ }
+
+ function shouldRedirect(url) {
+ return (
+ !redirectBypassFlag &&
+ isNotException(url) &&
+ !disableNitter &&
+ url.host !== nitterInstance &&
+ !url.pathname.includes("/home")
+ );
+ }
+
+ function redirectTwitter(url) {
+ if (url.host.split(".")[0] === "pbs") {
+ return `${nitterInstance}/pic/${encodeURIComponent(url.href)}`;
+ } else if (url.host.split(".")[0] === "video") {
+ return `${nitterInstance}/gif/${encodeURIComponent(url.href)}`;
+ } else {
+ return `${nitterInstance}${url.pathname}${url.search}`;
+ }
+ }
+
+ browser.storage.sync.get(
+ [
+ "nitterInstance",
+ "disableNitter",
+ "removeTwitterSW",
+ "redirectBypassFlag",
+ "exceptions",
+ ],
+ (result) => {
+ redirectBypassFlag = result.redirectBypassFlag;
+ browser.storage.sync.set({
+ redirectBypassFlag: false,
+ });
+ if (!result.removeTwitterSW) {
+ disableNitter = result.disableNitter;
+ nitterInstance =
+ result.nitterInstance ||
+ commonHelper.default.getRandomInstance(
+ twitterHelper.default.redirects
+ );
+ exceptions = result.exceptions
+ ? result.exceptions.map((e) => {
+ return new RegExp(e);
+ })
+ : [];
+ navigator.serviceWorker.getRegistrations().then((registrations) => {
+ for (let registration of registrations) {
+ if (registration.scope === "https://twitter.com/") {
+ registration.unregister();
+ console.log("Unregistered Twitter SW", registration);
+ }
+ }
+ });
+ const url = new URL(window.location);
+ if (shouldRedirect(url)) {
+ const redirect = redirectTwitter(url);
+ console.info("Redirecting", `"${url.href}"`, "=>", `"${redirect}"`);
+ window.location = redirect;
+ }
+ }
+ }
+ );
+ },
+ (error) => {
+ console.error(error);
+ }
+);