30 lines
1.2 KiB
JavaScript
30 lines
1.2 KiB
JavaScript
const { contextBridge, ipcRenderer, webUtils } = require("electron")
|
|
|
|
const electronAPI = {
|
|
onCliStatus: (callback) => {
|
|
ipcRenderer.on("cli:status", (_, data) => callback(data))
|
|
return () => ipcRenderer.removeAllListeners("cli:status")
|
|
},
|
|
onCliError: (callback) => {
|
|
ipcRenderer.on("cli:error", (_, data) => callback(data))
|
|
return () => ipcRenderer.removeAllListeners("cli:error")
|
|
},
|
|
getCliStatus: () => ipcRenderer.invoke("cli:getStatus"),
|
|
restartCli: () => ipcRenderer.invoke("cli:restart"),
|
|
openDialog: (options) => ipcRenderer.invoke("dialog:open", options),
|
|
getDirectoryPaths: (paths) => ipcRenderer.invoke("filesystem:getDirectoryPaths", paths),
|
|
getPathForFile: (file) => {
|
|
try {
|
|
return webUtils.getPathForFile(file)
|
|
} catch {
|
|
return null
|
|
}
|
|
},
|
|
requestMicrophoneAccess: () => ipcRenderer.invoke("media:requestMicrophoneAccess"),
|
|
setWakeLock: (enabled) => ipcRenderer.invoke("power:setWakeLock", Boolean(enabled)),
|
|
showNotification: (payload) => ipcRenderer.invoke("notifications:show", payload),
|
|
openRemoteWindow: (payload) => ipcRenderer.invoke("remote:openWindow", payload),
|
|
}
|
|
|
|
contextBridge.exposeInMainWorld("electronAPI", electronAPI)
|