From d7b1819149d288aed7ade292490f33953845c16c Mon Sep 17 00:00:00 2001 From: Saul-Mirone Date: Sun, 27 Apr 2025 13:13:07 +0000 Subject: [PATCH] refactor(editor): move transcription block model to ai (#12010) ## Summary by CodeRabbit - **Refactor** - Updated and reorganized import paths for transcription block models and types to improve module structure and maintainability. - **Chores** - Removed deprecated transcription block schema and related exports from core libraries. - Registered transcription block schema directly within the workspace schema for improved schema management. - **Bug Fixes** - Ensured consistent registration and availability of transcription block features across relevant modules. --- .../affine/all/src/extensions/migrating-store.ts | 6 +----- blocksuite/affine/all/src/schemas.ts | 2 -- blocksuite/affine/model/src/blocks/index.ts | 1 - .../affine/model/src/blocks/transcription/index.ts | 1 - .../ai/blocks/ai-chat-block/ai-transcription-block.ts | 2 +- .../blocksuite/ai/blocks/transcription-block/model.ts | 2 +- .../attachment-viewer/audio/transcription-block.tsx | 2 +- .../core/src/blocksuite/manager/migrating-store.ts | 2 ++ .../modules/media/entities/audio-attachment-block.ts | 10 +++++----- .../modules/media/entities/audio-transcription-job.ts | 2 +- .../core/src/modules/workspace/global-schema.ts | 7 ++++++- 11 files changed, 18 insertions(+), 19 deletions(-) delete mode 100644 blocksuite/affine/model/src/blocks/transcription/index.ts rename blocksuite/affine/model/src/blocks/transcription/transcription-model.ts => packages/frontend/core/src/blocksuite/ai/blocks/transcription-block/model.ts (96%) diff --git a/blocksuite/affine/all/src/extensions/migrating-store.ts b/blocksuite/affine/all/src/extensions/migrating-store.ts index ea5bd28c97..18ea7f1269 100644 --- a/blocksuite/affine/all/src/extensions/migrating-store.ts +++ b/blocksuite/affine/all/src/extensions/migrating-store.ts @@ -8,10 +8,7 @@ import { type StoreExtensionContext, StoreExtensionProvider, } from '@blocksuite/affine-ext-loader'; -import { - RootBlockSchemaExtension, - TranscriptionBlockSchemaExtension, -} from '@blocksuite/affine-model'; +import { RootBlockSchemaExtension } from '@blocksuite/affine-model'; import { HtmlAdapterFactoryExtension, ImageProxyService, @@ -69,7 +66,6 @@ function getNotionHtmlAdapterExtensions(): ExtensionType[] { const MigratingStoreExtensions: ExtensionType[] = [ RootBlockSchemaExtension, - TranscriptionBlockSchemaExtension, BlockSelectionExtension, TextSelectionExtension, diff --git a/blocksuite/affine/all/src/schemas.ts b/blocksuite/affine/all/src/schemas.ts index 6e5d50686d..91dc3e33b6 100644 --- a/blocksuite/affine/all/src/schemas.ts +++ b/blocksuite/affine/all/src/schemas.ts @@ -25,7 +25,6 @@ import { RootBlockSchema, SurfaceRefBlockSchema, TableBlockSchema, - TranscriptionBlockSchema, } from '@blocksuite/affine-model'; import type { BlockSchema } from '@blocksuite/store'; import type { z } from 'zod'; @@ -57,5 +56,4 @@ export const AffineSchemas: z.infer[] = [ LatexBlockSchema, TableBlockSchema, CalloutBlockSchema, - TranscriptionBlockSchema, ]; diff --git a/blocksuite/affine/model/src/blocks/index.ts b/blocksuite/affine/model/src/blocks/index.ts index 269180f3fc..0bc0e23afc 100644 --- a/blocksuite/affine/model/src/blocks/index.ts +++ b/blocksuite/affine/model/src/blocks/index.ts @@ -15,4 +15,3 @@ export * from './paragraph/index.js'; export * from './root/index.js'; export * from './surface-ref/index.js'; export * from './table'; -export * from './transcription'; diff --git a/blocksuite/affine/model/src/blocks/transcription/index.ts b/blocksuite/affine/model/src/blocks/transcription/index.ts deleted file mode 100644 index 2875594e6f..0000000000 --- a/blocksuite/affine/model/src/blocks/transcription/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './transcription-model.js'; diff --git a/packages/frontend/core/src/blocksuite/ai/blocks/ai-chat-block/ai-transcription-block.ts b/packages/frontend/core/src/blocksuite/ai/blocks/ai-chat-block/ai-transcription-block.ts index ff4897479f..d8e7eb5b4d 100644 --- a/packages/frontend/core/src/blocksuite/ai/blocks/ai-chat-block/ai-transcription-block.ts +++ b/packages/frontend/core/src/blocksuite/ai/blocks/ai-chat-block/ai-transcription-block.ts @@ -1,4 +1,4 @@ -import type { TranscriptionBlockModel } from '@blocksuite/affine/model'; +import type { TranscriptionBlockModel } from '@affine/core/blocksuite/ai/blocks/transcription-block/model'; import { BlockComponent, BlockViewExtension } from '@blocksuite/affine/std'; import type { ExtensionType } from '@blocksuite/affine/store'; import { css, type PropertyValues } from 'lit'; diff --git a/blocksuite/affine/model/src/blocks/transcription/transcription-model.ts b/packages/frontend/core/src/blocksuite/ai/blocks/transcription-block/model.ts similarity index 96% rename from blocksuite/affine/model/src/blocks/transcription/transcription-model.ts rename to packages/frontend/core/src/blocksuite/ai/blocks/transcription-block/model.ts index 1e19d8971f..d91eb8d23c 100644 --- a/blocksuite/affine/model/src/blocks/transcription/transcription-model.ts +++ b/packages/frontend/core/src/blocksuite/ai/blocks/transcription-block/model.ts @@ -2,7 +2,7 @@ import { BlockModel, BlockSchemaExtension, defineBlockSchema, -} from '@blocksuite/store'; +} from '@blocksuite/affine/store'; export const TranscriptionBlockFlavour = 'affine:transcription'; diff --git a/packages/frontend/core/src/blocksuite/attachment-viewer/audio/transcription-block.tsx b/packages/frontend/core/src/blocksuite/attachment-viewer/audio/transcription-block.tsx index 41f534611d..3e3ed2f1bf 100644 --- a/packages/frontend/core/src/blocksuite/attachment-viewer/audio/transcription-block.tsx +++ b/packages/frontend/core/src/blocksuite/attachment-viewer/audio/transcription-block.tsx @@ -1,6 +1,6 @@ import { createReactComponentFromLit } from '@affine/component'; import { LitTranscriptionBlock } from '@affine/core/blocksuite/ai/blocks/ai-chat-block/ai-transcription-block'; -import type { TranscriptionBlockModel } from '@blocksuite/affine/model'; +import type { TranscriptionBlockModel } from '@affine/core/blocksuite/ai/blocks/transcription-block/model'; import { LiveData, useLiveData } from '@toeverything/infra'; import React, { useCallback, useMemo } from 'react'; diff --git a/packages/frontend/core/src/blocksuite/manager/migrating-store.ts b/packages/frontend/core/src/blocksuite/manager/migrating-store.ts index f193b95db0..ea515bc255 100644 --- a/packages/frontend/core/src/blocksuite/manager/migrating-store.ts +++ b/packages/frontend/core/src/blocksuite/manager/migrating-store.ts @@ -6,6 +6,7 @@ import { import { getInternalStoreExtensions } from '@blocksuite/affine/extensions/store'; import { AIChatBlockSchemaExtension } from '../ai/blocks/ai-chat-block/model'; +import { TranscriptionBlockSchemaExtension } from '../ai/blocks/transcription-block/model'; class MigratingAffineStoreExtension extends StoreExtensionProvider { override name = 'affine-store-extensions'; @@ -13,6 +14,7 @@ class MigratingAffineStoreExtension extends StoreExtensionProvider { override setup(context: StoreExtensionContext) { super.setup(context); context.register(AIChatBlockSchemaExtension); + context.register(TranscriptionBlockSchemaExtension); } } diff --git a/packages/frontend/core/src/modules/media/entities/audio-attachment-block.ts b/packages/frontend/core/src/modules/media/entities/audio-attachment-block.ts index 4369cb1097..ed2092766e 100644 --- a/packages/frontend/core/src/modules/media/entities/audio-attachment-block.ts +++ b/packages/frontend/core/src/modules/media/entities/audio-attachment-block.ts @@ -1,13 +1,13 @@ +import { + TranscriptionBlockFlavour, + type TranscriptionBlockModel, +} from '@affine/core/blocksuite/ai/blocks/transcription-block/model'; import { insertFromMarkdown } from '@affine/core/blocksuite/utils'; import { encodeAudioBlobToOpusSlices } from '@affine/core/utils/webm-encoding'; import { DebugLogger } from '@affine/debug'; import { AiJobStatus } from '@affine/graphql'; import track from '@affine/track'; -import { - type AttachmentBlockModel, - TranscriptionBlockFlavour, - type TranscriptionBlockModel, -} from '@blocksuite/affine/model'; +import type { AttachmentBlockModel } from '@blocksuite/affine/model'; import type { AffineTextAttributes } from '@blocksuite/affine/shared/types'; import { type DeltaInsert, Text } from '@blocksuite/affine/store'; import { computed } from '@preact/signals-core'; diff --git a/packages/frontend/core/src/modules/media/entities/audio-transcription-job.ts b/packages/frontend/core/src/modules/media/entities/audio-transcription-job.ts index c73f3b5bc8..b119c971ea 100644 --- a/packages/frontend/core/src/modules/media/entities/audio-transcription-job.ts +++ b/packages/frontend/core/src/modules/media/entities/audio-transcription-job.ts @@ -1,8 +1,8 @@ import { shallowEqual } from '@affine/component'; +import type { TranscriptionBlockProps } from '@affine/core/blocksuite/ai/blocks/transcription-block/model'; import { DebugLogger } from '@affine/debug'; import { UserFriendlyError } from '@affine/error'; import { AiJobStatus } from '@affine/graphql'; -import type { TranscriptionBlockProps } from '@blocksuite/affine/model'; import { Entity, LiveData } from '@toeverything/infra'; import type { DefaultServerService, WorkspaceServerService } from '../../cloud'; diff --git a/packages/frontend/core/src/modules/workspace/global-schema.ts b/packages/frontend/core/src/modules/workspace/global-schema.ts index 24a332a1fc..943d5185f7 100644 --- a/packages/frontend/core/src/modules/workspace/global-schema.ts +++ b/packages/frontend/core/src/modules/workspace/global-schema.ts @@ -1,4 +1,5 @@ import { AIChatBlockSchema } from '@affine/core/blocksuite/ai/blocks/ai-chat-block/model'; +import { TranscriptionBlockSchema } from '@affine/core/blocksuite/ai/blocks/transcription-block/model'; import { AffineSchemas } from '@blocksuite/affine/schemas'; import { Schema } from '@blocksuite/affine/store'; @@ -7,7 +8,11 @@ export function getAFFiNEWorkspaceSchema() { if (!_schema) { _schema = new Schema(); - _schema.register([...AffineSchemas, AIChatBlockSchema]); + _schema.register([ + ...AffineSchemas, + AIChatBlockSchema, + TranscriptionBlockSchema, + ]); } return _schema;