37 lines
1.6 KiB
TypeScript
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)
|