| 1 | import { hostEvents } from "./hostEvents"; |
| 2 | import type { GeneratedDesktopCommands } from "../generated/desktopContract.generated"; |
| 3 | export type SessionExportBindings = Pick<GeneratedDesktopCommands, |
| 4 | "BeginSessionExportForTarget" | "ReadSessionExportChunk" | "AppendSessionExportPage" | "FinishSessionExport" | "CancelSessionExport">; |
| 5 | export function makeMockSessionExportBindings(): SessionExportBindings { |
| 6 | const unavailable = async (): Promise<never> => { throw new Error("Session export requires the desktop host."); }; |
| 7 | return { |
| 8 | BeginSessionExportForTarget: unavailable, |
| 9 | ReadSessionExportChunk: unavailable, |
| 10 | AppendSessionExportPage: unavailable, |
| 11 | FinishSessionExport: unavailable, |
| 12 | async CancelSessionExport() {}, |
| 13 | }; |
| 14 | } |
| 15 | |
| 16 | export function onSessionExportProgress(cb: (value: { exportId: string; title: string; phase: string; records: number; pages: number }) => void): () => void { |
| 17 | return hostEvents("session_export_progress", payload => { if (payload && typeof payload === "object") cb(payload as Parameters<typeof cb>[0]); }) ?? (() => {}); |
| 18 | } |
| 19 |