// src/main/ipc/context-handlers.ts // Phase 10.2 스크린 컨텍스트 IPC 핸들러 import { ipcMain } from 'electron' import { IPC_CHANNELS } from '@d3ro/core/ipc-channels' import { ipcSuccess, ipcError, ErrorCode } from '@d3ro/core/errors' import { getScreenContextService } from '../services/ScreenContextService' export function registerContextHandlers(): void { // context:capture — 활성 윈도우 + 선택 텍스트 캡처 ipcMain.handle( IPC_CHANNELS.CONTEXT.CAPTURE, async (_event, params?: { captureSelectedText?: boolean }) => { try { const service = getScreenContextService() const captureSelectedText = params?.captureSelectedText ?? true const result = await service.captureContext(captureSelectedText) return ipcSuccess(result) } catch (error) { const message = error instanceof Error ? error.message : String(error) return ipcError(ErrorCode.ContextCaptureFailed, message) } } ) // context:isEnabled — 스크린 컨텍스트 활성화 여부 ipcMain.handle(IPC_CHANNELS.CONTEXT.IS_ENABLED, async () => { return ipcSuccess(getScreenContextService().isEnabled()) }) // context:setEnabled — 스크린 컨텍스트 활성화/비활성화 ipcMain.handle( IPC_CHANNELS.CONTEXT.SET_ENABLED, async (_event, params: { enabled: boolean }) => { getScreenContextService().setEnabled(params.enabled) return ipcSuccess(undefined) } ) // context:getConfig — 현재 설정 조회 (향후 앱별 설정 확장용) ipcMain.handle(IPC_CHANNELS.CONTEXT.GET_CONFIG, async () => { const service = getScreenContextService() return ipcSuccess({ enabled: service.isEnabled(), }) }) }