Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NLSCTnhge4umMnemGXWr1w
63 lines
2.8 KiB
JavaScript
63 lines
2.8 KiB
JavaScript
const { contextBridge, ipcRenderer } = require("electron");
|
|
|
|
contextBridge.exposeInMainWorld("rakazoDesktop", {
|
|
platform: process.platform,
|
|
files: {
|
|
pickDirectory: () => ipcRenderer.invoke("desktop.files.pickDirectory"),
|
|
},
|
|
localSettings: {
|
|
request: (pathname, body) =>
|
|
ipcRenderer.invoke("desktop.localSettings.request", pathname, body),
|
|
},
|
|
media: {
|
|
photos: {
|
|
status: () => ipcRenderer.invoke("desktop.media.photos.status"),
|
|
sync: (request) => ipcRenderer.invoke("desktop.media.photos.sync", request),
|
|
cancel: () => ipcRenderer.invoke("desktop.media.photos.cancel"),
|
|
onProgress: (listener) => {
|
|
const handler = (_event, progress) => listener(progress);
|
|
ipcRenderer.on("desktop.media.photos.progress", handler);
|
|
return () => ipcRenderer.off("desktop.media.photos.progress", handler);
|
|
},
|
|
},
|
|
},
|
|
window: {
|
|
close: () => ipcRenderer.invoke("desktop.window.close"),
|
|
minimize: () => ipcRenderer.invoke("desktop.window.minimize"),
|
|
toggleMaximize: () => ipcRenderer.invoke("desktop.window.toggleMaximize"),
|
|
state: () => ipcRenderer.invoke("desktop.window.state"),
|
|
},
|
|
update: {
|
|
state: () => ipcRenderer.invoke("desktop.update.state"),
|
|
check: () => ipcRenderer.invoke("desktop.update.check"),
|
|
download: () => ipcRenderer.invoke("desktop.update.download"),
|
|
install: () => ipcRenderer.invoke("desktop.update.install"),
|
|
},
|
|
browserPreview: {
|
|
state: () => ipcRenderer.invoke("desktop.browserPreview.state"),
|
|
show: (bounds) => ipcRenderer.invoke("desktop.browserPreview.show", bounds),
|
|
hide: () => ipcRenderer.invoke("desktop.browserPreview.hide"),
|
|
navigate: (url) => ipcRenderer.invoke("desktop.browserPreview.navigate", url),
|
|
back: () => ipcRenderer.invoke("desktop.browserPreview.back"),
|
|
forward: () => ipcRenderer.invoke("desktop.browserPreview.forward"),
|
|
reload: () => ipcRenderer.invoke("desktop.browserPreview.reload"),
|
|
stop: () => ipcRenderer.invoke("desktop.browserPreview.stop"),
|
|
openDevTools: () => ipcRenderer.invoke("desktop.browserPreview.openDevTools"),
|
|
onState: (listener) => {
|
|
const handler = (_event, state) => listener(state);
|
|
ipcRenderer.on("desktop.browserPreview.state", handler);
|
|
return () => ipcRenderer.off("desktop.browserPreview.state", handler);
|
|
},
|
|
},
|
|
oauth: {
|
|
open: (url) => ipcRenderer.invoke("desktop.oauth.open", url),
|
|
cancel: (url) => ipcRenderer.invoke("desktop.oauth.cancel", url),
|
|
onCallback: (listener) => {
|
|
// The IpcRendererEvent stays in the preload: the renderer only sees the code.
|
|
const handler = (_event, callback) => listener(callback);
|
|
ipcRenderer.on("desktop.oauth.callback", handler);
|
|
return () => ipcRenderer.off("desktop.oauth.callback", handler);
|
|
},
|
|
},
|
|
});
|