Move desktop screen capture into modules/screen-capture and align preload build paths and imports.

This commit is contained in:
CREDO23 2026-04-27 20:39:03 +02:00
parent 9cd4daa6b3
commit d4caae6de9
9 changed files with 23 additions and 16 deletions

View file

@ -7,7 +7,7 @@ import {
requestScreenRecording,
restartApp,
} from '../modules/permissions';
import { pickOpenWindowCapture } from '../modules/window-picker';
import { pickOpenWindowCapture } from '../modules/screen-capture';
import {
selectFolder,
addWatchedFolder,

View file

@ -0,0 +1,7 @@
/**
* Window capture for Screenshot Assist and chat fullscreen: single-session
* desktopCapturer, region overlay, and shortcut entry point.
*/
export { pickOpenWindowCapture, type PickedWindowResult } from './window-picker';
export { pickScreenRegion, captureCurrentDisplayDataUrl } from './screen-region-picker';
export { runScreenshotAssistShortcut } from './screenshot-assist';

View file

@ -1,6 +1,6 @@
import { BrowserWindow, desktopCapturer, nativeImage, screen } from 'electron';
import path from 'path';
import { IPC_CHANNELS } from '../ipc/channels';
import { IPC_CHANNELS } from '../../ipc/channels';
function fitNativeImageToWorkArea(img: Electron.NativeImage, display: Electron.Display): Electron.NativeImage {
const wa = display.workArea;
const { width: iw, height: ih } = img.getSize();
@ -257,7 +257,7 @@ export function pickScreenRegion(opts?: { windowDataUrl?: string }): Promise<str
autoHideMenuBar: true,
backgroundColor: '#00000000',
webPreferences: {
preload: path.join(__dirname, 'screen-region-preload.js'),
preload: path.join(__dirname, 'modules', 'screen-capture', 'screen-region-preload.js'),
contextIsolation: true,
nodeIntegration: false,
sandbox: true,

View file

@ -1,5 +1,5 @@
import { contextBridge, ipcRenderer } from 'electron';
import { IPC_CHANNELS } from './ipc/channels';
import { IPC_CHANNELS } from '../../ipc/channels';
contextBridge.exposeInMainWorld('surfsenseScreenRegion', {
submit: (rect: { x: number; y: number; width: number; height: number }) => {

View file

@ -1,9 +1,9 @@
import { IPC_CHANNELS } from '../ipc/channels';
import { trackEvent } from './analytics';
import { IPC_CHANNELS } from '../../ipc/channels';
import { trackEvent } from '../analytics';
import { pickScreenRegion } from './screen-region-picker';
import { pickOpenWindowCapture } from './window-picker';
import { getMainWindow, showMainWindow } from './window';
import { hasScreenRecordingPermission, requestScreenRecording } from './permissions';
import { getMainWindow, showMainWindow } from '../window';
import { hasScreenRecordingPermission, requestScreenRecording } from '../permissions';
export async function runScreenshotAssistShortcut(): Promise<void> {
if (!hasScreenRecordingPermission()) {

View file

@ -1,5 +1,5 @@
import { contextBridge, ipcRenderer } from 'electron';
import { IPC_CHANNELS } from './ipc/channels';
import { IPC_CHANNELS } from '../../ipc/channels';
contextBridge.exposeInMainWorld('surfsenseWindowPick', {
list: () =>

View file

@ -1,6 +1,6 @@
import { BrowserWindow, desktopCapturer, ipcMain, screen } from 'electron';
import path from 'path';
import { IPC_CHANNELS } from '../ipc/channels';
import { IPC_CHANNELS } from '../../ipc/channels';
let pickInProgress = false;
@ -181,7 +181,7 @@ export function pickOpenWindowCapture(): Promise<PickedWindowResult | null> {
autoHideMenuBar: true,
title: 'SurfSense — choose window',
webPreferences: {
preload: path.join(__dirname, 'window-picker-preload.js'),
preload: path.join(__dirname, 'modules', 'screen-capture', 'window-picker-preload.js'),
contextIsolation: true,
nodeIntegration: false,
sandbox: true,

View file

@ -1,7 +1,7 @@
import { app, globalShortcut, Menu, nativeImage, Tray, type NativeImage } from 'electron';
import path from 'path';
import { runGeneralAssistShortcut } from './general-assist';
import { runScreenshotAssistShortcut } from './screenshot-assist';
import { runScreenshotAssistShortcut } from './screen-capture';
import { showMainWindow } from './window';
import { getShortcuts } from './shortcuts';
import { trackEvent } from './analytics';