From 1c1c3cd4349535ec25d8cb98bea8dfcce65c30a6 Mon Sep 17 00:00:00 2001 From: ManeraKai Date: Sun, 19 Jun 2022 19:10:32 +0300 Subject: [PATCH] Added Twitter embed toggle #344 --- src/assets/javascripts/twitter.js | 10 ++++++++-- src/assets/javascripts/youtube/youtube.js | 4 ++-- src/pages/background/background.js | 6 +++--- src/pages/options/index.html | 12 ++++++++---- src/pages/options/widgets/general.js | 8 ++++---- src/pages/options/widgets/twitter.js | 4 ++++ src/pages/options/widgets/twitter.pug | 7 +++++++ 7 files changed, 36 insertions(+), 15 deletions(-) diff --git a/src/assets/javascripts/twitter.js b/src/assets/javascripts/twitter.js index 120ad69..28689aa 100644 --- a/src/assets/javascripts/twitter.js +++ b/src/assets/javascripts/twitter.js @@ -36,6 +36,7 @@ let disableTwitter, twitterProtocol, twitterRedirects, + twitterRedirectType, nitterNormalRedirectsChecks, nitterNormalCustomRedirects, nitterTorRedirectsChecks, @@ -48,6 +49,7 @@ function init() { "disableTwitter", "twitterProtocol", "twitterRedirects", + "twitterRedirectType", "nitterNormalRedirectsChecks", "nitterNormalCustomRedirects", "nitterTorRedirectsChecks", @@ -57,6 +59,7 @@ function init() { disableTwitter = r.disableTwitter; twitterProtocol = r.twitterProtocol; twitterRedirects = r.twitterRedirects; + twitterRedirectType = r.twitterRedirectType; nitterNormalRedirectsChecks = r.nitterNormalRedirectsChecks; nitterNormalCustomRedirects = r.nitterNormalCustomRedirects; nitterTorRedirectsChecks = r.nitterTorRedirectsChecks; @@ -79,11 +82,13 @@ function all() { ]; } -function redirect(url, initiator) { +function redirect(url, type, initiator) { if (disableTwitter) return; if (!targets.some(rx => rx.test(url.href))) return; if (url.pathname.split("/").includes("home")) return; if (initiator && all().includes(initiator.origin)) return 'BYPASSTAB'; + if (twitterRedirectType == 'sub_frame' && type == "main_frame") return; + if (twitterRedirectType == 'main_frame' && type != "main_frame") return; let instancesList; if (twitterProtocol == 'normal') instancesList = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects]; @@ -206,7 +211,7 @@ function pasteNitterCookies() { utils.getCookiesFromStorage('nitter', checkedInstances, 'proxyVideos'); utils.getCookiesFromStorage('nitter', checkedInstances, 'muteVideos'); utils.getCookiesFromStorage('nitter', checkedInstances, 'autoplayGifs'); - + utils.getCookiesFromStorage('nitter', checkedInstances, 'replaceInstagram'); utils.getCookiesFromStorage('nitter', checkedInstances, 'replaceReddit'); utils.getCookiesFromStorage('nitter', checkedInstances, 'replaceTwitter'); @@ -231,6 +236,7 @@ function initDefaults() { disableTwitter: false, twitterRedirects: redirects, twitterProtocol: "normal", + twitterRedirectType: "both", nitterNormalRedirectsChecks: nitterNormalRedirectsChecks, nitterNormalCustomRedirects: [], diff --git a/src/assets/javascripts/youtube/youtube.js b/src/assets/javascripts/youtube/youtube.js index 39b48e0..a191603 100644 --- a/src/assets/javascripts/youtube/youtube.js +++ b/src/assets/javascripts/youtube/youtube.js @@ -169,8 +169,8 @@ function redirect(url, details, initiator) { const sub_frame = details.type === "sub_frame"; if (url.pathname.match(/iframe_api/) || url.pathname.match(/www-widgetapi/)) return; // Don't redirect YouTube Player API. - if (onlyEmbeddedVideo == 'onlyEmbedded' && !sub_frame) return; - if (onlyEmbeddedVideo == 'onlyNotEmbedded' && sub_frame) return; + if (onlyEmbeddedVideo == 'onlyEmbedded' && main_frame) return; + if (onlyEmbeddedVideo == 'onlyNotEmbedded' && !main_frame) return; if ((isFreetube || isYatte) && sub_frame && isFrontendYoutube) return; diff --git a/src/pages/background/background.js b/src/pages/background/background.js index 5b2924a..5fef360 100644 --- a/src/pages/background/background.js +++ b/src/pages/background/background.js @@ -59,7 +59,7 @@ browser.runtime.onInstalled.addListener( }); }) }; - function initDefault(){ + function initDefault() { } @@ -103,7 +103,7 @@ browser.webRequest.onBeforeRequest.addListener( let newUrl = youtubeMusicHelper.redirect(url, details.type) if (!newUrl) newUrl = youtubeHelper.redirect(url, details, initiator) - if (!newUrl) newUrl = twitterHelper.redirect(url, initiator); + if (!newUrl) newUrl = twitterHelper.redirect(url, details.type, initiator); if (!newUrl) newUrl = instagramHelper.redirect(url, details.type, initiator); if (!newUrl) newUrl = mapsHelper.redirect(url, initiator); if (!newUrl) newUrl = redditHelper.redirect(url, details.type, initiator); @@ -160,7 +160,7 @@ browser.tabs.onRemoved.addListener( browser.webRequest.onHeadersReceived.addListener( e => { let response = youtubeHelper.removeXFrameOptions(e); - if (!response) response = twitterHelper.removeXFrameOptions(e); + if (!response) response = twitterHelper.removeXFrameOptions(e); return response; }, { urls: [""] }, diff --git a/src/pages/options/index.html b/src/pages/options/index.html index 9e31851..2463c36 100644 --- a/src/pages/options/index.html +++ b/src/pages/options/index.html @@ -70,10 +70,6 @@ -
-

Tor Browser

- -

@@ -525,6 +521,14 @@
+
+

Redirect Type

+ +

diff --git a/src/pages/options/widgets/general.js b/src/pages/options/widgets/general.js index 0daeb90..04568aa 100644 --- a/src/pages/options/widgets/general.js +++ b/src/pages/options/widgets/general.js @@ -180,20 +180,20 @@ for (const frontend of generalHelper.allPopupFrontends) } ) -const firstPartyIsolate = document.getElementById('firstPartyIsolate'); -firstPartyIsolate.addEventListener("change", () => browser.storage.local.set({ firstPartyIsolate: firstPartyIsolate.checked })) +// const firstPartyIsolate = document.getElementById('firstPartyIsolate'); +// firstPartyIsolate.addEventListener("change", () => browser.storage.local.set({ firstPartyIsolate: firstPartyIsolate.checked })) browser.storage.local.get( [ 'theme', 'autoRedirect', 'exceptions', - 'firstPartyIsolate' + // 'firstPartyIsolate' ], r => { autoRedirectElement.checked = r.autoRedirect; themeElement.value = r.theme; - firstPartyIsolate.checked = r.firstPartyIsolate; + // firstPartyIsolate.checked = r.firstPartyIsolate; instanceTypeElement.addEventListener("change", event => { diff --git a/src/pages/options/widgets/twitter.js b/src/pages/options/widgets/twitter.js index 2535673..aff108c 100644 --- a/src/pages/options/widgets/twitter.js +++ b/src/pages/options/widgets/twitter.js @@ -2,6 +2,7 @@ import utils from "../../../assets/javascripts/utils.js"; const enable = document.getElementById("twitter-enable"); const protocol = document.getElementById("twitter-protocol"); +const redirectType = document.getElementById("twitter-redirect_type"); const twitter = document.getElementById('twitter_page'); function changeProtocolSettings() { @@ -21,10 +22,12 @@ browser.storage.local.get( [ "disableTwitter", "twitterProtocol", + "twitterRedirectType", ], r => { enable.checked = !r.disableTwitter; protocol.value = r.twitterProtocol; + redirectType.value = r.twitterRedirectType; changeProtocolSettings(); } ) @@ -33,6 +36,7 @@ twitter.addEventListener("change", () => { browser.storage.local.set({ disableTwitter: !enable.checked, twitterProtocol: protocol.value, + twitterRedirectType: redirectType.value, }); changeProtocolSettings(); }) diff --git a/src/pages/options/widgets/twitter.pug b/src/pages/options/widgets/twitter.pug index 36835e8..c2e949c 100644 --- a/src/pages/options/widgets/twitter.pug +++ b/src/pages/options/widgets/twitter.pug @@ -12,6 +12,13 @@ section#twitter_page.option-block option(value="normal" data-localise="__MSG_normal__") Normal option(value="tor" data-localise="__MSG_tor__") Tor + .some-block.option-block + h4(data-localise="__MSG_redirectType__") Redirect Type + select#twitter-redirect_type + option(value="both" data-localise="__MSG_both__") both + option(value="sub_frame" data-localise="__MSG_onlyEmbedded__") Only Embedded + option(value="main_frame" data-localise="__MSG_onlyNotEmbedded__") Only Not Embedded + #nitter hr .normal