From 48d9aa2c3ede5d9d78aaf3e1197b54e4a5ee8ed6 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Tue, 29 Sep 2020 10:53:04 +0100 Subject: [PATCH] MELS use latest avatar rather than the first avatar Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- .../views/elements/MemberEventListSummary.tsx | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/components/views/elements/MemberEventListSummary.tsx b/src/components/views/elements/MemberEventListSummary.tsx index 41f468fdd7..d65489e77b 100644 --- a/src/components/views/elements/MemberEventListSummary.tsx +++ b/src/components/views/elements/MemberEventListSummary.tsx @@ -401,16 +401,21 @@ export default class MemberEventListSummary extends React.Component { render() { const eventsToRender = this.props.events; - // Object mapping user IDs to an array of IUserEvents: - const userEvents: Record = {}; + // Map user IDs to latest Avatar Member. ES6 Maps are ordered by when the key was created, + // so this works perfectly for us to match event order whilst storing the latest Avatar Member + const latestUserAvatarMember = new Map(); - const avatarMembers: RoomMember[] = []; + // Object mapping user IDs to an array of IUserEvents + const userEvents: Record = {}; eventsToRender.forEach((e, index) => { const userId = e.getStateKey(); // Initialise a user's events if (!userEvents[userId]) { userEvents[userId] = []; - if (e.target) avatarMembers.push(e.target); + } + + if (e.target) { + latestUserAvatarMember.set(userId, e.target); } let displayName = userId; @@ -440,7 +445,7 @@ export default class MemberEventListSummary extends React.Component { onToggle={this.props.onToggle} startExpanded={this.props.startExpanded} children={this.props.children} - summaryMembers={avatarMembers} + summaryMembers={[...latestUserAvatarMember.values()]} summaryText={this.generateSummary(aggregate.names, orderedTransitionSequences)} />; } }