import { contextBridge, ipcRenderer } from 'electron' import { electronAPI } from '@electron-toolkit/preload' import type { RelayStatus } from '../main/relay' const api = { getStatus: (): Promise => ipcRenderer.invoke('relay:get-status'), start: (): Promise => ipcRenderer.invoke('relay:start'), stop: (): Promise => ipcRenderer.invoke('relay:stop'), getAutostart: (): Promise => ipcRenderer.invoke('relay:get-autostart'), setAutostart: (enabled: boolean): Promise => ipcRenderer.invoke('relay:set-autostart', enabled), setMirrorEnabled: (index: number, enabled: boolean): Promise => ipcRenderer.invoke('relay:set-mirror-enabled', index, enabled), onStatus: (callback: (status: RelayStatus) => void): (() => void) => { const listener = (_e: unknown, status: RelayStatus): void => callback(status) ipcRenderer.on('relay:status', listener) return () => ipcRenderer.removeListener('relay:status', listener) } } 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 } export type RelayApi = typeof api