const { contextBridge, ipcRenderer } = require('electron'); contextBridge.exposeInMainWorld('electronAPI', { // File system operations saveRecording: (fileName, data, email) => ipcRenderer.invoke('save-recording', fileName, data, email), getRecordingPath: (fileName, email) => ipcRenderer.invoke('get-recording-path', fileName, email), readRecordingData: (fileName, email) => ipcRenderer.invoke('read-recording-data', fileName, email), deleteRecording: (fileName, email) => ipcRenderer.invoke('delete-recording', fileName, email), selectDirectory: () => ipcRenderer.invoke('select-directory'), getDefaultDirectory: () => ipcRenderer.invoke('get-default-directory'), listRecordings: (email) => ipcRenderer.invoke('list-recordings', email), uploadRecording: (fileName, userEmail, borgEnvironment) => ipcRenderer.invoke('upload-recording', fileName, userEmail, borgEnvironment), renameRecording: (oldFileName, newFileName, email) => ipcRenderer.invoke('rename-recording', oldFileName, newFileName, email), // Window controls minimizeWindow: () => ipcRenderer.invoke('minimize-window'), closeWindow: () => ipcRenderer.invoke('close-window'), // Upload progress onUploadProgress: (callback) => { const subscription = (event, progress) => callback(progress); ipcRenderer.on('upload-progress', subscription); return () => { ipcRenderer.removeListener('upload-progress', subscription); }; }, // FFmpeg status checkFFmpeg: () => ipcRenderer.invoke('check-ffmpeg'), onFFmpegStatus: (callback) => { const subscription = (event, status) => callback(status); ipcRenderer.on('ffmpeg-status', subscription); return () => { ipcRenderer.removeListener('ffmpeg-status', subscription); }; }, installFFmpeg: () => ipcRenderer.invoke('install-ffmpeg'), getFFmpegDownloadUrl: () => ipcRenderer.invoke('get-ffmpeg-download-url'), restartApp: () => ipcRenderer.invoke('restart-app'), getPlatform: () => process.platform, // User settings methods saveUserSettings: (email, settings) => ipcRenderer.invoke('save-user-settings', email, settings), getUserSettings: (email) => ipcRenderer.invoke('get-user-settings', email), // Logging functions saveLog: (logEntry) => ipcRenderer.invoke('saveLog', logEntry), getLogs: () => ipcRenderer.invoke('getLogs'), clearLogs: () => ipcRenderer.invoke('clearLogs'), // App Info getAppVersion: () => ipcRenderer.invoke('get-app-version') });