diff --git a/functions/network.js b/functions/network.js index 97881ee84..7ed233cf8 100644 --- a/functions/network.js +++ b/functions/network.js @@ -1,12 +1,24 @@ import AxiosStrategy from "./strategies/AxiosStrategy"; import ProxyStrategy from "./strategies/ProxyStrategy"; +import FirefoxStrategy from "./strategies/FirefoxStrategy"; + + +const runAppropriateStrategy = (req, store) => { + // The firefox plugin injects a function to send requests through it + // If that is available, then we can use the FirefoxStrategy + if (window.firefoxExtSendRequest) { + return FirefoxStrategy(req, store); + } -const sendNetworkRequest = (req, store) => { if (store.state.postwoman.settings.PROXY_ENABLED) { return ProxyStrategy(req, store); } return AxiosStrategy(req, store); -}; +} + +const sendNetworkRequest = (req, store) => + runAppropriateStrategy(req, store) + .finally(() => window.$nuxt.$loading.finish()); export { sendNetworkRequest }; diff --git a/functions/strategies/AxiosStrategy.js b/functions/strategies/AxiosStrategy.js index de74ec377..9bef30aef 100644 --- a/functions/strategies/AxiosStrategy.js +++ b/functions/strategies/AxiosStrategy.js @@ -2,7 +2,6 @@ import axios from "axios"; const axiosStrategy = async (req, _store) => { const res = await axios(req); - window.$nuxt.$loading.finish(); return res; }; diff --git a/functions/strategies/FirefoxStrategy.js b/functions/strategies/FirefoxStrategy.js new file mode 100644 index 000000000..77b15f453 --- /dev/null +++ b/functions/strategies/FirefoxStrategy.js @@ -0,0 +1,15 @@ +const firefoxStrategy = (req, _store) => new Promise((resolve, reject) => { + + const eventListener = (event) => { + window.removeEventListener("firefoxExtSendRequestComplete", eventListener); + + if (event.detail.error) reject(JSON.parse(event.detail.error)); + else resolve(JSON.parse(event.detail.response)); + }; + + window.addEventListener("firefoxExtSendRequestComplete", eventListener); + + window.firefoxExtSendRequest(req); +}); + +export default firefoxStrategy; diff --git a/functions/strategies/ProxyStrategy.js b/functions/strategies/ProxyStrategy.js index 945482f48..0b6f50b0f 100644 --- a/functions/strategies/ProxyStrategy.js +++ b/functions/strategies/ProxyStrategy.js @@ -6,7 +6,6 @@ const proxyStrategy = async (req, store) => { "https://postwoman.apollotv.xyz/", req ); - window.$nuxt.$loading.finish(); return data; };