2025-05-13 00:22:39 +00:00

53 lines
2.4 KiB
JavaScript

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')
});