diff --git a/src/timeline/EventStore.cpp b/src/timeline/EventStore.cpp index 5d3deca0..3c214dcb 100644 --- a/src/timeline/EventStore.cpp +++ b/src/timeline/EventStore.cpp @@ -575,8 +575,7 @@ EventStore::reactions(const std::string &event_id) struct TempReaction { - int count = 0; - std::vector users; + std::set users; std::string reactedBySelf; }; std::map aggregation; @@ -595,14 +594,13 @@ EventStore::reactions(const std::string &event_id) auto key = reaction->content.relations.annotates()->key.value(); auto &agg = aggregation[key]; - if (agg.count == 0) { + if (agg.users.empty()) { Reaction temp{}; temp.key_ = QString::fromStdString(key); reactions.push_back(temp); } - agg.count++; - agg.users.push_back(cache::displayName(room_id_, reaction->sender)); + agg.users.insert(cache::displayName(room_id_, reaction->sender)); if (reaction->sender == self) agg.reactedBySelf = reaction->event_id; } @@ -612,7 +610,7 @@ EventStore::reactions(const std::string &event_id) temp.reserve(static_cast(reactions.size())); for (auto &reaction : reactions) { const auto &agg = aggregation[reaction.key_.toStdString()]; - reaction.count_ = agg.count; + reaction.count_ = agg.users.size(); reaction.selfReactedEvent_ = QString::fromStdString(agg.reactedBySelf); bool firstReaction = true;