From 16063340d085b9d7d767bd84e45230696290ec93 Mon Sep 17 00:00:00 2001 From: EYHN Date: Tue, 26 Mar 2024 08:53:14 +0000 Subject: [PATCH] fix(core): fix meta.xxx is undefined (#6321) --- packages/common/infra/src/page/record.ts | 4 ++-- packages/frontend/core/src/components/pure/cmdk/main.tsx | 6 +++--- .../src/modules/multi-tab-sidebar/entities/tabs/journal.tsx | 2 +- packages/frontend/core/src/modules/tag/entities/tag.ts | 6 +++--- packages/frontend/core/src/modules/tag/service/tag.ts | 2 +- .../core/src/pages/workspace/detail-page/detail-page.tsx | 2 +- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/common/infra/src/page/record.ts b/packages/common/infra/src/page/record.ts index 4abc68177..faf7f3bda 100644 --- a/packages/common/infra/src/page/record.ts +++ b/packages/common/infra/src/page/record.ts @@ -14,7 +14,7 @@ export class PageRecord { private readonly localState: WorkspaceLocalState ) {} - meta$ = LiveData.from( + meta$ = LiveData.from>( new Observable(subscriber => { const emit = () => { const meta = this.workspace.docCollection.meta.docMetas.find( @@ -60,5 +60,5 @@ export class PageRecord { return this.mode$.value; } - title$ = this.meta$.map(meta => meta.title); + title$ = this.meta$.map(meta => meta.title ?? ''); } diff --git a/packages/frontend/core/src/components/pure/cmdk/main.tsx b/packages/frontend/core/src/components/pure/cmdk/main.tsx index 9b0680ff9..36c00d622 100644 --- a/packages/frontend/core/src/components/pure/cmdk/main.tsx +++ b/packages/frontend/core/src/components/pure/cmdk/main.tsx @@ -155,7 +155,7 @@ export const CMDKContainer = ({ open: boolean; className?: string; query: string; - pageMeta?: DocMeta; + pageMeta?: Partial; groups: ReturnType; onQueryChange: (query: string) => void; }>) => { @@ -234,7 +234,7 @@ const CMDKQuickSearchModalInner = ({ pageMeta, open, ...props -}: CMDKModalProps & { pageMeta?: DocMeta }) => { +}: CMDKModalProps & { pageMeta?: Partial }) => { const [query, setQuery] = useAtom(cmdkQueryAtom); useLayoutEffect(() => { if (open) { @@ -260,7 +260,7 @@ export const CMDKQuickSearchModal = ({ pageMeta, open, ...props -}: CMDKModalProps & { pageMeta?: DocMeta }) => { +}: CMDKModalProps & { pageMeta?: Partial }) => { return ( }> diff --git a/packages/frontend/core/src/modules/multi-tab-sidebar/entities/tabs/journal.tsx b/packages/frontend/core/src/modules/multi-tab-sidebar/entities/tabs/journal.tsx index d1a15194e..71252aa9e 100644 --- a/packages/frontend/core/src/modules/multi-tab-sidebar/entities/tabs/journal.tsx +++ b/packages/frontend/core/src/modules/multi-tab-sidebar/entities/tabs/journal.tsx @@ -316,7 +316,7 @@ const ConflictList = ({ setTrashModal({ open: true, pageIds: [pageRecord.id], - pageTitles: [pageRecord.meta$.value.title], + pageTitles: [pageRecord.title$.value], }); }, [setTrashModal] diff --git a/packages/frontend/core/src/modules/tag/entities/tag.ts b/packages/frontend/core/src/modules/tag/entities/tag.ts index bc1f8f7b3..455002194 100644 --- a/packages/frontend/core/src/modules/tag/entities/tag.ts +++ b/packages/frontend/core/src/modules/tag/entities/tag.ts @@ -50,7 +50,7 @@ export class Tag { return; } pageRecord?.setMeta({ - tags: [...pageRecord.meta$.value.tags, this.id], + tags: [...(pageRecord.meta$.value.tags ?? []), this.id], }); } @@ -60,14 +60,14 @@ export class Tag { return; } pageRecord?.setMeta({ - tags: pageRecord.meta$.value.tags.filter(tagId => tagId !== this.id), + tags: pageRecord.meta$.value.tags?.filter(tagId => tagId !== this.id), }); } readonly pageIds$ = LiveData.computed(get => { const pages = get(this.pageRecordList.records$); return pages - .filter(page => get(page.meta$).tags.includes(this.id)) + .filter(page => get(page.meta$).tags?.includes(this.id)) .map(page => page.id); }); } diff --git a/packages/frontend/core/src/modules/tag/service/tag.ts b/packages/frontend/core/src/modules/tag/service/tag.ts index f2231bfac..e1d6a25b8 100644 --- a/packages/frontend/core/src/modules/tag/service/tag.ts +++ b/packages/frontend/core/src/modules/tag/service/tag.ts @@ -41,7 +41,7 @@ export class TagService { if (!pageRecord) return []; const tagIds = get(pageRecord.meta$).tags; - return get(this.tags$).filter(tag => tagIds.includes(tag.id)); + return get(this.tags$).filter(tag => (tagIds ?? []).includes(tag.id)); }); } 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 0c225c73d..17e81f22c 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 @@ -163,7 +163,7 @@ const DetailPageImpl = memo(function DetailPageImpl() { const updatedDate = linkedPage.meta$.value.updatedDate; const createDate = linkedPage.meta$.value.createDate; - return updatedDate ? new Date(updatedDate) : new Date(createDate); + return new Date(updatedDate || createDate || Date.now()); }; page.setMode(mode);