2 files changed, 16 insertions, 0 deletions
diff --git a/src/timeline/TimelineItem.cc b/src/timeline/TimelineItem.cc
index 7fc54962..274c1d43 100644
--- a/src/timeline/TimelineItem.cc
+++ b/src/timeline/TimelineItem.cc
@@ -24,6 +24,7 @@
#include "ChatPage.h"
#include "Config.h"
#include "Logging.hpp"
+#include "Olm.hpp"
#include "Painter.h"
#include "timeline/TimelineItem.h"
@@ -683,6 +684,19 @@ TimelineItem::addReplyAction()
}
void
+TimelineItem::addKeyRequestAction()
+{
+ if (contextMenu_) {
+ auto requestKeys = new QAction("Request encryption keys", this);
+ contextMenu_->addAction(requestKeys);
+
+ connect(requestKeys, &QAction::triggered, this, [this]() {
+ olm::request_keys(room_id_.toStdString(), event_id_.toStdString());
+ });
+ }
+}
+
+void
TimelineItem::addAvatar()
{
if (userAvatar_)
diff --git a/src/timeline/TimelineView.cc b/src/timeline/TimelineView.cc
index 35140df0..ee7b9a86 100644
--- a/src/timeline/TimelineView.cc
+++ b/src/timeline/TimelineView.cc
@@ -261,6 +261,8 @@ TimelineView::parseMessageEvent(const mtx::events::collections::TimelineEvents &
if (item && res.isDecrypted)
item->markReceived(true);
+ else if (item && !res.isDecrypted)
+ item->addKeyRequestAction();
return widget;
}
|