From 1079e64f0d391bd4dbd63d6927c313199b81d141 Mon Sep 17 00:00:00 2001 From: ManeraKai Date: Tue, 22 Mar 2022 21:57:01 +0300 Subject: Triggering AutoRedirect on Unknown Host and other Internet connectivity errors #127 --- src/assets/javascripts/helpers/imgur.js | 2 +- src/assets/javascripts/helpers/medium.js | 2 +- src/assets/javascripts/helpers/pixiv.js | 2 +- src/assets/javascripts/helpers/reddit.js | 2 +- src/assets/javascripts/helpers/search.js | 2 +- src/assets/javascripts/helpers/sendTargets.js | 2 +- src/assets/javascripts/helpers/spotify.js | 2 +- src/assets/javascripts/helpers/tiktok.js | 2 +- src/assets/javascripts/helpers/twitter.js | 2 +- src/assets/javascripts/helpers/youtube/youtube.js | 2 +- src/assets/javascripts/helpers/youtubeMusic.js | 2 +- src/pages/background/background.js | 54 ++++++++++++++--------- 12 files changed, 44 insertions(+), 32 deletions(-) (limited to 'src') diff --git a/src/assets/javascripts/helpers/imgur.js b/src/assets/javascripts/helpers/imgur.js index 6d8028db..407a7586 100644 --- a/src/assets/javascripts/helpers/imgur.js +++ b/src/assets/javascripts/helpers/imgur.js @@ -97,7 +97,7 @@ function isImgur(url, initiator) { initiator && ([...redirects.rimgo.normal, ...rimgoNormalCustomRedirects].includes(initiator.origin) || targets.includes(initiator.host)) ) return false; - return targets.some((rx) => rx.test(url.href)); + return targets.some(rx => rx.test(url.href)); } function redirect(url, type) { diff --git a/src/assets/javascripts/helpers/medium.js b/src/assets/javascripts/helpers/medium.js index 3d002445..02d5a9b6 100644 --- a/src/assets/javascripts/helpers/medium.js +++ b/src/assets/javascripts/helpers/medium.js @@ -123,7 +123,7 @@ function redirect(url, type, initiator) { if (initiator && ([...redirects.scribe.normal, ...scribeNormalCustomRedirects].includes(initiator.origin))) return; - if (!targets.some((rx) => rx.test(url.host))) return; + if (!targets.some(rx => rx.test(url.host))) return; let instancesList; if (protocol == 'normal') instancesList = [...scribeNormalRedirectsChecks, ...scribeNormalCustomRedirects]; diff --git a/src/assets/javascripts/helpers/pixiv.js b/src/assets/javascripts/helpers/pixiv.js index 86ef6509..f965a27d 100644 --- a/src/assets/javascripts/helpers/pixiv.js +++ b/src/assets/javascripts/helpers/pixiv.js @@ -99,7 +99,7 @@ function redirect(url, type, initiator) { if (disable) return null; if (initiator && ([...redirects.pixivMoe.normal, ...pixivMoeNormalCustomRedirects].includes(initiator.origin) || targets.includes(initiator.host))) return null; - if (!targets.some((rx) => rx.test(url.href))) return null; + if (!targets.some(rx => rx.test(url.href))) return null; console.log("PixivMoe!!"); if (type != "main_frame" && type != "sub_frame") return null; diff --git a/src/assets/javascripts/helpers/reddit.js b/src/assets/javascripts/helpers/reddit.js index 1948588e..9a970a68 100644 --- a/src/assets/javascripts/helpers/reddit.js +++ b/src/assets/javascripts/helpers/reddit.js @@ -282,7 +282,7 @@ function redirect(url, type, initiator) { (isTeddit || isLibreddit) && !isCheckedLibreddit ) return switchInstance(url); - if (!targets.some((rx) => rx.test(url.href))) return null; + if (!targets.some(rx => rx.test(url.href))) return null; if ( bypassWatchOnReddit && diff --git a/src/assets/javascripts/helpers/search.js b/src/assets/javascripts/helpers/search.js index f3ae49a0..e1c3bdef 100644 --- a/src/assets/javascripts/helpers/search.js +++ b/src/assets/javascripts/helpers/search.js @@ -234,7 +234,7 @@ function initWhoogleCookies() { function redirect(url) { if (disable) return; - if (!targets.some((rx) => rx.test(url.href))) return; + if (!targets.some(rx => rx.test(url.href))) return; if (url.searchParams.has('tbm')) return; if (!url.searchParams.has('q') && url.pathname != '/') return; diff --git a/src/assets/javascripts/helpers/sendTargets.js b/src/assets/javascripts/helpers/sendTargets.js index d33bccf2..d81aa4ee 100644 --- a/src/assets/javascripts/helpers/sendTargets.js +++ b/src/assets/javascripts/helpers/sendTargets.js @@ -138,7 +138,7 @@ function redirect(url, type, initiator) { if (disable) return null; if (initiator && ([...redirects.send.normal, ...sendNormalCustomRedirects].includes(initiator.origin) || targets.includes(initiator.host))) return null; - if (!targets.some((rx) => rx.test(url.href))) return null; + if (!targets.some(rx => rx.test(url.href))) return null; if (type != "main_frame") return null; diff --git a/src/assets/javascripts/helpers/spotify.js b/src/assets/javascripts/helpers/spotify.js index 8319f9bc..a4e56f77 100644 --- a/src/assets/javascripts/helpers/spotify.js +++ b/src/assets/javascripts/helpers/spotify.js @@ -119,7 +119,7 @@ function switchInstance(url) { function redirect(url, type, initiator) { if (disable) return null; if (initiator && ([...redirects.soju.normal, ...sojuNormalCustomRedirects].includes(initiator.origin) || targets.includes(initiator.host))) return null; - if (!targets.some((rx) => rx.test(url.href))) return null; + if (!targets.some(rx => rx.test(url.href))) return null; if (type != "main_frame") return null; diff --git a/src/assets/javascripts/helpers/tiktok.js b/src/assets/javascripts/helpers/tiktok.js index 671e6427..af7e3d7d 100644 --- a/src/assets/javascripts/helpers/tiktok.js +++ b/src/assets/javascripts/helpers/tiktok.js @@ -93,7 +93,7 @@ function setProtocol(val) { function isTiktok(url, initiator) { if (disable) return false; if (initiator && ([...redirects.proxiTok.normal, ...proxiTokNormalCustomRedirects].includes(initiator.origin) || targets.includes(initiator.host))) return false; - return targets.some((rx) => rx.test(url.href)); + return targets.some(rx => rx.test(url.href)); } function redirect(url, type) { diff --git a/src/assets/javascripts/helpers/twitter.js b/src/assets/javascripts/helpers/twitter.js index 8152adf8..3ad01b7f 100644 --- a/src/assets/javascripts/helpers/twitter.js +++ b/src/assets/javascripts/helpers/twitter.js @@ -120,7 +120,7 @@ function redirect(url, initiator) { if (disable) return null; - if (!targets.some((rx) => rx.test(url.href))) return null; + if (!targets.some(rx => rx.test(url.href))) return null; if (url.pathname.split("/").includes("home")) { console.log("twitter homepage"); diff --git a/src/assets/javascripts/helpers/youtube/youtube.js b/src/assets/javascripts/helpers/youtube/youtube.js index ae57f4f6..c5b0e9d4 100644 --- a/src/assets/javascripts/helpers/youtube/youtube.js +++ b/src/assets/javascripts/helpers/youtube/youtube.js @@ -354,7 +354,7 @@ function redirect(url, details, initiator) { (isInvidious || isPiped) && !isCheckedPiped ) return switchInstance(url); - if (!targets.some((rx) => rx.test(url.href))) return null; + if (!targets.some(rx => rx.test(url.href))) return null; if ( details.type != "main_frame" && diff --git a/src/assets/javascripts/helpers/youtubeMusic.js b/src/assets/javascripts/helpers/youtubeMusic.js index df713aae..1833b101 100644 --- a/src/assets/javascripts/helpers/youtubeMusic.js +++ b/src/assets/javascripts/helpers/youtubeMusic.js @@ -58,7 +58,7 @@ function setDisable(val) { function isYoutubeMusic(url, initiator) { if (disable) return false - return targets.some((rx) => rx.test(url.href)); + return targets.some(rx => rx.test(url.href)); } function redirect(url, type) { diff --git a/src/pages/background/background.js b/src/pages/background/background.js index f8a7e54c..9b32bbdf 100644 --- a/src/pages/background/background.js +++ b/src/pages/background/background.js @@ -131,47 +131,59 @@ browser.tabs.onRemoved.addListener( } ); -browser.webRequest.onResponseStarted.addListener( - details => { - if (!generalHelper.getAutoRedirect()) return null; +function redirectOfflineInstance(url, tabId) { + let newUrl; - if (details.type == 'main_frame' && (details.statusCode == 503 || details.statusCode == 504)) { - // if (details.type == 'main_frame' && details.statusCode >= 200) { - console.log("statusCode", details.statusCode); + newUrl = youtubeHelper.switchInstance(url); + if (!newUrl) newUrl = twitterHelper.switchInstance(url); - const url = new URL(details.url); - let newUrl; + if (!newUrl) newUrl = instagramHelper.switchInstance(url); - newUrl = youtubeHelper.switchInstance(url); - if (!newUrl) newUrl = twitterHelper.switchInstance(url); + if (!newUrl) newUrl = redditHelper.switchInstance(url); - if (!newUrl) newUrl = instagramHelper.switchInstance(url); + if (!newUrl) newUrl = searchHelper.switchInstance(url); - if (!newUrl) newUrl = redditHelper.switchInstance(url); + if (!newUrl) newUrl = translateHelper.switchInstance(url); - if (!newUrl) newUrl = searchHelper.switchInstance(url); + if (!newUrl) newUrl = mediumHelper.switchInstance(url); - if (!newUrl) newUrl = translateHelper.switchInstance(url); + if (!newUrl) newUrl = imgurHelper.switchInstance(url); - if (!newUrl) newUrl = mediumHelper.switchInstance(url); + if (!newUrl) newUrl = wikipediaHelper.switchInstance(url); - if (!newUrl) newUrl = imgurHelper.switchInstance(url); + if (!newUrl) newUrl = peertubeHelper.switchInstance(url); - if (!newUrl) newUrl = wikipediaHelper.switchInstance(url); + if (!newUrl) newUrl = lbryHelper.switchInstance(url); - if (!newUrl) newUrl = peertubeHelper.switchInstance(url); + if (!newUrl) newUrl = spotifyHelper.switchInstance(url); - if (!newUrl) newUrl = lbryHelper.switchInstance(url); + if (newUrl) browser.tabs.update(tabId, { url: `/pages/errors/instance_offline.html?url=${encodeURIComponent(newUrl)}` }); +} - if (!newUrl) newUrl = spotifyHelper.switchInstance(url); +browser.webRequest.onResponseStarted.addListener( + details => { + if (!generalHelper.getAutoRedirect()) return null; - if (newUrl) browser.tabs.update(details.tabId, { url: `/pages/errors/instance_offline.html?url=${encodeURIComponent(newUrl)}` }); + if (details.type == 'main_frame' && (details.statusCode == 503 || details.statusCode == 504)) { + // if (details.type == 'main_frame' && details.statusCode >= 200) { + console.log("statusCode", details.statusCode); + const url = new URL(details.url); + redirectOfflineInstance(url, details.tabId); } }, { urls: [""], } ) +browser.webRequest.onErrorOccurred.addListener( + details => { + if (!generalHelper.getAutoRedirect()) return; + const url = new URL(details.url); + redirectOfflineInstance(url, details.tabId); + }, + { urls: [""], } +) + browser.tabs.onUpdated.addListener( (tabId, changeInfo, _) => { let url; -- cgit 1.4.1