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/pages/background/background.js | 54 +++++++++++++++++++++++--------------- 1 file changed, 33 insertions(+), 21 deletions(-) (limited to 'src/pages') 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