2023-06-25 11:08:38 +01:00

57 lines
1.5 KiB
JavaScript

let app = Elm.Background.Background.init();
app.ports.consoleLog.subscribe(message => console.log(message));
app.ports.localStorageGet.subscribe(key => app.ports.localStorageRecv.send([key, window.localStorage.getItem(key) ?? "{}"]));
let requestResolveMap = {};
let responseResolveMap = {};
browser.webRequest.onBeforeSendHeaders.addListener(
requestDetails => {
let resolve;
let p = new Promise((r, _) => resolve = r);
requestResolveMap[requestDetails.requestId] = resolve;
app.ports.incomingRequest.send([requestDetails.requestId, JSON.stringify(requestDetails)]);
return p;
},
{urls: ["<all_urls>"]},
["blocking", "requestHeaders"]
);
browser.webRequest.onHeadersReceived.addListener(
responseDetails => {
let resolve;
let p = new Promise((r, _) => resolve = r);
responseResolveMap[responseDetails.requestId] = resolve;
app.ports.incomingResponse.send([responseDetails.requestId, JSON.stringify(responseDetails)]);
return p;
},
{urls: ["<all_urls>"]},
["blocking", "responseHeaders"]
);
app.ports.modifyRequest.subscribe(([id, body]) => {
requestResolveMap[id](body)
delete requestResolveMap[id];
});
app.ports.modifyResponse.subscribe(([id, body]) => {
responseResolveMap[id](body)
delete responseResolveMap[id];
});
browser.runtime.onMessage.addListener(() => app.ports.refresh.send(""));
browser.browserAction.onClicked.addListener(() => {
let createProperties = {
active: true,
url: "app.html",
};
browser.tabs.create(createProperties);
});