diff --git a/src/assets/javascripts/helpers/imgur.js b/src/assets/javascripts/helpers/imgur.js index 6d8028d..407a758 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 3d00244..02d5a9b 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 86ef650..f965a27 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 1948588..9a970a6 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 f3ae49a..e1c3bde 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 d33bccf..d81aa4e 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 8319f9b..a4e56f7 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 671e642..af7e3d7 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 8152adf..3ad01b7 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 ae57f4f..c5b0e9d 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 df713aa..1833b10 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 f8a7e54..9b32bbd 100644 --- a/src/pages/background/background.js +++ b/src/pages/background/background.js @@ -131,6 +131,35 @@ browser.tabs.onRemoved.addListener( } ); +function redirectOfflineInstance(url, tabId) { + let newUrl; + + newUrl = youtubeHelper.switchInstance(url); + if (!newUrl) newUrl = twitterHelper.switchInstance(url); + + if (!newUrl) newUrl = instagramHelper.switchInstance(url); + + if (!newUrl) newUrl = redditHelper.switchInstance(url); + + if (!newUrl) newUrl = searchHelper.switchInstance(url); + + if (!newUrl) newUrl = translateHelper.switchInstance(url); + + if (!newUrl) newUrl = mediumHelper.switchInstance(url); + + if (!newUrl) newUrl = imgurHelper.switchInstance(url); + + if (!newUrl) newUrl = wikipediaHelper.switchInstance(url); + + if (!newUrl) newUrl = peertubeHelper.switchInstance(url); + + if (!newUrl) newUrl = lbryHelper.switchInstance(url); + + if (!newUrl) newUrl = spotifyHelper.switchInstance(url); + + if (newUrl) browser.tabs.update(tabId, { url: `/pages/errors/instance_offline.html?url=${encodeURIComponent(newUrl)}` }); +} + browser.webRequest.onResponseStarted.addListener( details => { if (!generalHelper.getAutoRedirect()) return null; @@ -140,38 +169,21 @@ browser.webRequest.onResponseStarted.addListener( console.log("statusCode", details.statusCode); const url = new URL(details.url); - let newUrl; - - newUrl = youtubeHelper.switchInstance(url); - if (!newUrl) newUrl = twitterHelper.switchInstance(url); - - if (!newUrl) newUrl = instagramHelper.switchInstance(url); - - if (!newUrl) newUrl = redditHelper.switchInstance(url); - - if (!newUrl) newUrl = searchHelper.switchInstance(url); - - if (!newUrl) newUrl = translateHelper.switchInstance(url); - - if (!newUrl) newUrl = mediumHelper.switchInstance(url); - - if (!newUrl) newUrl = imgurHelper.switchInstance(url); - - if (!newUrl) newUrl = wikipediaHelper.switchInstance(url); - - if (!newUrl) newUrl = peertubeHelper.switchInstance(url); - - if (!newUrl) newUrl = lbryHelper.switchInstance(url); - - if (!newUrl) newUrl = spotifyHelper.switchInstance(url); - - if (newUrl) browser.tabs.update(details.tabId, { url: `/pages/errors/instance_offline.html?url=${encodeURIComponent(newUrl)}` }); - + 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;