about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--README.md4
-rw-r--r--background.js25
-rw-r--r--images/logo.pngbin31646 -> 39876 bytes
-rw-r--r--manifest.json4
-rw-r--r--pages/options/options.js6
-rw-r--r--pages/popup/popup.html2
-rw-r--r--pages/popup/popup.js24
-rw-r--r--pages/styles.css21
8 files changed, 64 insertions, 22 deletions
diff --git a/README.md b/README.md
index 515e0ebd..60cf566b 100644
--- a/README.md
+++ b/README.md
@@ -3,11 +3,11 @@
 -  [Chrome Extension](https://chrome.google.com/webstore/detail/privacy-redirect/pmcmeagblkinmogikoikkdjiligflglb)
 -  [Firefox Add-on](https://addons.mozilla.org/en-US/firefox/addon/privacy-redirect/)
 
-A simple browser extension that redirects Twitter, Youtube & Instagram requests to privacy friendly alternatives - [Nitter](https://github.com/zedeus/nitter), [Invidious](https://github.com/omarroth/invidious) & [Bibliogram](https://github.com/cloudrac3r/bibliogram).
+A simple browser extension that redirects Twitter, YouTube & Instagram requests to privacy friendly alternatives - [Nitter](https://github.com/zedeus/nitter), [Invidious](https://github.com/omarroth/invidious) & [Bibliogram](https://github.com/cloudrac3r/bibliogram).
 
 Listens for and redirects requests made to the following: 
   - **Twitter -** `twitter.com`, `www.twitter.com`, `mobile.twitter.com` 
-  - **Youtube -** `youtube.com`, `www.youtube.com`, `youtube-nocookie.com`, `www.youtube-nocookie.com`, `m.youtube.com`
+  - **YouTube -** `youtube.com`, `www.youtube.com`, `youtube-nocookie.com`, `www.youtube-nocookie.com`, `m.youtube.com`
   - **Instagram -** `instagram.com`, `www.instagram.com`, `help.instagram.com`, `about.instagram.com`.
 
 Allows for setting custom [Nitter](https://github.com/zedeus/nitter/wiki/Instances), [Invidious](https://github.com/omarroth/invidious/wiki/Invidious-Instances) & [Bibliogram](https://github.com/cloudrac3r/bibliogram/wiki/Instances) instances and toggling redirects on & off.
diff --git a/background.js b/background.js
index bf068416..5790eb5a 100644
--- a/background.js
+++ b/background.js
@@ -55,9 +55,22 @@ chrome.storage.onChanged.addListener(changes => {
   }
 });
 
-function redirectBibliogram(url) {
+function redirectYouTube(url) {
+  if (url.host.split('.')[0] === 'studio') {
+    // Avoid redirecting `studio.youtube.com`
+    return null;
+  } else {
+    return `${invidiousInstance}${url.pathname}${url.search}`;
+  }
+}
+
+function redirectTwitter(url) {
+  return `${nitterInstance}${url.pathname}${url.search}`
+}
+
+function redirectInstagram(url) {
   if (url.pathname === '/' || url.pathname.match(instagramPathsRegex)) {
-    return bibliogramInstance + url.pathname + url.search;
+    return `${bibliogramInstance}${url.pathname}${url.search}`;
   } else {
     // Redirect user profile requests to '/u/...'
     return `${bibliogramInstance}/u${url.pathname}${url.search}`;
@@ -71,23 +84,23 @@ chrome.webRequest.onBeforeRequest.addListener(
     if (url.host.match(youtubeRegex)) {
       if (!disableInvidious) {
         redirect = {
-          redirectUrl: invidiousInstance + url.pathname + url.search
+          redirectUrl: redirectYouTube(url)
         };
       }
     } else if (url.host.match(twitterRegex)) {
       if (!disableNitter) {
         redirect = {
-          redirectUrl: nitterInstance + url.pathname + url.search
+          redirectUrl: redirectTwitter(url)
         };
       }
     } else if (url.host.match(instagramRegex)) {
       if (!disableBibliogram) {
         redirect = {
-          redirectUrl: redirectBibliogram(url)
+          redirectUrl: redirectInstagram(url)
         };
       }
     }
-    if (redirect) {
+    if (redirect && redirect.redirectUrl) {
       console.log(
         'Redirecting', `"${url.toString()}"`, '=>', `"${redirect.redirectUrl}"`
       );
diff --git a/images/logo.png b/images/logo.png
index db4030ff..ecb3e381 100644
--- a/images/logo.png
+++ b/images/logo.png
Binary files differdiff --git a/manifest.json b/manifest.json
index 48cdc435..4e4b8e42 100644
--- a/manifest.json
+++ b/manifest.json
@@ -1,7 +1,7 @@
 {
   "name": "Privacy Redirect",
-  "description": "Redirects Twitter, Youtube & Instagram requests to privacy friendly alternatives - Nitter, Invidious, & Bibliogram.",
-  "version": "1.1.5",
+  "description": "Redirects Twitter, YouTube & Instagram requests to privacy friendly alternatives - Nitter, Invidious, & Bibliogram.",
+  "version": "1.1.6",
   "manifest_version": 2,
   "background": {
     "scripts": [
diff --git a/pages/options/options.js b/pages/options/options.js
index ed9c70d6..a55d0320 100644
--- a/pages/options/options.js
+++ b/pages/options/options.js
@@ -28,9 +28,9 @@ chrome.storage.sync.get(
 
 document.querySelector('#save').addEventListener('click', () => {
   chrome.storage.sync.set({
-    nitterInstance: nitterInstance.value,
-    invidiousInstance: invidiousInstance.value,
-    bibliogramInstance: bibliogramInstance.value,
+    nitterInstance: nitterInstance.value && nitterInstance.checkValidity() ? new URL(nitterInstance.value).origin : '',
+    invidiousInstance: invidiousInstance.value && invidiousInstance.checkValidity() ? new URL(invidiousInstance.value).origin : '',
+    bibliogramInstance: bibliogramInstance.value && bibliogramInstance.checkValidity() ? new URL(bibliogramInstance.value).origin : '',
     disableNitter: !disableNitter.checked,
     disableInvidious: !disableInvidious.checked,
     disableBibliogram: !disableBibliogram.checked
diff --git a/pages/popup/popup.html b/pages/popup/popup.html
index 986fd8c5..32643aca 100644
--- a/pages/popup/popup.html
+++ b/pages/popup/popup.html
@@ -14,7 +14,7 @@
       <img src="../../images/logo.png" alt="Privacy Redirect logo">
     </div>
     <small>
-      <span>Version</span>: 1.1.4</span>
+      <span>Version:&nbsp;<span id="version"></span></span>
     </small>
   </header>
 
diff --git a/pages/popup/popup.js b/pages/popup/popup.js
index ecbaf1e7..103f07cf 100644
--- a/pages/popup/popup.js
+++ b/pages/popup/popup.js
@@ -6,6 +6,7 @@ let bibliogramInstance = document.querySelector('#bibliogramInstance');
 let disableNitter = document.querySelector('#disableNitter');
 let disableInvidious = document.querySelector('#disableInvidious');
 let disableBibliogram = document.querySelector('#disableBibliogram');
+let version = document.querySelector('#version');
 
 chrome.storage.sync.get(
   [
@@ -26,6 +27,8 @@ chrome.storage.sync.get(
   }
 );
 
+version.textContent = chrome.runtime.getManifest().version;
+
 function debounce(func, wait, immediate) {
   let timeout;
   return () => {
@@ -42,21 +45,30 @@ function debounce(func, wait, immediate) {
 };
 
 let nitterInstanceChange = debounce(() => {
-  chrome.storage.sync.set({ nitterInstance: nitterInstance.value });
+  if (nitterInstance.checkValidity()) {
+    chrome.storage.sync.set({
+      nitterInstance: nitterInstance.value ? new URL(nitterInstance.value).origin : ''
+    });
+  }
 }, 500);
-
 nitterInstance.addEventListener('input', nitterInstanceChange);
 
 let invidiousInstanceChange = debounce(() => {
-  chrome.storage.sync.set({ invidiousInstance: invidiousInstance.value });
+  if (invidiousInstance.checkValidity()) {
+    chrome.storage.sync.set({
+      invidiousInstance: invidiousInstance.value ? new URL(invidiousInstance.value).origin : ''
+    });
+  }
 }, 500);
-
 invidiousInstance.addEventListener('input', invidiousInstanceChange);
 
 let bibliogramInstanceChange = debounce(() => {
-  chrome.storage.sync.set({ bibliogramInstance: bibliogramInstance.value });
+  if (bibliogramInstance.checkValidity()) {
+    chrome.storage.sync.set({
+      bibliogramInstance: bibliogramInstance.value ? new URL(bibliogramInstance.value).origin : ''
+    });
+  }
 }, 500);
-
 bibliogramInstance.addEventListener('input', bibliogramInstanceChange);
 
 disableNitter.addEventListener('change', event => {
diff --git a/pages/styles.css b/pages/styles.css
index 5a233524..a1fa9337 100644
--- a/pages/styles.css
+++ b/pages/styles.css
@@ -5,6 +5,8 @@
   --white: #FFF;
   --active: #FF5B56;
   --space: 5px;
+  --danger: #f04141;
+  --danger-light: #F9D0D5;
 }
 
 body {
@@ -31,7 +33,7 @@ header .logo-container {
 }
 
 header .logo-container img {
-  width: 100%;
+  max-width: 100%;
 }
 
 header small {
@@ -137,10 +139,25 @@ input:checked+label:after {
   padding: 10px;
   text-align: center;
   text-decoration: none;
+  cursor: pointer;
+  -webkit-transition-duration: 0.4s;
+  transition-duration: 0.4s;
 }
 
 .button:hover {
   background-color: var(--active);
-  color: #fff
+  color: #fff;
+}
+
+.button:active {
+  background-color: var(--active);
+  box-shadow: 0 5px var(--dark-grey);
+  transform: translateY(4px);
+}
+
+input[type="url"]:invalid {
+  color: var(--danger);
+  border-color: var(--danger);
+  background-color: var(--danger-light);
 }