summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/timeline/ReactionsModel.cpp8
-rw-r--r--src/timeline/ReactionsModel.h2
-rw-r--r--src/timeline/TimelineViewManager.cpp16
-rw-r--r--src/timeline/TimelineViewManager.h4
4 files changed, 25 insertions, 5 deletions
diff --git a/src/timeline/ReactionsModel.cpp b/src/timeline/ReactionsModel.cpp

index 2e249819..1200e2ba 100644 --- a/src/timeline/ReactionsModel.cpp +++ b/src/timeline/ReactionsModel.cpp
@@ -10,7 +10,7 @@ ReactionsModel::roleNames() const {Key, "key"}, {Count, "counter"}, {Users, "users"}, - {SelfReacted, "selfReacted"}, + {SelfReactedEvent, "selfReactedEvent"}, }; } @@ -45,11 +45,11 @@ ReactionsModel::data(const QModelIndex &index, int role) const } return users; } - case SelfReacted: + case SelfReactedEvent: for (const auto &reaction : reactions[i].reactions) if (reaction.second.sender == http::client()->user_id().to_string()) - return true; - return false; + return QString::fromStdString(reaction.second.event_id); + return QStringLiteral(""); default: return {}; } diff --git a/src/timeline/ReactionsModel.h b/src/timeline/ReactionsModel.h
index 5f61cd42..c839afc8 100644 --- a/src/timeline/ReactionsModel.h +++ b/src/timeline/ReactionsModel.h
@@ -18,7 +18,7 @@ public: Key, Count, Users, - SelfReacted, + SelfReactedEvent, }; QHash<int, QByteArray> roleNames() const override; diff --git a/src/timeline/TimelineViewManager.cpp b/src/timeline/TimelineViewManager.cpp
index 3f8a5b76..0375ccc8 100644 --- a/src/timeline/TimelineViewManager.cpp +++ b/src/timeline/TimelineViewManager.cpp
@@ -291,6 +291,22 @@ TimelineViewManager::queueEmoteMessage(const QString &msg) } void +TimelineViewManager::reactToMessage(const QString &roomId, + const QString &reactedEvent, + const QString &reactionKey, + const QString &selfReactedEvent) +{ + // If selfReactedEvent is empty, that means we haven't previously reacted + if (selfReactedEvent.isEmpty()) { + queueReactionMessage(roomId, reactedEvent, reactionKey); + // Otherwise, we have previously reacted and the reaction should be redacted + } else { + auto model = models.value(roomId); + model->redactEvent(selfReactedEvent); + } +} + +void TimelineViewManager::queueReactionMessage(const QString &roomId, const QString &reactedEvent, const QString &reactionKey) diff --git a/src/timeline/TimelineViewManager.h b/src/timeline/TimelineViewManager.h
index f5f57df4..48505bc0 100644 --- a/src/timeline/TimelineViewManager.h +++ b/src/timeline/TimelineViewManager.h
@@ -61,6 +61,10 @@ public slots: void queueReactionMessage(const QString &roomId, const QString &reactedEvent, const QString &reaction); + void reactToMessage(const QString &roomId, + const QString &reactedEvent, + const QString &reactionKey, + const QString &selfReactedEvent); void queueTextMessage(const QString &msg); void queueEmoteMessage(const QString &msg); void queueImageMessage(const QString &roomid,