From 745c5babcf9104924631185b2ea3f235c45d270a Mon Sep 17 00:00:00 2001 From: SimonBrazell Date: Sun, 12 Jul 2020 11:26:48 +1000 Subject: Improve exceptions (whitelist), i18n (fr), etc. - Closes #69 - Closes #70 - Fixes #71 - Closes #72 - added fr l10n - Fixes #73 - Implement additional Invidious params (#66) --- assets/images/Screen Shot Chrome 1.png | Bin 0 -> 495422 bytes assets/images/Screen Shot Chrome 2.png | Bin 0 -> 882289 bytes assets/images/Screen Shot Chrome 3.png | Bin 0 -> 313416 bytes assets/images/Screen Shot Chrome 4.png | Bin 0 -> 1264130 bytes assets/images/Screen Shot Chrome 5.png | Bin 0 -> 320255 bytes assets/images/Screen Shot FF 1.png | Bin 0 -> 696755 bytes assets/images/Screen Shot FF 2.png | Bin 0 -> 3036251 bytes assets/images/Screen Shot FF 3.png | Bin 0 -> 530328 bytes assets/images/Screen Shot FF 4.png | Bin 0 -> 3646768 bytes assets/images/Screen Shot FF 5.png | Bin 0 -> 542853 bytes assets/images/amo-badge.png | Bin 0 -> 2827 bytes assets/images/buy-me-a-coffee.png | Bin 0 -> 5008 bytes assets/images/chevron-down.svg | 3 ++ assets/images/chrome-badge.png | Bin 0 -> 3762 bytes assets/images/icon128.png | Bin 0 -> 3197 bytes assets/images/icon16.png | Bin 0 -> 976 bytes assets/images/icon32.png | Bin 0 -> 1983 bytes assets/images/icon48.png | Bin 0 -> 1063 bytes assets/images/logo-small.png | Bin 0 -> 22050 bytes assets/images/logo.png | Bin 0 -> 39876 bytes assets/images/small-tile.png | Bin 0 -> 35583 bytes assets/javascript/localise.js | 19 +++++++ assets/javascript/persist-invidious-prefs.js | 30 +++++++++++ assets/javascript/remove-twitter-sw.js | 71 +++++++++++++++++++++++++++ assets/persist-invidious-prefs.js | 30 ----------- assets/remove-twitter-sw.js | 65 ------------------------ 26 files changed, 123 insertions(+), 95 deletions(-) create mode 100644 assets/images/Screen Shot Chrome 1.png create mode 100644 assets/images/Screen Shot Chrome 2.png create mode 100644 assets/images/Screen Shot Chrome 3.png create mode 100644 assets/images/Screen Shot Chrome 4.png create mode 100644 assets/images/Screen Shot Chrome 5.png create mode 100644 assets/images/Screen Shot FF 1.png create mode 100644 assets/images/Screen Shot FF 2.png create mode 100644 assets/images/Screen Shot FF 3.png create mode 100644 assets/images/Screen Shot FF 4.png create mode 100644 assets/images/Screen Shot FF 5.png create mode 100644 assets/images/amo-badge.png create mode 100644 assets/images/buy-me-a-coffee.png create mode 100644 assets/images/chevron-down.svg create mode 100644 assets/images/chrome-badge.png create mode 100644 assets/images/icon128.png create mode 100644 assets/images/icon16.png create mode 100644 assets/images/icon32.png create mode 100644 assets/images/icon48.png create mode 100644 assets/images/logo-small.png create mode 100644 assets/images/logo.png create mode 100644 assets/images/small-tile.png create mode 100644 assets/javascript/localise.js create mode 100644 assets/javascript/persist-invidious-prefs.js create mode 100644 assets/javascript/remove-twitter-sw.js delete mode 100644 assets/persist-invidious-prefs.js delete mode 100644 assets/remove-twitter-sw.js (limited to 'assets') diff --git a/assets/images/Screen Shot Chrome 1.png b/assets/images/Screen Shot Chrome 1.png new file mode 100644 index 00000000..65e18e2a Binary files /dev/null and b/assets/images/Screen Shot Chrome 1.png differ diff --git a/assets/images/Screen Shot Chrome 2.png b/assets/images/Screen Shot Chrome 2.png new file mode 100644 index 00000000..7bb98a4a Binary files /dev/null and b/assets/images/Screen Shot Chrome 2.png differ diff --git a/assets/images/Screen Shot Chrome 3.png b/assets/images/Screen Shot Chrome 3.png new file mode 100644 index 00000000..3a4fbd35 Binary files /dev/null and b/assets/images/Screen Shot Chrome 3.png differ diff --git a/assets/images/Screen Shot Chrome 4.png b/assets/images/Screen Shot Chrome 4.png new file mode 100644 index 00000000..8954e923 Binary files /dev/null and b/assets/images/Screen Shot Chrome 4.png differ diff --git a/assets/images/Screen Shot Chrome 5.png b/assets/images/Screen Shot Chrome 5.png new file mode 100644 index 00000000..bf0ffa08 Binary files /dev/null and b/assets/images/Screen Shot Chrome 5.png differ diff --git a/assets/images/Screen Shot FF 1.png b/assets/images/Screen Shot FF 1.png new file mode 100644 index 00000000..e4be8989 Binary files /dev/null and b/assets/images/Screen Shot FF 1.png differ diff --git a/assets/images/Screen Shot FF 2.png b/assets/images/Screen Shot FF 2.png new file mode 100644 index 00000000..018789a3 Binary files /dev/null and b/assets/images/Screen Shot FF 2.png differ diff --git a/assets/images/Screen Shot FF 3.png b/assets/images/Screen Shot FF 3.png new file mode 100644 index 00000000..90d28bda Binary files /dev/null and b/assets/images/Screen Shot FF 3.png differ diff --git a/assets/images/Screen Shot FF 4.png b/assets/images/Screen Shot FF 4.png new file mode 100644 index 00000000..f83e8f29 Binary files /dev/null and b/assets/images/Screen Shot FF 4.png differ diff --git a/assets/images/Screen Shot FF 5.png b/assets/images/Screen Shot FF 5.png new file mode 100644 index 00000000..fc821639 Binary files /dev/null and b/assets/images/Screen Shot FF 5.png differ diff --git a/assets/images/amo-badge.png b/assets/images/amo-badge.png new file mode 100644 index 00000000..9cb49bba Binary files /dev/null and b/assets/images/amo-badge.png differ diff --git a/assets/images/buy-me-a-coffee.png b/assets/images/buy-me-a-coffee.png new file mode 100644 index 00000000..1bb2ad61 Binary files /dev/null and b/assets/images/buy-me-a-coffee.png differ diff --git a/assets/images/chevron-down.svg b/assets/images/chevron-down.svg new file mode 100644 index 00000000..7679f267 --- /dev/null +++ b/assets/images/chevron-down.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/assets/images/chrome-badge.png b/assets/images/chrome-badge.png new file mode 100644 index 00000000..4e48b8a6 Binary files /dev/null and b/assets/images/chrome-badge.png differ diff --git a/assets/images/icon128.png b/assets/images/icon128.png new file mode 100644 index 00000000..ccd689cc Binary files /dev/null and b/assets/images/icon128.png differ diff --git a/assets/images/icon16.png b/assets/images/icon16.png new file mode 100644 index 00000000..1c510cb7 Binary files /dev/null and b/assets/images/icon16.png differ diff --git a/assets/images/icon32.png b/assets/images/icon32.png new file mode 100644 index 00000000..d001aab6 Binary files /dev/null and b/assets/images/icon32.png differ diff --git a/assets/images/icon48.png b/assets/images/icon48.png new file mode 100644 index 00000000..4ddd22eb Binary files /dev/null and b/assets/images/icon48.png differ diff --git a/assets/images/logo-small.png b/assets/images/logo-small.png new file mode 100644 index 00000000..09e50d18 Binary files /dev/null and b/assets/images/logo-small.png differ diff --git a/assets/images/logo.png b/assets/images/logo.png new file mode 100644 index 00000000..ecb3e381 Binary files /dev/null and b/assets/images/logo.png differ diff --git a/assets/images/small-tile.png b/assets/images/small-tile.png new file mode 100644 index 00000000..a3ed077b Binary files /dev/null and b/assets/images/small-tile.png differ diff --git a/assets/javascript/localise.js b/assets/javascript/localise.js new file mode 100644 index 00000000..e408025d --- /dev/null +++ b/assets/javascript/localise.js @@ -0,0 +1,19 @@ +window.browser = window.browser || window.chrome; + +function localizeHtmlPage() { + // Localize using __MSG_***__ data tags + var data = document.querySelectorAll('[data-localize]'); + + for (var i in data) if (data.hasOwnProperty(i)) { + var obj = data[i]; + var tag = obj.getAttribute('data-localize').toString(); + + var msg = tag.replace(/__MSG_(\w+)__/g, function (_match, v1) { + return v1 ? browser.i18n.getMessage(v1) : null; + }); + + if (msg && msg !== tag) obj.innerHTML = msg; + } +} + +localizeHtmlPage(); \ No newline at end of file diff --git a/assets/javascript/persist-invidious-prefs.js b/assets/javascript/persist-invidious-prefs.js new file mode 100644 index 00000000..4c13a310 --- /dev/null +++ b/assets/javascript/persist-invidious-prefs.js @@ -0,0 +1,30 @@ +'use strict'; + +window.browser = window.browser || window.chrome; + +function getCookie() { + let ca = document.cookie.split(';'); + for (let i = 0; i < ca.length; i++) { + let c = ca[i]; + while (c.charAt(0) == ' ') c = c.substring(1, c.length); + if (c.indexOf('PREFS=') == 0) { + return JSON.parse( + decodeURIComponent(c.substring('PREFS='.length, c.length)) + ) + }; + } + return {}; +} + +browser.storage.sync.get( + ['alwaysProxy', 'videoQuality', 'invidiousDarkMode', 'persistInvidiousPrefs'], + (result) => { + if (result.persistInvidiousPrefs) { + const prefs = getCookie(); + prefs.local = result.alwaysProxy; + prefs.quality = result.videoQuality; + prefs.dark_mode = result.invidiousDarkMode; + document.cookie = `PREFS=${encodeURIComponent(JSON.stringify(prefs))}`; + } + } +); \ No newline at end of file diff --git a/assets/javascript/remove-twitter-sw.js b/assets/javascript/remove-twitter-sw.js new file mode 100644 index 00000000..d9d3ce3e --- /dev/null +++ b/assets/javascript/remove-twitter-sw.js @@ -0,0 +1,71 @@ +'use strict'; + +const nitterDefault = 'https://nitter.net'; + +let disableNitter; +let nitterInstance; +let redirectBypassFlag; +let exceptions; + +window.browser = window.browser || window.chrome; + +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 || nitterDefault; + 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()) { + const redirect = redirectTwitter(url); + console.info( + 'Redirecting', `"${url.href}"`, '=>', `"${redirect}"` + ); + window.location = redirect; + } + } + } +); diff --git a/assets/persist-invidious-prefs.js b/assets/persist-invidious-prefs.js deleted file mode 100644 index 4c13a310..00000000 --- a/assets/persist-invidious-prefs.js +++ /dev/null @@ -1,30 +0,0 @@ -'use strict'; - -window.browser = window.browser || window.chrome; - -function getCookie() { - let ca = document.cookie.split(';'); - for (let i = 0; i < ca.length; i++) { - let c = ca[i]; - while (c.charAt(0) == ' ') c = c.substring(1, c.length); - if (c.indexOf('PREFS=') == 0) { - return JSON.parse( - decodeURIComponent(c.substring('PREFS='.length, c.length)) - ) - }; - } - return {}; -} - -browser.storage.sync.get( - ['alwaysProxy', 'videoQuality', 'invidiousDarkMode', 'persistInvidiousPrefs'], - (result) => { - if (result.persistInvidiousPrefs) { - const prefs = getCookie(); - prefs.local = result.alwaysProxy; - prefs.quality = result.videoQuality; - prefs.dark_mode = result.invidiousDarkMode; - document.cookie = `PREFS=${encodeURIComponent(JSON.stringify(prefs))}`; - } - } -); \ No newline at end of file diff --git a/assets/remove-twitter-sw.js b/assets/remove-twitter-sw.js deleted file mode 100644 index d1b30637..00000000 --- a/assets/remove-twitter-sw.js +++ /dev/null @@ -1,65 +0,0 @@ -'use strict'; - -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)}`; - } 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'], - (result) => { - 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/') { - registration.unregister(); - console.log('Unregistered Twitter SW', registration); - } - } - }); - const url = new URL(window.location); - if (shouldRedirect()) { - const redirect = redirectTwitter(url); - console.info( - 'Redirecting', `"${url.href}"`, '=>', `"${redirect}"` - ); - window.location = redirect; - } - } - } -); -- cgit 1.4.1