feat(core): extract DocDisplayMetaService to resolve doc icon/title (#8226)

AF-1315
This commit is contained in:
CatsJuice
2024-09-19 01:25:02 +00:00
parent f397815ad1
commit f4a19921c4
26 changed files with 361 additions and 383 deletions

View File

@@ -9,9 +9,9 @@ import {
import { truncate } from 'lodash-es';
import { EMPTY, map, mergeMap, of, switchMap } from 'rxjs';
import type { DocDisplayMetaService } from '../../doc-display-meta';
import type { DocsSearchService } from '../../docs-search';
import type { QuickSearchSession } from '../providers/quick-search-provider';
import type { DocDisplayMetaService } from '../services/doc-display-meta';
import type { QuickSearchItem } from '../types/item';
interface DocsPayload {

View File

@@ -4,10 +4,10 @@ import type { DocsService, WorkspaceService } from '@toeverything/infra';
import { Entity, LiveData } from '@toeverything/infra';
import { omit, truncate } from 'lodash-es';
import type { DocDisplayMetaService } from '../../doc-display-meta';
import { resolveLinkToDoc } from '../../navigation';
import { isLink } from '../../navigation/utils';
import type { QuickSearchSession } from '../providers/quick-search-provider';
import type { DocDisplayMetaService } from '../services/doc-display-meta';
import type { QuickSearchItem } from '../types/item';
type LinkPayload = { docId: string } & ReferenceParams;

View File

@@ -1,7 +1,7 @@
import { Entity, LiveData } from '@toeverything/infra';
import type { DocDisplayMetaService } from '../../doc-display-meta';
import type { QuickSearchSession } from '../providers/quick-search-provider';
import type { DocDisplayMetaService } from '../services/doc-display-meta';
import type { RecentDocsService } from '../services/recent-pages';
import type { QuickSearchGroup } from '../types/group';
import type { QuickSearchItem } from '../types/item';

View File

@@ -8,8 +8,8 @@ import {
} from '@toeverything/infra';
import { CollectionService } from '../collection';
import { DocDisplayMetaService } from '../doc-display-meta/services/doc-display-meta';
import { DocsSearchService } from '../docs-search';
import { WorkspacePropertiesAdapter } from '../properties';
import { TagService } from '../tag';
import { WorkbenchService } from '../workbench';
import { QuickSearch } from './entities/quick-search';
@@ -22,7 +22,6 @@ import { LinksQuickSearchSession } from './impls/links';
import { RecentDocsQuickSearchSession } from './impls/recent-docs';
import { TagsQuickSearchSession } from './impls/tags';
import { CMDKQuickSearchService } from './services/cmdk';
import { DocDisplayMetaService } from './services/doc-display-meta';
import { QuickSearchService } from './services/quick-search';
import { RecentDocsService } from './services/recent-pages';
@@ -50,7 +49,6 @@ export function configureQuickSearchModule(framework: Framework) {
DocsService,
])
.service(RecentDocsService, [WorkspaceLocalState, DocsService])
.service(DocDisplayMetaService, [WorkspacePropertiesAdapter])
.entity(QuickSearch)
.entity(CommandsQuickSearchSession, [GlobalContextService])
.entity(DocsQuickSearchSession, [

View File

@@ -1,37 +0,0 @@
import { i18nTime } from '@affine/i18n';
import { EdgelessIcon, PageIcon, TodayIcon } from '@blocksuite/icons/rc';
import type { DocRecord } from '@toeverything/infra';
import { Service } from '@toeverything/infra';
import type { WorkspacePropertiesAdapter } from '../../properties';
export class DocDisplayMetaService extends Service {
constructor(private readonly propertiesAdapter: WorkspacePropertiesAdapter) {
super();
}
getDocDisplayMeta(docRecord: DocRecord, originalTitle?: string) {
const journalDateString = this.propertiesAdapter.getJournalPageDateString(
docRecord.id
);
const icon = journalDateString
? TodayIcon
: docRecord.primaryMode$.value === 'edgeless'
? EdgelessIcon
: PageIcon;
const title = journalDateString
? i18nTime(journalDateString, { absolute: { accuracy: 'day' } })
: originalTitle ||
docRecord.meta$.value.title ||
({
key: 'Untitled',
} as const);
return {
title: title,
icon: icon,
updatedDate: docRecord.meta$.value.updatedDate,
};
}
}