diff options
Diffstat (limited to 'src/pages')
-rw-r--r-- | src/pages/background/background.js | 40 | ||||
-rw-r--r-- | src/pages/options/youtube/youtube.html | 5 | ||||
-rw-r--r-- | src/pages/options/youtube/youtube.js | 26 |
3 files changed, 50 insertions, 21 deletions
diff --git a/src/pages/background/background.js b/src/pages/background/background.js index 50b054ec..1ae7be17 100644 --- a/src/pages/background/background.js +++ b/src/pages/background/background.js @@ -36,6 +36,8 @@ wholeInit(); browser.storage.onChanged.addListener(wholeInit); +let bybassTabs = []; + browser.webRequest.onBeforeRequest.addListener( (details) => { const url = new URL(details.url); @@ -49,36 +51,43 @@ browser.webRequest.onBeforeRequest.addListener( if (exceptionsHelper.isException(url, initiator)) newUrl = null; - else if (youtubeMusicHelper.isYoutubeMusic(url, initiator)) newUrl = youtubeMusicHelper.redirect(url, details.type) - else if (youtubeHelper.isYoutube(url, initiator)) newUrl = youtubeHelper.redirect(url, details.type, details) + if (!newUrl) newUrl = youtubeHelper.redirect(url, details, initiator) + if (youtubeMusicHelper.isYoutubeMusic(url, initiator)) newUrl = youtubeMusicHelper.redirect(url, details.type) - else if (twitterHelper.isTwitter(url, initiator)) newUrl = twitterHelper.redirect(url); + if (twitterHelper.isTwitter(url, initiator)) newUrl = twitterHelper.redirect(url); - else if (instagramHelper.isInstagram(url, initiator)) newUrl = instagramHelper.redirect(url, details.type); + if (instagramHelper.isInstagram(url, initiator)) newUrl = instagramHelper.redirect(url, details.type); - else if (mapsHelper.isMaps(url, initiator)) newUrl = mapsHelper.redirect(url); + if (mapsHelper.isMaps(url, initiator)) newUrl = mapsHelper.redirect(url); - else if (redditHelper.isReddit(url, initiator)) newUrl = redditHelper.redirect(url, details.type); + if (redditHelper.isReddit(url, initiator)) newUrl = redditHelper.redirect(url, details.type); - else if (mediumHelper.isMedium(url, initiator)) newUrl = mediumHelper.redirect(url, details.type); + if (mediumHelper.isMedium(url, initiator)) newUrl = mediumHelper.redirect(url, details.type); - else if (imgurHelper.isImgur(url, initiator)) newUrl = imgurHelper.redirect(url, details.type); + if (imgurHelper.isImgur(url, initiator)) newUrl = imgurHelper.redirect(url, details.type); - else if (tiktokHelper.isTiktok(url, initiator)) newUrl = tiktokHelper.redirect(url, details.type); + if (tiktokHelper.isTiktok(url, initiator)) newUrl = tiktokHelper.redirect(url, details.type); - else if (translateHelper.isTranslate(url, initiator)) newUrl = translateHelper.redirect(url); + if (translateHelper.isTranslate(url, initiator)) newUrl = translateHelper.redirect(url); - else if (searchHelper.isSearch(url)) newUrl = searchHelper.redirect(url) + if (searchHelper.isSearch(url)) newUrl = searchHelper.redirect(url) - else if (wikipediaHelper.isWikipedia(url, initiator)) newUrl = wikipediaHelper.redirect(url); + if (wikipediaHelper.isWikipedia(url, initiator)) newUrl = wikipediaHelper.redirect(url); if (youtubeHelper.isPipedorInvidious(newUrl ?? url, details.type)) newUrl = youtubeHelper.addUrlParams(newUrl ?? url); + if (bybassTabs.includes(details.tabId)) newUrl = null; + if (newUrl) { if (newUrl == 'CANCEL') { console.log(`Canceled ${url}`); return { cancel: true }; } + else if (newUrl == 'BYBASSTAB') { + console.log(`Bybassed ${details.tabId}`); + bybassTabs.push(details.tabId); + return null; + } else { console.info("Redirecting", url.href, "=>", newUrl); return { redirectUrl: newUrl }; @@ -90,6 +99,13 @@ browser.webRequest.onBeforeRequest.addListener( ["blocking"] ); +browser.tabs.onRemoved.addListener((tabId) => { + let index = bybassTabs.indexOf(tabId); + if (index > -1) bybassTabs.splice(index, 1); + console.log("Removed bybassTabs", tabId); +}); + + browser.tabs.onUpdated.addListener( (tabId, changeInfo) => { if (changeInfo.url && youtubeHelper.isUrlPipedorInvidious(changeInfo.url)) diff --git a/src/pages/options/youtube/youtube.html b/src/pages/options/youtube/youtube.html index 4aa75f22..1d629b2f 100644 --- a/src/pages/options/youtube/youtube.html +++ b/src/pages/options/youtube/youtube.html @@ -167,6 +167,11 @@ </div> <div class="some-block option-block"> + <h4>Bypass Watch On YouTube</h4> + <input id="bypass-watch-on-youtube" type="checkbox" checked /> + </div> + + <div class="some-block option-block"> <h4>Volume: <span id="volume-value">50%</span></h4> <input id="invidious-volume" name="invidious-volume" type="range" min="0" max="100" step="1" /> <button type="button" class="default" id="clear-invidious-volume"> diff --git a/src/pages/options/youtube/youtube.js b/src/pages/options/youtube/youtube.js index e535e5de..e2aaf5ae 100644 --- a/src/pages/options/youtube/youtube.js +++ b/src/pages/options/youtube/youtube.js @@ -9,6 +9,8 @@ let invidiousPipedDivElement = document.getElementById("invidious-piped"); let freetubeYatteDivElement = document.getElementById("freetube-yatte"); + + function changeFrontendsSettings(frontend) { if (frontend == 'piped') { invidiousPipedDivElement.style.display = 'block' @@ -27,6 +29,7 @@ function changeFrontendsSettings(frontend) { pipedDivElement.style.display = 'none'; invidiousDivElement.style.display = 'none'; freetubeYatteDivElement.style.display = 'block'; + changeYoutubeEmbedFrontendsSettings(youtubeHelper.getYoutubeEmbedFrontend()); } } @@ -48,17 +51,16 @@ function changeYoutubeEmbedFrontendsSettings(youtubeEmbedFrontend) { } } youtubeFrontendElement.addEventListener("change", - (event) => { + event => { let frontend = event.target.options[youtubeFrontendElement.selectedIndex].value youtubeHelper.setFrontend(frontend); changeFrontendsSettings(frontend); - changeYoutubeEmbedFrontendsSettings(youtubeHelper.getYoutubeEmbedFrontend()); } ); let youtubeEmbedFrontendElement = document.getElementById("youtube-embed-frontend"); youtubeEmbedFrontendElement.addEventListener("change", - (event) => { + event => { let youtubeEmbedFrontend = event.target.options[youtubeEmbedFrontendElement.selectedIndex].value youtubeHelper.setYoutubeEmbedFrontend(youtubeEmbedFrontend); changeYoutubeEmbedFrontendsSettings(youtubeEmbedFrontend); @@ -66,12 +68,12 @@ youtubeEmbedFrontendElement.addEventListener("change", ); disableYoutubeElement.addEventListener("change", - (event) => youtubeHelper.setDisable(!event.target.checked) + event => youtubeHelper.setDisable(!event.target.checked) ); let themeElement = document.getElementById("invidious-theme"); themeElement.addEventListener("change", - (event) => youtubeHelper.setTheme(event.target.options[themeElement.selectedIndex].value) + event => youtubeHelper.setTheme(event.target.options[themeElement.selectedIndex].value) ); let volumeElement = document.getElementById("invidious-volume"); @@ -93,22 +95,27 @@ invidiousClearVolumeElement.addEventListener("click", let autoplayElement = document.getElementById("invidious-autoplay"); autoplayElement.addEventListener("change", - (event) => youtubeHelper.setAutoplay(event.target.options[autoplayElement.selectedIndex].value) + event => youtubeHelper.setAutoplay(event.target.options[autoplayElement.selectedIndex].value) ); let OnlyEmbeddedVideoElement = document.getElementById("only-embed"); OnlyEmbeddedVideoElement.addEventListener("change", - (event) => youtubeHelper.setOnlyEmbeddedVideo(event.target.options[OnlyEmbeddedVideoElement.selectedIndex].value) + event => youtubeHelper.setOnlyEmbeddedVideo(event.target.options[OnlyEmbeddedVideoElement.selectedIndex].value) ); let alwaysUsePreferredElement = document.getElementById("always-use-preferred") alwaysUsePreferredElement.addEventListener("change", - (event) => youtubeHelper.setAlwaysusePreferred(event.target.checked) + event => youtubeHelper.setAlwaysusePreferred(event.target.checked) +); + +let bypassWatchOnYoutubeElement = document.getElementById("bypass-watch-on-youtube") +bypassWatchOnYoutubeElement.addEventListener("change", + event => youtubeHelper.setBypassWatchOnYoutube(event.target.checked) ); let protocolElement = document.getElementById("protocol") protocolElement.addEventListener("change", - (event) => { + event => { let protocol = event.target.options[protocolElement.selectedIndex].value youtubeHelper.setProtocol(protocol); changeProtocolSettings(protocol); @@ -142,6 +149,7 @@ youtubeHelper.init().then(() => { volumeValueElement.textContent = `${youtubeHelper.getVolume()}%`; OnlyEmbeddedVideoElement.value = youtubeHelper.getOnlyEmbeddedVideo(); alwaysUsePreferredElement.checked = youtubeHelper.getAlwaysusePreferred(); + bypassWatchOnYoutubeElement.checked = youtubeHelper.getBypassWatchOnYoutube(); autoplayElement.checked = youtubeHelper.getAutoplay(); let frontend = youtubeHelper.getFrontend(); youtubeFrontendElement.value = frontend; |