From 39a5d8e64ff1830c5d0052b5e864633988caed98 Mon Sep 17 00:00:00 2001 From: fundon Date: Thu, 12 Sep 2024 11:56:07 +0000 Subject: [PATCH] fix(core): reference link icon (#8223) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes [AF-1384](https://linear.app/affine-design/issue/AF-1384/edgeless-reference-icon-在fail版本中显示不正确) --- .../components/affine/reference-link/index.tsx | 16 ++++++++++------ .../blocksuite/block-suite-editor/lit-adaper.tsx | 3 +-- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/packages/frontend/core/src/components/affine/reference-link/index.tsx b/packages/frontend/core/src/components/affine/reference-link/index.tsx index 2ebc2ff3c..b3c15b549 100644 --- a/packages/frontend/core/src/components/affine/reference-link/index.tsx +++ b/packages/frontend/core/src/components/affine/reference-link/index.tsx @@ -16,7 +16,7 @@ import { TodayIcon, } from '@blocksuite/icons/rc'; import type { DocCollection } from '@blocksuite/store'; -import { useService } from '@toeverything/infra'; +import { DocsService, useLiveData, useService } from '@toeverything/infra'; import { nanoid } from 'nanoid'; import { type PropsWithChildren, @@ -38,6 +38,7 @@ export interface PageReferenceRendererOptions { // Link to block or element linkToNode?: boolean; } + // use a function to be rendered in the lit renderer export function pageReferenceRenderer({ pageId, @@ -86,28 +87,31 @@ export function AffinePageReference({ pageId, docCollection, wrapper: Wrapper, - mode = 'page', params, }: { pageId: string; docCollection: DocCollection; wrapper?: React.ComponentType; - mode?: DocMode; params?: URLSearchParams; }) { + const t = useI18n(); const pageMetaHelper = useDocMetaHelper(); const journalHelper = useJournalHelper(docCollection); - const t = useI18n(); + const docsService = useService(DocsService); + const mode = useLiveData(docsService.list.primaryMode$(pageId)); let linkWithMode: DocMode | null = null; let linkToNode = false; if (params) { - linkWithMode = params.get('mode') as DocMode; + const m = params.get('mode'); + if (m && (m === 'page' || m === 'edgeless')) { + linkWithMode = m as DocMode; + } linkToNode = params.has('blockIds') || params.has('elementIds'); } const el = pageReferenceRenderer({ - docMode: linkWithMode ?? mode, + docMode: linkWithMode ?? mode ?? 'page', pageId, pageMetaHelper, journalHelper, diff --git a/packages/frontend/core/src/components/blocksuite/block-suite-editor/lit-adaper.tsx b/packages/frontend/core/src/components/blocksuite/block-suite-editor/lit-adaper.tsx index ad7412c1a..2c7d2f6c8 100644 --- a/packages/frontend/core/src/components/blocksuite/block-suite-editor/lit-adaper.tsx +++ b/packages/frontend/core/src/components/blocksuite/block-suite-editor/lit-adaper.tsx @@ -97,12 +97,11 @@ const usePatchSpecs = (page: Doc, shared: boolean, mode: DocMode) => { ); }; - }, [mode, page.collection]); + }, [page.collection]); const specs = useMemo(() => { const enableAI = featureFlagService.flags.enable_ai.value;