aboutsummaryrefslogtreecommitdiffstats
path: root/src/assets
diff options
context:
space:
mode:
authorManeraKai <manerakai@protonmail.com>2022-02-25 19:43:10 +0300
committerManeraKai <manerakai@protonmail.com>2022-02-25 19:43:10 +0300
commit6ca6689936b11570a82bcffa704e8eda35223b2a (patch)
tree5e4f9ad02fcb7ba76af282a95895e4ed7cac5c2f /src/assets
parentAdded yatte #57 (diff)
downloadlibredirect-6ca6689936b11570a82bcffa704e8eda35223b2a.zip
Added youtube embed exceptions #46
Diffstat (limited to 'src/assets')
-rw-r--r--src/assets/javascripts/helpers/exceptions.js1
-rw-r--r--src/assets/javascripts/helpers/youtube/youtube.js36
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,
};