aboutsummaryrefslogtreecommitdiffstats
path: root/assets
diff options
context:
space:
mode:
Diffstat (limited to 'assets')
-rw-r--r--assets/remove-twitter-sw.js21
1 files changed, 19 insertions, 2 deletions
diff --git a/assets/remove-twitter-sw.js b/assets/remove-twitter-sw.js
index 37200f1a..d1b30637 100644
--- a/assets/remove-twitter-sw.js
+++ b/assets/remove-twitter-sw.js
@@ -4,9 +4,23 @@ const nitterDefault = 'https://nitter.net';
let disableNitter;
let nitterInstance;
+let redirectBypassFlag;
+let whitelist;
window.browser = window.browser || window.chrome;
+function isNotWhitelisted(url) {
+ return !whitelist.some(regex => (regex.test(url.href)));
+}
+
+function shouldRedirect(url) {
+ return !redirectBypassFlag &&
+ isNotWhitelisted(url) &&
+ !disableNitter &&
+ url.host !== nitterInstance &&
+ !url.pathname.includes('/home');
+}
+
function redirectTwitter(url) {
if (url.host.split('.')[0] === 'pbs') {
return `${nitterInstance}/pic/${encodeURIComponent(url.href)}`;
@@ -20,13 +34,16 @@ function redirectTwitter(url) {
browser.storage.sync.get(
['nitterInstance', 'disableNitter', 'removeTwitterSW', 'redirectBypassFlag'],
(result) => {
- const redirectBypassFlag = result.redirectBypassFlag;
+ redirectBypassFlag = result.redirectBypassFlag;
browser.storage.sync.set({
redirectBypassFlag: false
});
if (!result.removeTwitterSW) {
disableNitter = result.disableNitter;
nitterInstance = result.nitterInstance || nitterDefault;
+ whitelist = result.whitelist ? result.whitelist.map(e => {
+ return new RegExp(e.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'));
+ }) : [];
navigator.serviceWorker.getRegistrations().then(registrations => {
for (let registration of registrations) {
if (registration.scope === 'https://twitter.com/') {
@@ -36,7 +53,7 @@ browser.storage.sync.get(
}
});
const url = new URL(window.location);
- if (!redirectBypassFlag && !disableNitter && url.host !== nitterInstance && !url.pathname.includes('/home')) {
+ if (shouldRedirect()) {
const redirect = redirectTwitter(url);
console.info(
'Redirecting', `"${url.href}"`, '=>', `"${redirect}"`