feat: develop Electron wrapper, safe IPC bridge, and subprocess spawn pipelines
This commit is contained in:
+32
@@ -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')
|
||||
});
|
||||
Reference in New Issue
Block a user