diff options
Diffstat (limited to 'src/assets/javascripts/helpers')
-rw-r--r-- | src/assets/javascripts/helpers/exceptions.js | 1 | ||||
-rw-r--r-- | src/assets/javascripts/helpers/youtube/youtube.js | 36 |
2 files changed, 35 insertions, 2 deletions
diff --git a/src/assets/javascripts/helpers/exceptions.js b/src/assets/javascripts/helpers/exceptions.js index 5969cc4c..7c6e4798 100644 --- a/src/assets/javascripts/helpers/exceptions.js +++ b/src/assets/javascripts/helpers/exceptions.js @@ -1,7 +1,6 @@ "use strict"; window.browser = window.browser || window.chrome; - let exceptions = { "url": [], "regex": [], diff --git a/src/assets/javascripts/helpers/youtube/youtube.js b/src/assets/javascripts/helpers/youtube/youtube.js index b10ceb76..55f18555 100644 --- a/src/assets/javascripts/helpers/youtube/youtube.js +++ b/src/assets/javascripts/helpers/youtube/youtube.js @@ -238,6 +238,28 @@ function setAlwaysusePreferred(val) { console.log("alwaysusePreferred: ", alwaysusePreferred) } +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 = `${url.protocol}//${url.host}` + 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; +} + function isYoutube(url, initiator) { if (disable) return false; if ( @@ -300,7 +322,11 @@ function isYoutube(url, initiator) { return isTargets } -function redirect(url, type) { +function redirect(url, type, details) { + if (type != "main_frame" && details.frameAncestors.length > 0 && isException(new URL(details.frameAncestors[0].url))) { + console.log(`Canceled ${url.href}`, details.frameAncestors[0].url) + return null; + } if (url.pathname.match(/iframe_api/) || url.pathname.match(/www-widgetapi/)) return null; // Don't redirect YouTube Player API. if (frontend == 'yatte' && type === "main_frame") @@ -536,6 +562,8 @@ async function init() { "youtubeEmbedFrontend", "youtubeProtocol", + + "youtubeEmbedExceptions" ], (result) => { redirects.invidious = dataJson.invidious; @@ -572,6 +600,8 @@ async function init() { alwaysusePreferred = result.alwaysusePreferred ?? true; + if (result.youtubeEmbedExceptions) exceptions = result.youtubeEmbedExceptions; + resolve(); }); }); @@ -660,5 +690,9 @@ export default { getAlwaysusePreferred, setAlwaysusePreferred, + getExceptions, + setExceptions, + isException, + init, }; |