返回 oh-my-ppt
generation-window-policy.ts
根目录 / src / main / generation / generation-window-policy.ts
1 import type { BrowserWindow } from 'electron'
2 import type { GenerateChunkEvent } from '@shared/generation'
3
4 type GenerationWindowRunState = {
5 runId: string
6 mode:
7 | 'generate'
8 | 'edit'
9 | 'retry'
10 | 'addPage'
11 | 'retrySinglePage'
12 | 'style-switch'
13 }
14
15 export function shouldRevealGenerationWindow(
16 event: GenerateChunkEvent,
17 runState?: GenerationWindowRunState
18 ): boolean {
19 if (event.type !== 'run_completed' && event.type !== 'run_error') return false
20 if (event.type === 'run_error' && event.payload.cancelled === true) return false
21
22 if (runState) {
23 if (runState.runId !== event.payload.runId) return false
24 return runState.mode === 'generate' || runState.mode === 'retry'
25 }
26
27 return !event.payload.activityKind
28 }
29
30 export function revealGenerationWindow(window: BrowserWindow): void {
31 if (window.isDestroyed()) return
32 if (window.isMinimized()) window.restore()
33 if (!window.isVisible()) window.show()
34 window.focus()
35 }
36
36 lines TYPESCRIPT