training-academy/src/core/preload.js

45 lines
2.3 KiB
JavaScript

const { contextBridge, ipcRenderer } = require('electron');
// Expose protected methods that allow the renderer process to use
// the ipcRenderer without exposing the entire object
contextBridge.exposeInMainWorld('electronAPI', {
// Image file operations
selectImages: () => ipcRenderer.invoke('select-images'),
selectDirectory: () => ipcRenderer.invoke('select-directory'),
readDirectory: (dirPath) => ipcRenderer.invoke('read-directory', dirPath),
readImageDirectoryRecursive: (dirPath) => ipcRenderer.invoke('read-image-directory-recursive', dirPath),
copyImage: (sourcePath, destPath) => ipcRenderer.invoke('copy-image', sourcePath, destPath),
// Audio file operations
selectAudio: () => ipcRenderer.invoke('select-audio'),
readAudioDirectory: (dirPath) => ipcRenderer.invoke('read-audio-directory', dirPath),
copyAudio: (sourcePath, destPath) => ipcRenderer.invoke('copy-audio', sourcePath, destPath),
// Video file operations
selectVideos: () => ipcRenderer.invoke('select-videos'),
readVideoDirectory: (dirPath) => ipcRenderer.invoke('read-video-directory', dirPath),
readVideoDirectoryRecursive: (dirPath) => ipcRenderer.invoke('read-video-directory-recursive', dirPath),
copyVideo: (sourcePath, destPath) => ipcRenderer.invoke('copy-video', sourcePath, destPath),
deleteVideo: (filePath) => ipcRenderer.invoke('delete-video', filePath),
// File system utilities
getAppPath: () => ipcRenderer.invoke('get-app-path'),
pathJoin: (...paths) => ipcRenderer.invoke('path-join', ...paths),
fileExists: (filePath) => ipcRenderer.invoke('file-exists', filePath),
createDirectory: (dirPath) => ipcRenderer.invoke('create-directory', dirPath),
deleteFile: (filePath) => ipcRenderer.invoke('delete-file', filePath),
saveBase64Image: (filePath, base64Data) => ipcRenderer.invoke('save-base64-image', filePath, base64Data),
// Platform info
platform: process.platform,
// Child window management
openChildWindow: (options) => ipcRenderer.invoke('open-child-window', options),
focusMainWindow: () => ipcRenderer.invoke('focus-main-window'),
// Version info
versions: {
node: process.versions.node,
electron: process.versions.electron
}
});