const firefoxWithProxy = (req, { state }) => new Promise((resolve, reject) => { const eventListener = event => { window.removeEventListener("firefoxExtSendRequestComplete", event); if (event.detail.error) { reject(JSON.parse(event.detail.error)); } else { resolve(JSON.parse(event.detail.response).data); } }; window.addEventListener("firefoxExtSendRequestComplete", eventListener); window.firefoxExtSendRequest({ method: "post", url: state.postwoman.settings.PROXY_URL || "https://postwoman.apollotv.xyz/", data: req }); }); const firefoxWithoutProxy = (req, _store) => new Promise((resolve, reject) => { const eventListener = ({ detail }) => { window.removeEventListener( "firefoxExtSendRequestComplete", eventListener ); if (detail.error) { reject(JSON.parse(detail.error)); } else { resolve(JSON.parse(detail.response)); } }; window.addEventListener("firefoxExtSendRequestComplete", eventListener); window.firefoxExtSendRequest(req); }); const firefoxStrategy = (req, store) => { if (store.state.postwoman.settings.PROXY_ENABLED) { return firefoxWithProxy(req, store); } return firefoxWithoutProxy(req, store); }; export default firefoxStrategy;