summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.md2
-rw-r--r--assets/remove-twitter-sw.js21
-rw-r--r--background.js25
-rw-r--r--manifest.json2
-rw-r--r--pages/styles.css2
5 files changed, 35 insertions, 17 deletions
diff --git a/README.md b/README.md
index 2bb6c3a..e5ee60f 100644
--- a/README.md
+++ b/README.md
@@ -12,7 +12,7 @@ Allows for setting custom [Nitter](https://github.com/zedeus/nitter/wiki/Instanc
## Build
1. `npm install --global web-ext`
-2. `web-ext build`
+2. `web-ext build --overwrite-dest`
3. See `web-ext-artifacts/` for outputs.
## License
diff --git a/assets/remove-twitter-sw.js b/assets/remove-twitter-sw.js
index 37200f1..d1b3063 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}"`
diff --git a/background.js b/background.js
index f3a50cf..5810f42 100644
--- a/background.js
+++ b/background.js
@@ -86,7 +86,6 @@ let onlyEmbeddedVideo;
let videoQuality;
let invidiousDarkMode;
let whitelist;
-let redirectBypassFlag;
window.browser = window.browser || window.chrome;
@@ -119,7 +118,9 @@ browser.storage.sync.get(
onlyEmbeddedVideo = result.onlyEmbeddedVideo;
videoQuality = result.videoQuality;
invidiousDarkMode = result.invidiousDarkMode;
- whitelist = result.whitelist ? result.whitelist.map(e => new RegExp(e)) : [];
+ whitelist = result.whitelist ? result.whitelist.map(e => {
+ return new RegExp(e.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'));
+ }) : [];
}
);
@@ -161,10 +162,9 @@ browser.storage.onChanged.addListener(changes => {
invidiousDarkMode = changes.invidiousDarkMode.newValue;
}
if ('whitelist' in changes) {
- whitelist = changes.whitelist.newValue.map(e => new RegExp(e));
- }
- if ('redirectBypassFlag' in changes) {
- redirectBypassFlag = changes.redirectBypassFlag.newValue;
+ whitelist = changes.whitelist.newValue.map(e => {
+ return new RegExp(e.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'));
+ });
}
});
@@ -194,8 +194,9 @@ function addressToLatLng(address, callback) {
xmlhttp.send();
}
-function isWhitelisted(initiator) {
- return initiator && whitelist.some(regex => (regex.test(initiator.href)));
+function isWhitelisted(url, initiator) {
+ return whitelist.some(regex => (regex.test(url.href))) ||
+ (initiator && whitelist.some(regex => (regex.test(initiator.href))));
}
function isFirefox() {
@@ -203,7 +204,7 @@ function isFirefox() {
}
function redirectYouTube(url, initiator, type) {
- if (disableInvidious || isWhitelisted(initiator)) {
+ if (disableInvidious || isWhitelisted(url, initiator)) {
return null;
}
if (initiator && (initiator.origin === invidiousInstance || youtubeDomains.includes(initiator.host))) {
@@ -234,7 +235,7 @@ function redirectYouTube(url, initiator, type) {
}
function redirectTwitter(url, initiator) {
- if (disableNitter || isWhitelisted(initiator)) {
+ if (disableNitter || isWhitelisted(url, initiator)) {
return null;
}
if (url.pathname.includes('/home')) {
@@ -258,7 +259,7 @@ function redirectTwitter(url, initiator) {
}
function redirectInstagram(url, initiator, type) {
- if (disableBibliogram || isWhitelisted(initiator)) {
+ if (disableBibliogram || isWhitelisted(url, initiator)) {
return null;
}
// Do not redirect Bibliogram view on Instagram links
@@ -278,7 +279,7 @@ function redirectInstagram(url, initiator, type) {
}
function redirectGoogleMaps(url, initiator) {
- if (disableOsm || isWhitelisted(initiator)) {
+ if (disableOsm || isWhitelisted(url, initiator)) {
return null;
}
let redirect;
diff --git a/manifest.json b/manifest.json
index 542c81c..b34cfc7 100644
--- a/manifest.json
+++ b/manifest.json
@@ -1,7 +1,7 @@
{
"name": "Privacy Redirect",
"description": "Redirects Twitter, YouTube, Instagram & Google Maps requests to privacy friendly alternatives.",
- "version": "1.1.33",
+ "version": "1.1.34",
"manifest_version": 2,
"background": {
"scripts": [
diff --git a/pages/styles.css b/pages/styles.css
index c00add4..d9a7e5d 100644
--- a/pages/styles.css
+++ b/pages/styles.css
@@ -316,7 +316,7 @@ li {
@media (prefers-color-scheme: light) {
- body.popup, header, h1, input, select, div.tabcontent, button.tablinks.active {
+ body.popup, header, h1, input, select, div.tabcontent, button.tablinks.active, ul {
background-color: var(--lighter);
color: var(--text-secondary);
}