mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-17 22:37:04 +08:00
feat(editor): put current user in first on database user select (#13320)
This commit is contained in:
@@ -48,10 +48,24 @@ class MemberManager {
|
||||
selectedMemberId = signal<string | null>(null);
|
||||
|
||||
filteredMembers = computed(() => {
|
||||
return this.ops.userListService.users$.value.filter(
|
||||
member =>
|
||||
!member.removed && !this.selectedMembers.value.includes(member.id)
|
||||
);
|
||||
const isSearching = this.userListService.searchText$.value !== '';
|
||||
if (isSearching) {
|
||||
return this.ops.userListService.users$.value.filter(
|
||||
member =>
|
||||
!member.removed && !this.selectedMembers.value.includes(member.id)
|
||||
);
|
||||
} else {
|
||||
const currentUser = this.ops.userService.currentUserInfo$.value;
|
||||
return [
|
||||
...(currentUser ? [currentUser] : []),
|
||||
...this.ops.userListService.users$.value.filter(
|
||||
member => member.id !== currentUser?.id
|
||||
),
|
||||
].filter(
|
||||
member =>
|
||||
!member.removed && !this.selectedMembers.value.includes(member.id)
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
constructor(private readonly ops: MemberManagerOptions) {}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { PublicUserService } from '@affine/core/modules/cloud';
|
||||
import { AuthService, PublicUserService } from '@affine/core/modules/cloud';
|
||||
import { MemberSearchService } from '@affine/core/modules/permissions';
|
||||
import {
|
||||
type ViewExtensionContext,
|
||||
@@ -31,10 +31,11 @@ export class CloudViewExtension extends ViewExtensionProvider<CloudViewOptions>
|
||||
}
|
||||
const memberSearchService = framework.get(MemberSearchService);
|
||||
const publicUserService = framework.get(PublicUserService);
|
||||
const authService = framework.get(AuthService);
|
||||
|
||||
context.register([
|
||||
patchUserListExtensions(memberSearchService),
|
||||
patchUserExtensions(publicUserService),
|
||||
patchUserExtensions(publicUserService, authService),
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,30 @@
|
||||
import type { PublicUserService } from '@affine/core/modules/cloud';
|
||||
import type {
|
||||
AuthService,
|
||||
PublicUserService,
|
||||
} from '@affine/core/modules/cloud';
|
||||
import { UserFriendlyError } from '@affine/error';
|
||||
import { UserServiceExtension } from '@blocksuite/affine/shared/services';
|
||||
import {
|
||||
type AffineUserInfo,
|
||||
UserServiceExtension,
|
||||
} from '@blocksuite/affine/shared/services';
|
||||
|
||||
export function patchUserExtensions(publicUserService: PublicUserService) {
|
||||
export function patchUserExtensions(
|
||||
publicUserService: PublicUserService,
|
||||
authService: AuthService
|
||||
) {
|
||||
return UserServiceExtension({
|
||||
// eslint-disable-next-line rxjs/finnish
|
||||
currentUserInfo$: authService.session.account$.map(account => {
|
||||
if (!account) {
|
||||
return null;
|
||||
}
|
||||
return {
|
||||
id: account.id,
|
||||
name: account.label,
|
||||
avatar: account.avatar,
|
||||
removed: false,
|
||||
} as AffineUserInfo;
|
||||
}).signal,
|
||||
// eslint-disable-next-line rxjs/finnish
|
||||
userInfo$(id) {
|
||||
return publicUserService.publicUser$(id).signal;
|
||||
|
||||
Reference in New Issue
Block a user