import { contextBridge, ipcRenderer } from 'electron' import { electronAPI } from '@electron-toolkit/preload' // Custom APIs for renderer - extend with explicit audio/video IPC const api = { // Explicitly expose receive channels for media onAudioFragment: (callback: (payload: any) => void) => { const handler = (_: any, payload: any) => callback(payload); ipcRenderer.on('audio-fragment', handler); return () => ipcRenderer.removeListener('audio-fragment', handler); }, onVideoChunk: (callback: (payload: any) => void) => { const handler = (_: any, payload: any) => callback(payload); ipcRenderer.on('video-chunk', handler); return () => ipcRenderer.removeListener('video-chunk', handler); } } // Use `contextBridge` APIs to expose Electron APIs to // renderer only if context isolation is enabled, otherwise // just add to the DOM global. if (process.contextIsolated) { try { contextBridge.exposeInMainWorld('electron', electronAPI) contextBridge.exposeInMainWorld('api', api) } catch (error) { console.error(error) } } else { // @ts-ignore (define in dts) window.electron = electronAPI // @ts-ignore (define in dts) window.api = api }