feat(core): add user list service for blocksuite (#10627)

This commit is contained in:
EYHN
2025-03-05 10:06:13 +00:00
parent 47d01f5f66
commit 201c3438ba
9 changed files with 73 additions and 33 deletions
@@ -19,6 +19,7 @@ import { FeatureFlagService } from '@affine/core/modules/feature-flag';
import { JournalService } from '@affine/core/modules/journal';
import { toURLSearchParams } from '@affine/core/modules/navigation';
import { PeekViewService } from '@affine/core/modules/peek-view/services/peek-view';
import { MemberSearchService } from '@affine/core/modules/permissions';
import { WorkspaceService } from '@affine/core/modules/workspace';
import track from '@affine/track';
import {
@@ -69,6 +70,7 @@ import {
type ReferenceReactRenderer,
} from '../extensions/reference-renderer';
import { patchSideBarService } from '../extensions/side-bar-service';
import { patchUserListExtensions } from '../extensions/user-list';
import { BiDirectionalLinkPanel } from './bi-directional-link-panel';
import { BlocksuiteEditorJournalDocTitle } from './journal-doc-title';
import { StarterBar } from './starter-bar';
@@ -90,6 +92,7 @@ const usePatchSpecs = (mode: DocMode) => {
editorService,
workspaceService,
featureFlagService,
memberSearchService,
} = useServices({
PeekViewService,
DocService,
@@ -97,6 +100,7 @@ const usePatchSpecs = (mode: DocMode) => {
WorkspaceService,
EditorService,
FeatureFlagService,
MemberSearchService,
});
const framework = useFramework();
const referenceRenderer: ReferenceReactRenderer = useMemo(() => {
@@ -151,6 +155,7 @@ const usePatchSpecs = (mode: DocMode) => {
patchPeekViewService(peekViewService),
patchOpenDocExtension(),
EdgelessClipboardWatcher,
patchUserListExtensions(memberSearchService),
patchDocUrlExtensions(framework),
patchQuickSearchService(framework),
patchSideBarService(framework),
@@ -173,18 +178,19 @@ const usePatchSpecs = (mode: DocMode) => {
return builder.value;
}, [
framework,
mode,
enableAI,
reactToLit,
referenceRenderer,
confirmModal,
peekViewService,
memberSearchService,
docService,
docsService,
editorService,
framework,
peekViewService,
reactToLit,
referenceRenderer,
featureFlagService,
enableAI,
enableTurboRenderer,
featureFlagService.flags.enable_pdf_embed_preview.value,
]);
return [
@@ -0,0 +1,23 @@
import type { MemberSearchService } from '@affine/core/modules/permissions';
import { UserListServiceExtension } from '@blocksuite/affine/blocks';
export function patchUserListExtensions(memberSearch: MemberSearchService) {
return UserListServiceExtension({
// eslint-disable-next-line rxjs/finnish
hasMore$: memberSearch.hasMore$.signal,
loadMore() {
memberSearch.loadMore();
},
search(keyword) {
memberSearch.search(keyword);
},
// eslint-disable-next-line rxjs/finnish
users$: memberSearch.result$.map(users =>
users.map(u => ({
id: u.id,
name: u.name,
avatar: u.avatarUrl,
}))
).signal,
});
}