1 files changed, 4 insertions, 6 deletions
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<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;
|