feat(core): some enhancements to recording (#11287)

- Added a check to verify if AI is enabled before attempting to transcribe meeting recordings
- Improved error handling for empty recordings
- Fixed the recording timeout logic to ensure it only stops the correct recording session
This commit is contained in:
pengx17
2025-03-31 05:37:17 +00:00
parent 7c41ddb789
commit 1306a9733b
3 changed files with 72 additions and 25 deletions

View File

@@ -12,7 +12,7 @@ import { Text } from '@blocksuite/affine/store';
import type { BlobEngine } from '@blocksuite/affine/sync';
import type { FrameworkProvider } from '@toeverything/infra';
import { getCurrentWorkspace } from './utils';
import { getCurrentWorkspace, isAiEnabled } from './utils';
const logger = new DebugLogger('electron-renderer:recording');
@@ -44,6 +44,7 @@ export function setupRecordingEvents(frameworkProvider: FrameworkProvider) {
frameworkProvider.get(EditorSettingService);
const docsService = workspace.scope.get(DocsService);
const editorSetting = editorSettingService.editorSetting;
const aiEnabled = isAiEnabled(frameworkProvider);
const timestamp = i18nTime(status.startTime, {
absolute: {
@@ -96,7 +97,10 @@ export function setupRecordingEvents(frameworkProvider: FrameworkProvider) {
MeetingSettingsService
);
if (!meetingSettingsService.settings.autoTranscription) {
if (
!meetingSettingsService.settings.autoTranscription ||
!aiEnabled
) {
// auto transcription is disabled,
// so we don't need to transcribe the recording by default
return;

View File

@@ -1,3 +1,5 @@
import { ServersService } from '@affine/core/modules/cloud';
import { FeatureFlagService } from '@affine/core/modules/feature-flag';
import { GlobalContextService } from '@affine/core/modules/global-context';
import { WorkspacesService } from '@affine/core/modules/workspace';
import type { FrameworkProvider } from '@toeverything/infra';
@@ -21,3 +23,23 @@ export function getCurrentWorkspace(frameworkProvider: FrameworkProvider) {
[Symbol.dispose]: dispose,
};
}
export function getCurrentServerService(frameworkProvider: FrameworkProvider) {
const currentServerId = frameworkProvider
.get(GlobalContextService)
.globalContext.serverId.get();
const serversService = frameworkProvider.get(ServersService);
const serverRef = currentServerId
? serversService.servers$.value.find(
server => server.id === currentServerId
)
: null;
return serverRef;
}
export function isAiEnabled(frameworkProvider: FrameworkProvider) {
const featureFlagService = frameworkProvider.get(FeatureFlagService);
const serverService = getCurrentServerService(frameworkProvider);
const aiConfig = serverService?.features$.value.copilot;
return featureFlagService.flags.enable_ai.$ && aiConfig;
}