summaryrefslogtreecommitdiffstats
path: root/packages/meshbay-client/src/preload.js
diff options
context:
space:
mode:
Diffstat (limited to 'packages/meshbay-client/src/preload.js')
-rw-r--r--packages/meshbay-client/src/preload.js16
1 files changed, 16 insertions, 0 deletions
diff --git a/packages/meshbay-client/src/preload.js b/packages/meshbay-client/src/preload.js
index 04dfe44..e9fd375 100644
--- a/packages/meshbay-client/src/preload.js
+++ b/packages/meshbay-client/src/preload.js
@@ -40,6 +40,7 @@ contextBridge.exposeInMainWorld('meshbay', {
nodeAdmin: true,
localFolders: true,
nativeSave: true,
+ lanCast: true,
},
// Ask the main process to call the hub. The renderer has an `app://` origin,
@@ -90,6 +91,21 @@ contextBridge.exposeInMainWorld('meshbay', {
setPairingCode: (code) => ipcRenderer.invoke('node:set-pairing-code', code),
},
+ // LAN cast relay. The main process runs a local HTTP server and the
+ // renderer feeds it decrypted segments. A Chromecast or Smart TV on the
+ // same Wi-Fi plays from the URL.
+ cast: {
+ start: (opts) => ipcRenderer.invoke('cast:start', opts),
+ push: (data) => ipcRenderer.invoke('cast:push', data),
+ stop: () => ipcRenderer.invoke('cast:stop'),
+ finish: () => ipcRenderer.invoke('cast:finish'),
+ status: () => ipcRenderer.invoke('cast:status'),
+ discover: () => ipcRenderer.invoke('cast:discover'),
+ chromecastConnect: (opts) => ipcRenderer.invoke('cast:chromecast:connect', opts),
+ chromecastReload: (opts) => ipcRenderer.invoke('cast:chromecast:reload', opts),
+ chromecastDisconnect: () => ipcRenderer.invoke('cast:chromecast:disconnect'),
+ },
+
// A sink that writes to disk as chunks arrive, never a buffer handed over at
// the end. `auto` uses the remembered folder without a dialog, which is what
// "save automatically" means; without one, or when the person asked to be