fix(core): make all docs journal judgement reactive (#9290)

This commit is contained in:
CatsJuice
2024-12-25 01:41:16 +00:00
parent d63ba079ee
commit 727f21d78f
2 changed files with 51 additions and 6 deletions
@@ -1,12 +1,12 @@
import { DocsService } from '@affine/core/modules/doc';
import { JournalService } from '@affine/core/modules/journal';
import { WorkspaceService } from '@affine/core/modules/workspace';
import type { DocCollection, DocMeta } from '@blocksuite/affine/store';
import { useService } from '@toeverything/infra';
import { LiveData, useLiveData, useService } from '@toeverything/infra';
import { useCallback, useMemo } from 'react';
import { useAsyncCallback } from './affine-async-hooks';
import { useAllBlockSuiteDocMeta } from './use-all-block-suite-page-meta';
import { useJournalInfoHelper } from './use-journal';
/**
* Get pageMetas excluding journal pages without updatedDate
@@ -15,13 +15,26 @@ import { useJournalInfoHelper } from './use-journal';
*/
export function useBlockSuiteDocMeta(docCollection: DocCollection) {
const pageMetas = useAllBlockSuiteDocMeta(docCollection);
const { isPageJournal } = useJournalInfoHelper();
const journalService = useService(JournalService);
const journalIds = useLiveData(
useMemo(
() =>
LiveData.computed(get =>
pageMetas
.map(meta => meta.id)
.filter(id => !!get(journalService.journalDate$(id)))
),
[pageMetas, journalService]
)
);
return useMemo(
() =>
pageMetas.filter(
pageMeta => !isPageJournal(pageMeta.id) || !!pageMeta.updatedDate
pageMeta => !journalIds.includes(pageMeta.id) || !!pageMeta.updatedDate
),
[isPageJournal, pageMetas]
[journalIds, pageMetas]
);
}