22 lines
1.0 KiB
TypeScript
22 lines
1.0 KiB
TypeScript
import type { ExtractorInput, ExtractionProgress } from '../../main/types/extractor.types'
|
|
import { IPC_CHANNELS } from '../../shared/ipc-channels'
|
|
import { invokeIpc, ipcRenderer } from '../lib/ipc'
|
|
|
|
export const extractorApi = {
|
|
runExtractor: (input: ExtractorInput) => invokeIpc(IPC_CHANNELS.EXTRACTOR_RUN, input),
|
|
onProgress: (callback: (data: ExtractionProgress) => void) => {
|
|
const subscription = (_event: Electron.IpcRendererEvent, data: ExtractionProgress) =>
|
|
callback(data)
|
|
ipcRenderer.on(IPC_CHANNELS.EXTRACTOR_PROGRESS, subscription)
|
|
return () => ipcRenderer.removeListener(IPC_CHANNELS.EXTRACTOR_PROGRESS, subscription)
|
|
},
|
|
onLog: (callback: (data: { level: string; message: string }) => void) => {
|
|
const subscription = (
|
|
_event: Electron.IpcRendererEvent,
|
|
data: { level: string; message: string }
|
|
) => callback(data)
|
|
ipcRenderer.on(IPC_CHANNELS.EXTRACTOR_LOG, subscription)
|
|
return () => ipcRenderer.removeListener(IPC_CHANNELS.EXTRACTOR_LOG, subscription)
|
|
}
|
|
} as const
|