import { contextBridge, ipcRenderer } from 'electron'; interface RedisData { channel: string; data: unknown; timestamp: number; } // Expose protected methods that allow the renderer process to use // the ipcRenderer without exposing the entire object contextBridge.exposeInMainWorld('electronAPI', { // Window controls minimizeWindow: () => ipcRenderer.invoke('window-minimize'), maximizeWindow: () => ipcRenderer.invoke('window-maximize'), closeWindow: () => ipcRenderer.invoke('window-close'), isMaximized: () => ipcRenderer.invoke('window-is-maximized'), // Window state listeners onMaximizeChange: (callback: (event: unknown, maximized: boolean) => void) => { ipcRenderer.on('window-maximize-changed', callback); }, removeMaximizeListener: (callback: (event: unknown, maximized: boolean) => void) => { ipcRenderer.removeListener('window-maximize-changed', callback); }, // External links openExternal: (url: string) => ipcRenderer.invoke('open-external', url), // Redis data subscription onRedisData: (callback: (data: RedisData) => void) => { ipcRenderer.on('redis-data', (_event, data) => callback(data)); }, // Remove listener removeRedisDataListener: () => { ipcRenderer.removeAllListeners('redis-data'); }, });