summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorNicolas Werner <nicolas.werner@hotmail.de>2020-05-06 11:15:45 +0200
committerNicolas Werner <nicolas.werner@hotmail.de>2020-05-06 11:15:45 +0200
commit8348a6c35dfd49e1711488e8972db841c8daa137 (patch)
tree04cbaf5be484e215addabefb3a2d76785de0c41a /src
parentReaction and Button layout fixes (diff)
downloadnheko-8348a6c35dfd49e1711488e8972db841c8daa137.tar.xz
Fix reaction count
Diffstat (limited to 'src')
-rw-r--r--src/timeline/ReactionsModel.cpp25
-rw-r--r--src/timeline/ReactionsModel.h2
2 files changed, 12 insertions, 15 deletions
diff --git a/src/timeline/ReactionsModel.cpp b/src/timeline/ReactionsModel.cpp

index fd061b14..f21b1c53 100644 --- a/src/timeline/ReactionsModel.cpp +++ b/src/timeline/ReactionsModel.cpp
@@ -35,16 +35,19 @@ ReactionsModel::data(const QModelIndex &index, int role) const return static_cast<int>(reactions[i].reactions.size()); case Users: { QString users; - for (size_t r = 0; r < reactions[i].reactions.size(); r++) { - if (r != 0) + bool first = true; + for (const auto &[event_id, reaction] : reactions[i].reactions) { + if (!first) users += ", "; - users += QString::fromStdString(reactions[i].reactions[r].sender); + else + first = false; + users += QString::fromStdString(reaction.sender); } return users; } case SelfReacted: for (const auto &reaction : reactions[i].reactions) - if (reaction.sender == http::client()->user_id().to_string()) + if (reaction.second.sender == http::client()->user_id().to_string()) return true; return false; default: @@ -58,7 +61,7 @@ ReactionsModel::addReaction(const mtx::events::RoomEvent<mtx::events::msg::React int idx = 0; for (auto &storedReactions : reactions) { if (storedReactions.key == reaction.content.relates_to.key) { - storedReactions.reactions.push_back(reaction); + storedReactions.reactions[reaction.event_id] = reaction; emit dataChanged(index(idx, 0), index(idx, 0)); return; } @@ -66,7 +69,8 @@ ReactionsModel::addReaction(const mtx::events::RoomEvent<mtx::events::msg::React } beginInsertRows(QModelIndex(), idx, idx); - reactions.push_back(KeyReaction{reaction.content.relates_to.key, {reaction}}); + reactions.push_back( + KeyReaction{reaction.content.relates_to.key, {{reaction.event_id, reaction}}}); endInsertRows(); } @@ -76,14 +80,7 @@ ReactionsModel::removeReaction(const mtx::events::RoomEvent<mtx::events::msg::Re int idx = 0; for (auto &storedReactions : reactions) { if (storedReactions.key == reaction.content.relates_to.key) { - for (auto it = begin(storedReactions.reactions); - it != end(storedReactions.reactions); - ++it) { - if (it->event_id == reaction.event_id) { - storedReactions.reactions.erase(it); - break; - } - } + storedReactions.reactions.erase(reaction.event_id); if (storedReactions.reactions.size() == 0) { beginRemoveRows(QModelIndex(), idx, idx); diff --git a/src/timeline/ReactionsModel.h b/src/timeline/ReactionsModel.h
index ba71f2b7..a0a8580d 100644 --- a/src/timeline/ReactionsModel.h +++ b/src/timeline/ReactionsModel.h
@@ -33,7 +33,7 @@ private: struct KeyReaction { std::string key; - std::vector<mtx::events::RoomEvent<mtx::events::msg::Reaction>> reactions; + std::map<std::string, mtx::events::RoomEvent<mtx::events::msg::Reaction>> reactions; }; std::vector<KeyReaction> reactions; };