From 26d2ed8afb4b575388a70c3418cd0d758b1151e1 Mon Sep 17 00:00:00 2001 From: L-Sun Date: Sun, 13 Apr 2025 05:32:15 +0000 Subject: [PATCH] chore(editor): hide file and doc import entries for mobile (#11648) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Close [BS-2926](https://linear.app/affine-design/issue/BS-2926/【移动端-ios】-选择import,无反应) Close [BS-2927](https://linear.app/affine-design/issue/BS-2927/【移动端-ios】隐藏toolbar上附件入口) --- .../src/widgets/keyboard-toolbar/config.ts | 6 +- .../affine/widgets/linked-doc/src/config.ts | 135 +++++++++--------- 2 files changed, 72 insertions(+), 69 deletions(-) diff --git a/blocksuite/affine/blocks/root/src/widgets/keyboard-toolbar/config.ts b/blocksuite/affine/blocks/root/src/widgets/keyboard-toolbar/config.ts index 31cc1bbf89..47c656cfec 100644 --- a/blocksuite/affine/blocks/root/src/widgets/keyboard-toolbar/config.ts +++ b/blocksuite/affine/blocks/root/src/widgets/keyboard-toolbar/config.ts @@ -428,8 +428,7 @@ const contentMediaToolGroup: KeyboardToolPanelGroup = { { name: 'Attachment', icon: AttachmentIcon(), - showWhen: ({ std }) => - std.store.schema.flavourSchemaMap.has('affine:attachment'), + showWhen: () => false, action: async ({ std }) => { const [_, { selectedModels }] = std.command.exec( getSelectedModelsCommand @@ -1029,8 +1028,7 @@ export const defaultKeyboardToolbarConfig: KeyboardToolbarConfig = { { name: 'Attachment', icon: AttachmentIcon(), - showWhen: ({ std }) => - std.store.schema.flavourSchemaMap.has('affine:attachment'), + showWhen: () => false, action: async ({ std }) => { const [_, { selectedModels }] = std.command.exec( getSelectedModelsCommand diff --git a/blocksuite/affine/widgets/linked-doc/src/config.ts b/blocksuite/affine/widgets/linked-doc/src/config.ts index 42f04914bb..44d841989f 100644 --- a/blocksuite/affine/widgets/linked-doc/src/config.ts +++ b/blocksuite/affine/widgets/linked-doc/src/config.ts @@ -16,6 +16,7 @@ import { isFuzzyMatch, type Signal, } from '@blocksuite/affine-shared/utils'; +import { IS_MOBILE } from '@blocksuite/global/env'; import { type BlockStdScope, ConfigExtensionFactory, @@ -175,73 +176,77 @@ export function createNewDocMenuGroup( docName.slice(0, DISPLAY_NAME_LENGTH) + (docName.length > DISPLAY_NAME_LENGTH ? '..' : ''); + const items: LinkedMenuItem[] = [ + { + key: 'create', + name: `Create "${displayDocName}" doc`, + icon: NewDocIcon, + action: () => { + abort(); + const docName = query; + const newDoc = createDefaultDoc(doc.workspace, { + title: docName, + }); + insertLinkedNode({ + inlineEditor, + docId: newDoc.id, + }); + const telemetryService = editorHost.std.getOptional(TelemetryProvider); + telemetryService?.track('LinkedDocCreated', { + control: 'new doc', + module: 'inline @', + type: 'doc', + other: 'new doc', + }); + telemetryService?.track('DocCreated', { + control: 'new doc', + module: 'inline @', + type: 'doc', + }); + }, + }, + ]; + + if (!IS_MOBILE) { + items.push({ + key: 'import', + name: 'Import', + icon: ImportIcon, + action: () => { + abort(); + const onSuccess = ( + docIds: string[], + options: { + importedCount: number; + } + ) => { + toast( + editorHost, + `Successfully imported ${options.importedCount} Doc${options.importedCount > 1 ? 's' : ''}.` + ); + for (const docId of docIds) { + insertLinkedNode({ + inlineEditor, + docId, + }); + } + }; + const onFail = (message: string) => { + toast(editorHost, message); + }; + showImportModal({ + collection: doc.workspace, + schema: doc.schema, + onSuccess, + onFail, + }); + }, + }); + } + return { name: 'New Doc', - items: [ - { - key: 'create', - name: `Create "${displayDocName}" doc`, - icon: NewDocIcon, - action: () => { - abort(); - const docName = query; - const newDoc = createDefaultDoc(doc.workspace, { - title: docName, - }); - insertLinkedNode({ - inlineEditor, - docId: newDoc.id, - }); - const telemetryService = - editorHost.std.getOptional(TelemetryProvider); - telemetryService?.track('LinkedDocCreated', { - control: 'new doc', - module: 'inline @', - type: 'doc', - other: 'new doc', - }); - telemetryService?.track('DocCreated', { - control: 'new doc', - module: 'inline @', - type: 'doc', - }); - }, - }, - { - key: 'import', - name: 'Import', - icon: ImportIcon, - action: () => { - abort(); - const onSuccess = ( - docIds: string[], - options: { - importedCount: number; - } - ) => { - toast( - editorHost, - `Successfully imported ${options.importedCount} Doc${options.importedCount > 1 ? 's' : ''}.` - ); - for (const docId of docIds) { - insertLinkedNode({ - inlineEditor, - docId, - }); - } - }; - const onFail = (message: string) => { - toast(editorHost, message); - }; - showImportModal({ - collection: doc.workspace, - schema: doc.schema, - onSuccess, - onFail, - }); - }, - }, - ], + items, }; }