diff --git a/src/components/middle/ReactorListModal.tsx b/src/components/middle/ReactorListModal.tsx index cf92f67b3..08f30f92c 100644 --- a/src/components/middle/ReactorListModal.tsx +++ b/src/components/middle/ReactorListModal.tsx @@ -158,22 +158,26 @@ const ReactorListModal: FC = ({ items={viewportIds} onLoadMore={getMore} > - {viewportIds?.map( + {viewportIds?.flatMap( (userId) => { const user = usersById[userId]; - const reaction = reactors?.reactions.find((l) => l.userId === userId)?.reaction; - return ( - handleClick(userId)} - > - - - {reaction && } - - ); + const userReactions = reactors?.reactions.filter((l) => l.userId === userId); + const items: React.ReactNode[] = []; + userReactions?.forEach((r) => { + items.push( + handleClick(userId)} + > + + + {r.reaction && } + , + ); + }); + return items; }, )} diff --git a/src/components/middle/message/ContextMenuContainer.tsx b/src/components/middle/message/ContextMenuContainer.tsx index cb7c3dd93..3131d8c82 100644 --- a/src/components/middle/message/ContextMenuContainer.tsx +++ b/src/components/middle/message/ContextMenuContainer.tsx @@ -203,7 +203,9 @@ const ContextMenuContainer: FC = ({ // No need for expensive global updates on users, so we avoid them const usersById = getGlobal().users.byId; - return message.reactions?.recentReactions?.slice(0, 3).map(({ userId }) => usersById[userId]).filter(Boolean); + const uniqueReactors = new Set(message.reactions?.recentReactions?.map(({ userId }) => usersById[userId])); + + return Array.from(uniqueReactors).filter(Boolean).slice(0, 3); } if (!message.seenByUserIds) {