24 lines
1.1 KiB
JavaScript
24 lines
1.1 KiB
JavaScript
|
|
// Renderer bridge for the Messages panel.
|
||
|
|
// All hermes-* IPC returns { ok, ... } | { ok: false, err }.
|
||
|
|
const { contextBridge, ipcRenderer } = require("electron");
|
||
|
|
|
||
|
|
contextBridge.exposeInMainWorld("hermes", {
|
||
|
|
status: () => ipcRenderer.invoke("hermes-status"),
|
||
|
|
init: (mnemonic) => ipcRenderer.invoke("hermes-init", { mnemonic }),
|
||
|
|
close: () => ipcRenderer.invoke("hermes-close"),
|
||
|
|
inbox: () => ipcRenderer.invoke("hermes-inbox"),
|
||
|
|
send: (to, text) => ipcRenderer.invoke("hermes-send", { to, text }),
|
||
|
|
// Server-push: new decrypted message arrived. Callback gets { senderPkHex, senderName, text, createdAt }.
|
||
|
|
onMessage: (cb) => {
|
||
|
|
const wrapped = (_e, msg) => cb(msg);
|
||
|
|
ipcRenderer.on("hermes-message", wrapped);
|
||
|
|
return () => ipcRenderer.removeListener("hermes-message", wrapped);
|
||
|
|
},
|
||
|
|
// Server-push: relay connection state changed. Callback gets { relaysConnected, relaysTotal }.
|
||
|
|
onStatus: (cb) => {
|
||
|
|
const wrapped = (_e, s) => cb(s);
|
||
|
|
ipcRenderer.on("hermes-status-update", wrapped);
|
||
|
|
return () => ipcRenderer.removeListener("hermes-status-update", wrapped);
|
||
|
|
},
|
||
|
|
});
|