diff --git a/src/timeline/EventStore.cpp b/src/timeline/EventStore.cpp index 5d3deca0965407be14b6d0e00c8921047d4e0d67..3c214dcbef3c4c90c4f463c8eddd1108d9f55ab6 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<std::string> users; + std::set<std::string> users; std::string reactedBySelf; }; std::map<std::string, TempReaction> 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<int>(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;