From b06aeb22dd440284d5a9952d20b47a9f836fbd03 Mon Sep 17 00:00:00 2001 From: Lye Hongtao Date: Tue, 5 Mar 2024 14:35:53 +0800 Subject: [PATCH] fix: view in edgeless button of surface block (#6013) Co-authored-by: donteatfriedrice Co-authored-by: Chen <99816898+donteatfriedrice@users.noreply.github.com> --- .../workspace/detail-page/detail-page.tsx | 27 +++++++++++++------ 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/packages/frontend/core/src/pages/workspace/detail-page/detail-page.tsx b/packages/frontend/core/src/pages/workspace/detail-page/detail-page.tsx index 523c9b7c2b..34b1e4fef5 100644 --- a/packages/frontend/core/src/pages/workspace/detail-page/detail-page.tsx +++ b/packages/frontend/core/src/pages/workspace/detail-page/detail-page.tsx @@ -9,6 +9,7 @@ import { EmbedYoutubeService, ImageService, } from '@blocksuite/blocks'; +import { DisposableGroup } from '@blocksuite/global/utils'; import type { AffineEditorContainer } from '@blocksuite/presets'; import type { Doc as BlockSuiteDoc } from '@blocksuite/store'; import { @@ -134,6 +135,8 @@ const DetailPageImpl = memo(function DetailPageImpl() { // provide page mode and updated date to blocksuite const pageService = editorHost.std.spec.getService('affine:page'); + const disposable = new DisposableGroup(); + pageService.getEditorMode = (pageId: string) => pageRecordList.record(pageId).value?.mode.value ?? 'page'; pageService.getDocUpdatedAt = (pageId: string) => { @@ -147,18 +150,26 @@ const DetailPageImpl = memo(function DetailPageImpl() { page.setMode(mode); // fixme: it seems pageLinkClicked is not triggered sometimes? - const dispose = editor.slots.docLinkClicked.on(({ docId }) => { - return openPage(blockSuiteWorkspace.id, docId); - }); - const disposeTagClick = editor.slots.tagClicked.on(({ tagId }) => { - jumpToTag(currentWorkspace.id, tagId); - }); + disposable.add( + editor.slots.docLinkClicked.on(({ docId }) => { + return openPage(blockSuiteWorkspace.id, docId); + }) + ); + disposable.add( + editor.slots.tagClicked.on(({ tagId }) => { + jumpToTag(currentWorkspace.id, tagId); + }) + ); + disposable.add( + pageService.slots.editorModeSwitch.on(mode => { + page.setMode(mode); + }) + ); setEditor(editor); return () => { - dispose.dispose(); - disposeTagClick.dispose(); + disposable.dispose(); }; }, [