feat: develop Electron wrapper, safe IPC bridge, and subprocess spawn pipelines

This commit is contained in:
Ümit Tunç
2026-05-23 10:48:43 +03:00
parent 331487549e
commit 27baa115e0
2 changed files with 250 additions and 0 deletions
+32
View File
@@ -0,0 +1,32 @@
const { contextBridge, ipcRenderer } = require('electron');
contextBridge.exposeInMainWorld('api', {
// Python setup APIs
checkPythonSetup: () => ipcRenderer.invoke('check-python-setup'),
runPythonSetup: () => ipcRenderer.invoke('run-python-setup'),
onSetupProgress: (callback) => {
// Clear previous listener to prevent leaks
ipcRenderer.removeAllListeners('setup-progress');
ipcRenderer.on('setup-progress', (event, data) => callback(data));
},
// Processing APIs
removeBackground: (inputPath, outputPath) =>
ipcRenderer.invoke('remove-background', { inputPath, outputPath }),
onProcessProgress: (callback) => {
ipcRenderer.removeAllListeners('process-progress');
ipcRenderer.on('process-progress', (event, data) => callback(data));
},
// File Operations
selectImage: () => ipcRenderer.invoke('select-image'),
getTempPath: (fileName) => ipcRenderer.invoke('get-temp-path', fileName),
exportImage: (base64Data, defaultName) =>
ipcRenderer.invoke('export-image', { base64Data, defaultName }),
showInExplorer: (filePath) => ipcRenderer.invoke('show-in-explorer', filePath),
// Window Controls
minimizeWindow: () => ipcRenderer.send('window-minimize'),
maximizeWindow: () => ipcRenderer.send('window-maximize'),
closeWindow: () => ipcRenderer.send('window-close')
});