From 0e889c2d4285b3cf1767cb9b8a3957ec5392324d Mon Sep 17 00:00:00 2001 From: ManeraKai Date: Sun, 3 Apr 2022 13:55:54 +0300 Subject: [PATCH] Restructured exceptions to behave in another way #164 #161 --- package.json | 2 +- .../javascripts/helpers/youtube/youtube.js | 37 --------- src/pages/background/background.js | 16 ++-- src/pages/options/youtube/embed-exceptions.js | 79 ------------------- src/pages/options/youtube/youtube.html | 26 ------ 5 files changed, 10 insertions(+), 150 deletions(-) delete mode 100644 src/pages/options/youtube/embed-exceptions.js diff --git a/package.json b/package.json index d4a6d2f..2f8f9ab 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "npm": ">=8.1.2" }, "scripts": { - "start": "web-ext run --browser-console --source-dir ./src/ --firefox=/home/esmail/Downloads/ar/firefox/firefox", + "start": "web-ext run --browser-console --source-dir ./src/", "build": "web-ext build --overwrite-dest --source-dir ./src/", "test": "web-ext lint --source-dir ./src/ || true" }, diff --git a/src/assets/javascripts/helpers/youtube/youtube.js b/src/assets/javascripts/helpers/youtube/youtube.js index 9e88eb3..a4b6d38 100644 --- a/src/assets/javascripts/helpers/youtube/youtube.js +++ b/src/assets/javascripts/helpers/youtube/youtube.js @@ -295,28 +295,6 @@ function setBypassWatchOnYoutube(val) { console.log("bypassWatchOnYoutube: ", bypassWatchOnYoutube) } -let exceptions = { - "url": [], - "regex": [], -}; -const getExceptions = () => exceptions; -function setExceptions(val) { - exceptions = val; - browser.storage.local.set({ youtubeEmbedExceptions: val }) - console.log("youtubeEmbedExceptions: ", val) -} - -function isException(url) { - for (const item of exceptions.url) { - let protocolHost = commonHelper.protocolHost(url); - console.log(item, protocolHost) - if (item == protocolHost) return true; - } - for (const item of exceptions.regex) - if (new RegExp(item).test(url.href)) return true; - return false; -} - let alwaysUsePreferred; function redirect(url, details, initiator) { if (disable) return null; @@ -359,14 +337,6 @@ function redirect(url, details, initiator) { if (!targets.some(rx => rx.test(url.href))) return null; - if ( - details.type != "main_frame" && - details.frameAncestors && details.frameAncestors.length > 0 && - isException(new URL(details.frameAncestors[0].url)) - ) { - console.log(`Canceled ${url.href}`, details.frameAncestors[0].url) - return null; - } if ( bypassWatchOnYoutube && initiator && ( @@ -664,7 +634,6 @@ async function init() { "youtubeProtocol", - "youtubeEmbedExceptions", "bypassWatchOnYoutube" ], r => { // r = result @@ -703,8 +672,6 @@ async function init() { bypassWatchOnYoutube = r.bypassWatchOnYoutube ?? true; - if (r.youtubeEmbedExceptions) exceptions = r.youtubeEmbedExceptions; - initInvidiousCookies(); resolve(); @@ -882,9 +849,5 @@ export default { setPipedMaterialRedirects, - getExceptions, - setExceptions, - isException, - init, }; \ No newline at end of file diff --git a/src/pages/background/background.js b/src/pages/background/background.js index e54627c..650a48a 100644 --- a/src/pages/background/background.js +++ b/src/pages/background/background.js @@ -92,7 +92,12 @@ browser.webRequest.onBeforeRequest.addListener( if (!newUrl) newUrl = wikipediaHelper.redirect(url); - if (generalHelper.isException(url, initiator)) newUrl = null; + if ( + details.frameAncestors && details.frameAncestors.length > 0 && + generalHelper.isException(new URL(details.frameAncestors[0].url)) + ) newUrl = null; + + if (generalHelper.isException(url)) newUrl = null; if (BYPASSTABs.includes(details.tabId)) newUrl = null; @@ -103,15 +108,11 @@ browser.webRequest.onBeforeRequest.addListener( } else if (newUrl == 'BYPASSTAB') { console.log(`Bybassed ${details.tabId} ${url}`); - BYPASSTABs.push(details.tabId); + if (!BYPASSTABs.includes(details.tabId)) BYPASSTABs.push(details.tabId); return null; } else { console.info("Redirecting", url.href, "=>", newUrl); - // let wewe = new URL(newUrl); - // console.log("wewe", wewe.search); - // console.log("path", wewe.pathname); - // console.log("searchParams", wewe.searchParams); return { redirectUrl: newUrl }; } } @@ -206,7 +207,8 @@ browser.tabs.onUpdated.addListener( if (instagramHelper.isBibliogram(url)) instagramHelper.initBibliogramCookies(url); // if (changeInfo.url && youtubeHelper.isPipedorInvidious(url, 'main_frame', 'pipedMaterial')) youtubeHelper.initPipedMaterialLocalStorage(tabId); - }); + } +); function changeWholeInstance(url) { let newUrl = youtubeHelper.switchInstance(url); diff --git a/src/pages/options/youtube/embed-exceptions.js b/src/pages/options/youtube/embed-exceptions.js deleted file mode 100644 index 06be99c..0000000 --- a/src/pages/options/youtube/embed-exceptions.js +++ /dev/null @@ -1,79 +0,0 @@ -"use strict"; -window.browser = window.browser || window.chrome; - -import youtubeHelper from "../../../assets/javascripts/helpers/youtube/youtube.js"; - -let nameCustomInstanceInput = document.getElementById("exceptions-custom-instance"); -let instanceTypeElement = document.getElementById("exceptions-custom-instance-type"); -let instanceType = "url" - -youtubeHelper.init().then(() => { - instanceTypeElement.addEventListener("change", - (event) => { - instanceType = event.target.options[instanceTypeElement.selectedIndex].value - if (instanceType == 'url') { - nameCustomInstanceInput.setAttribute("type", "url"); - nameCustomInstanceInput.setAttribute("placeholder", "https://www.google.com"); - } - else if (instanceType == 'regex') { - nameCustomInstanceInput.setAttribute("type", "text"); - nameCustomInstanceInput.setAttribute("placeholder", "https?:\/\/(www\.|music|)youtube\.com\/watch\?v\=..*"); - } - } - ) - let exceptionsCustomInstances = youtubeHelper.getExceptions(); - function calcExceptionsCustomInstances() { - document.getElementById("exceptions-custom-checklist").innerHTML = - [...exceptionsCustomInstances.url, ...exceptionsCustomInstances.regex].map( - (x) => `
${x} -
-
` - ).join('\n'); - - for (const x of [...exceptionsCustomInstances.url, ...exceptionsCustomInstances.regex]) { - document.getElementById(`clear-${x}`).addEventListener("click", - () => { - console.log(x); - let index; - index = exceptionsCustomInstances.url.indexOf(x); - if (index > -1) - exceptionsCustomInstances.url.splice(index, 1); - else { - index = exceptionsCustomInstances.regex.indexOf(x); - if (index > -1) - exceptionsCustomInstances.regex.splice(index, 1); - } - youtubeHelper.setExceptions(exceptionsCustomInstances); - calcExceptionsCustomInstances(); - }); - } - } - calcExceptionsCustomInstances(); - document.getElementById("custom-exceptions-instance-form").addEventListener("submit", (event) => { - event.preventDefault(); - - let val - if (instanceType == 'url') { - if (nameCustomInstanceInput.validity.valid) { - let url = new URL(nameCustomInstanceInput.value); - val = `${url.protocol}//${url.host}` - if (!exceptionsCustomInstances.url.includes(val)) exceptionsCustomInstances.url.push(val) - } - } else if (instanceType == 'regex') { - val = nameCustomInstanceInput.value - if (val.trim() != '' && !exceptionsCustomInstances.regex.includes(val)) exceptionsCustomInstances.regex.push(val) - } - if (val) { - youtubeHelper.setExceptions(exceptionsCustomInstances); - console.log("exceptionsCustomInstances", exceptionsCustomInstances) - nameCustomInstanceInput.value = ''; - } - calcExceptionsCustomInstances(); - }) -}) \ No newline at end of file diff --git a/src/pages/options/youtube/youtube.html b/src/pages/options/youtube/youtube.html index fba8de6..c118694 100644 --- a/src/pages/options/youtube/youtube.html +++ b/src/pages/options/youtube/youtube.html @@ -1287,31 +1287,6 @@
- -
-

Embed Exceptions

-
-
-
-
- -   - -   -
- -
-
-
- @@ -1321,7 +1296,6 @@ -