From eb99449f726565764dac26ee1baa4e9e4689f078 Mon Sep 17 00:00:00 2001 From: SimonBrazell Date: Sun, 9 Feb 2020 11:08:04 +1100 Subject: Avoid redirecting `studio.youtube.com` & basic instance validation --- pages/options/options.js | 6 +++--- pages/popup/popup.html | 2 +- pages/popup/popup.js | 24 ++++++++++++++++++------ pages/styles.css | 21 +++++++++++++++++++-- 4 files changed, 41 insertions(+), 12 deletions(-) (limited to 'pages') 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 @@ Privacy Redirect logo - Version: 1.1.4 + Version:  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); } -- cgit 1.4.1