feat: Add user metadata changing display name and description with sync
Some checks failed
Queue Release Build / prepare (push) Successful in 27s
Deploy Web Apps / deploy (push) Failing after 4m58s
Queue Release Build / build-linux (push) Failing after 10m55s
Queue Release Build / build-windows (push) Successful in 16m14s
Queue Release Build / finalize (push) Has been skipped

This commit is contained in:
2026-04-17 22:04:18 +02:00
parent 3ba8a2c9eb
commit 180333dc35
34 changed files with 1165 additions and 119 deletions

View File

@@ -37,6 +37,41 @@ import {
upsertRoomMember
} from './room-members.helpers';
export function buildRosterAvatarBackfillActions(
members: RoomMember[],
currentUser: Pick<User, 'id' | 'oderId'> | null | undefined
): ReturnType<typeof UsersActions.upsertRemoteUserAvatar>[] {
const currentUserId = currentUser?.oderId || currentUser?.id;
return members.flatMap((member) => {
const memberId = member.oderId || member.id;
const hasProfileData = !!member.avatarUrl
|| !!member.avatarHash
|| !!member.avatarUpdatedAt
|| !!member.profileUpdatedAt
|| typeof member.description === 'string';
if (!memberId || memberId === currentUserId || !hasProfileData) {
return [];
}
return [UsersActions.upsertRemoteUserAvatar({
user: {
id: member.id,
oderId: memberId,
username: member.username,
displayName: member.displayName,
description: member.description,
profileUpdatedAt: member.profileUpdatedAt,
avatarUrl: member.avatarUrl,
avatarHash: member.avatarHash,
avatarMime: member.avatarMime,
avatarUpdatedAt: member.avatarUpdatedAt
}
})];
});
}
@Injectable()
export class RoomMembersSyncEffects {
private readonly actions$ = inject(Actions);
@@ -394,7 +429,10 @@ export class RoomMembersSyncEffects {
);
}
return this.createRoomMemberUpdateActions(room, members);
return [
...this.createRoomMemberUpdateActions(room, members),
...buildRosterAvatarBackfillActions(members, currentUser)
];
}
private handleMemberLeave(