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,
|