Files
geo/apps/desktop-client/src/main/review-window.ts
T

55 lines
1.4 KiB
TypeScript
Raw Normal View History

import type { Session } from 'electron/main'
import { BrowserWindow, nativeTheme } from 'electron/main'
import { attachWindowDiagnostics, loadWindowURLSafely } from './external-window'
interface ReviewWindowRecord {
taskId: string
window: BrowserWindow
}
const reviewWindows = new Map<string, ReviewWindowRecord>()
export async function openReviewWindow(options: {
taskId: string
title: string
url: string
session: Session
}): Promise<void> {
const existing = reviewWindows.get(options.taskId)
if (existing && !existing.window.isDestroyed()) {
existing.window.show()
existing.window.focus()
if (existing.window.webContents.getURL() !== options.url) {
await loadWindowURLSafely(existing.window, options.url, options.title)
}
return
}
const window = new BrowserWindow({
width: 1440,
height: 960,
minWidth: 1120,
minHeight: 760,
title: options.title,
autoHideMenuBar: true,
backgroundColor: nativeTheme.shouldUseDarkColors ? '#15191a' : '#f4f1ea',
webPreferences: {
session: options.session,
sandbox: true,
contextIsolation: true,
nodeIntegration: false,
},
})
attachWindowDiagnostics(window, options.title)
reviewWindows.set(options.taskId, { taskId: options.taskId, window })
window.on('closed', () => {
reviewWindows.delete(options.taskId)
})
await loadWindowURLSafely(window, options.url, options.title)
window.show()
window.focus()
}