17 lines
812 B
JavaScript
17 lines
812 B
JavaScript
const { contextBridge, ipcRenderer } = require("electron");
|
|
|
|
const tokenArg = process.argv.find((arg) => arg.startsWith("--openpets-panel-token="));
|
|
const channel = tokenArg ? `openpets:plugin-panel:${tokenArg.slice("--openpets-panel-token=".length)}` : "";
|
|
const handlers = new Set();
|
|
|
|
ipcRenderer.on(`${channel}:message`, (_event, msg) => {
|
|
for (const handler of handlers) {
|
|
try { handler(msg); } catch { /* panel handler errors stay in the panel */ }
|
|
}
|
|
});
|
|
|
|
contextBridge.exposeInMainWorld("openPetsPanel", {
|
|
postMessage: (msg) => { if (channel) ipcRenderer.send(`${channel}:to-plugin`, msg); },
|
|
onMessage: (handler) => { if (typeof handler === "function") handlers.add(handler); return () => handlers.delete(handler); },
|
|
close: () => { if (channel) ipcRenderer.send(`${channel}:close`); },
|
|
});
|