From 2a465f22e9c644d0a8e53793742f50bd25752ce9 Mon Sep 17 00:00:00 2001 From: Yun Chan Date: Wed, 8 Apr 2026 08:59:56 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=ED=9A=8C=EC=9D=98=20=EB=AA=A8=EB=93=9C?= =?UTF-8?q?=20=EB=A7=88=EC=9D=B4=ED=81=AC=20=EC=BA=A1=EC=B2=98=20=EA=B0=95?= =?UTF-8?q?=EC=A0=9C=20=E2=80=94=20ConfigService=20=EB=A0=88=EB=B2=A8?= =?UTF-8?q?=EC=97=90=EC=84=9C=20=EC=98=A4=EB=94=94=EC=98=A4=20=EC=86=8C?= =?UTF-8?q?=EC=8A=A4=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CaptionService.start()가 ConfigService에서 captionAudioSource를 다시 읽어 setConfig 호출이 무시되는 문제 수정. ConfigService 값을 임시 변경 후 복원. --- src/main/services/MeetingModeService.ts | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/main/services/MeetingModeService.ts b/src/main/services/MeetingModeService.ts index 1848ac1..19b5483 100644 --- a/src/main/services/MeetingModeService.ts +++ b/src/main/services/MeetingModeService.ts @@ -8,7 +8,7 @@ import fs from 'fs' import { nanoid } from 'nanoid' import { eq, desc, sql } from 'drizzle-orm' import { getLogger } from './LoggerService' -import { configGet } from './ConfigService' +import { configGet, configSet } from './ConfigService' import { getMainWindow } from '../windows/WindowManager' import { getDatabase } from '../db' import { meetingSessions, meetingMemos } from '../db/schema' @@ -151,18 +151,26 @@ class MeetingModeService extends EventEmitter { } captionService.on('segment', this._segmentHandler) - // 회의 모드는 마이크 캡처 강제 (시스템 오디오가 아닌 마이크) - const prevAudioSource = captionService.getConfig().audioSource - captionService.setConfig({ audioSource: 'mic' }) + // 회의 모드는 마이크 캡처 강제 — ConfigService 값도 임시 변경 + // (CaptionService.start()가 ConfigService에서 다시 읽기 때문) + type AppConfigKey = keyof import('@shared/types').AppConfig + const prevAudioSource = configGet('captionAudioSource' as AppConfigKey) as unknown as string + configSet('captionAudioSource' as AppConfigKey, 'mic' as never) try { await captionService.start() // 회의 모드 UI가 자체 자막 패널에 표시하므로 오버레이 숨김 const { hideCaptionOverlay } = await import('../windows/WindowManager') hideCaptionOverlay() + // ConfigService 원래 값 복원 + if (prevAudioSource) { + configSet('captionAudioSource' as AppConfigKey, prevAudioSource as never) + } } catch (err) { - // 오디오 소스 복원 - captionService.setConfig({ audioSource: prevAudioSource }) + // ConfigService 원래 값 복원 + if (prevAudioSource) { + configSet('captionAudioSource' as AppConfigKey, prevAudioSource as never) + } // 시작 실패 시 복원 captionService.off('segment', this._segmentHandler) this._segmentHandler = null