Files

37 lines
1.6 KiB
TypeScript

import { contextBridge, ipcRenderer, webUtils } from 'electron'
import type {
DesktopBridge,
ProcessProgress,
} from '../../src/shared/types'
const bridge: DesktopBridge = {
getAppInfo: () => ipcRenderer.invoke('app:info'),
getLicenseState: () => ipcRenderer.invoke('license:state'),
activate: (activationCode) => ipcRenderer.invoke('license:activate', activationCode),
validateLicense: () => ipcRenderer.invoke('license:validate'),
clearLicense: () => ipcRenderer.invoke('license:clear'),
checkVersion: () => ipcRenderer.invoke('license:check-version'),
downloadUpdate: (downloadUrl, latestVersion) => ipcRenderer.invoke(
'license:download-update',
downloadUrl,
latestVersion,
),
selectImages: () => ipcRenderer.invoke('images:select-files'),
selectFolder: () => ipcRenderer.invoke('images:select-folder'),
selectOutputDirectory: () => ipcRenderer.invoke('images:select-output'),
pathsForFiles: (files) => files
.map((file) => webUtils.getPathForFile(file))
.filter(Boolean),
inspectImages: (paths) => ipcRenderer.invoke('images:inspect', paths),
processImages: (options) => ipcRenderer.invoke('images:process', options),
cancelProcessing: () => ipcRenderer.invoke('images:cancel'),
revealItem: (filePath) => ipcRenderer.invoke('images:reveal', filePath),
onProcessProgress: (callback) => {
const listener = (_event: Electron.IpcRendererEvent, progress: ProcessProgress) => callback(progress)
ipcRenderer.on('images:progress', listener)
return () => ipcRenderer.removeListener('images:progress', listener)
},
}
contextBridge.exposeInMainWorld('desktop', bridge)