diff --git a/src/background.ts b/src/background.ts new file mode 100644 index 0000000..1b79798 --- /dev/null +++ b/src/background.ts @@ -0,0 +1,13 @@ +import { isChrome } from '~utils/extension'; + +// Both brave and firefox for some reason need this extension reload, +// If this isn't done, they will never load properly and will fail updateDynamicRules() +if (isChrome()) { + chrome.runtime.onStartup.addListener(() => { + chrome.runtime.reload(); + }); +} else { + browser.runtime.onStartup.addListener(() => { + browser.runtime.reload(); + }); +} diff --git a/src/background/messages/makeRequest.ts b/src/background/messages/makeRequest.ts index cd778a8..bdc16fa 100644 --- a/src/background/messages/makeRequest.ts +++ b/src/background/messages/makeRequest.ts @@ -49,19 +49,20 @@ const mapBodyToFetchBody = (body: Request['body'], bodyType: Request['bodyType'] const handler: PlasmoMessaging.MessageHandler> = async (req, res) => { try { + const url = makeFullUrl(req.body.url, req.body); await assertDomainWhitelist(req.sender.tab.url); if (req.body.headers['User-Agent']) { await setDynamicRules({ ruleId: MAKE_REQUEST_DYNAMIC_RULE, - targetDomains: [new URL(req.body.url).hostname], + targetDomains: [new URL(url).hostname], requestHeaders: { 'User-Agent': req.body.headers['User-Agent'], }, }); } - const response = await fetch(makeFullUrl(req.body.url, req.body), { + const response = await fetch(url, { method: req.body.method, headers: req.body.headers, body: mapBodyToFetchBody(req.body.body, req.body.bodyType), @@ -80,6 +81,7 @@ const handler: PlasmoMessaging.MessageHandler> = async (r }, }); } catch (err) { + console.error('failed request', err); res.send({ success: false, error: err.message,