Files
franklin a222d266bd commit
2024-07-12 22:00:06 +01:00

67 lines
1.6 KiB
JavaScript

const querystring = require("querystring");
const logger = (msg) => {
console.log(`[BGC] ${msg}`);
};
logger("background client up.");
logger("connecting to SSE service...");
const port = querystring.parse(__resourceQuery.slice(1)).port;
const es = new EventSource(`http://localhost:${port}/__server_sent_events__`);
es.addEventListener(
"open",
() => {
logger("SSE service connected!");
},
false
);
es.addEventListener(
"error",
(event) => {
if (event.target.readyState === 0) {
console.error("[BGC] you need to open devServer first!");
} else {
console.error(event);
}
},
false
);
es.addEventListener("background-updated", () => {
logger("received 'background-updated' event from SSE service.");
logger("extension will reload to reload background...");
chrome.runtime.reload(); // reload extension to reload background.
});
es.addEventListener(
"content-scripts-updated",
() => {
logger("received 'content-scripts-updated' event from SSE service.");
chrome.tabs.query({}, (tabs) => {
tabs.forEach((tab) => {
chrome.tabs.sendMessage(
tab.id,
{
from: "backgroundClient",
action: "reload-yourself",
},
(res) => {
if (chrome.runtime.lastError && !res) return;
const { from, action } = res;
if (from === "contentScriptClient" && action === "yes-sir") {
es.close();
logger("extension will reload to update content scripts...");
chrome.runtime.reload();
}
}
);
});
});
},
false
);