diff --git a/surfsense_desktop/src/modules/screen-region-picker.ts b/surfsense_desktop/src/modules/screen-region-picker.ts index 0a924eec9..cc9303040 100644 --- a/surfsense_desktop/src/modules/screen-region-picker.ts +++ b/surfsense_desktop/src/modules/screen-region-picker.ts @@ -6,11 +6,13 @@ import { IPC_CHANNELS } from '../ipc/channels'; let pickInProgress = false; -async function captureDisplayDataUrl(display: Electron.Display): Promise<{ +type DisplayCaptureSnapshot = { dataUrl: string; width: number; height: number; -} | null> { +}; + +async function captureDisplaySnapshot(display: Electron.Display): Promise { try { const sf = display.scaleFactor || 1; const tw = Math.max(1, Math.round(display.size.width * sf)); @@ -37,6 +39,12 @@ async function captureDisplayDataUrl(display: Electron.Display): Promise<{ } } +export async function captureCurrentDisplayDataUrl(): Promise { + const display = screen.getDisplayNearestPoint(screen.getCursorScreenPoint()); + const snapshot = await captureDisplaySnapshot(display); + return snapshot?.dataUrl ?? null; +} + function buildInjectScript(dataUrl: string, iw: number, ih: number): string { return `(() => { const api = window.surfsenseScreenRegion; @@ -166,7 +174,7 @@ export function pickScreenRegion(): Promise { resolve(result); }; - let snapshot: { dataUrl: string; width: number; height: number } | null = null; + let snapshot: DisplayCaptureSnapshot | null = null; const onSubmit = ( _event: Electron.IpcMainEvent, @@ -206,7 +214,7 @@ export function pickScreenRegion(): Promise { } }; - void captureDisplayDataUrl(display) + void captureDisplaySnapshot(display) .then((cap) => { if (!cap) { finish(null);