summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorNicolas Werner <nicolas.werner@hotmail.de>2021-11-11 00:41:05 +0100
committerNicolas Werner <nicolas.werner@hotmail.de>2021-11-11 00:41:21 +0100
commitf9362c75cf40f8976b0e18c33a5be23503c79f35 (patch)
treeb1b7f3fc2725746bb6f40b955c1837416be567d6 /src
parentTranslated using Weblate (Estonian) (diff)
downloadnheko-f9362c75cf40f8976b0e18c33a5be23503c79f35.tar.xz
Fix no replies being rendered for edits sent from Element in encrypted rooms
Diffstat (limited to 'src')
-rw-r--r--src/encryption/Olm.cpp9
1 files changed, 4 insertions, 5 deletions
diff --git a/src/encryption/Olm.cpp b/src/encryption/Olm.cpp
index 01a16ba7..0931b4e3 100644
--- a/src/encryption/Olm.cpp
+++ b/src/encryption/Olm.cpp
@@ -17,6 +17,7 @@
 #include "Cache_p.h"
 #include "ChatPage.h"
 #include "DeviceVerificationFlow.h"
+#include "EventAccessors.h"
 #include "Logging.h"
 #include "MatrixClient.h"
 #include "UserSettingsPage.h"
@@ -1124,8 +1125,6 @@ decryptEvent(const MegolmSessionIndex &index,
         return {DecryptionErrorCode::DbError, e.what(), std::nullopt};
     }
 
-    // TODO: Lookup index,event_id,origin_server_ts tuple for replay attack errors
-
     std::string msg_str;
     try {
         auto session = cache::client()->getInboundMegolmSession(index);
@@ -1165,12 +1164,12 @@ decryptEvent(const MegolmSessionIndex &index,
         body["origin_server_ts"] = event.origin_server_ts;
         body["unsigned"]         = event.unsigned_data;
 
-        // relations are unencrypted in content...
-        mtx::common::add_relations(body["content"], event.content.relations);
-
         mtx::events::collections::TimelineEvent te;
         mtx::events::collections::from_json(body, te);
 
+        // relations are unencrypted in content...
+        mtx::accessors::set_relations(te.data, std::move(event.content.relations));
+
         return {DecryptionErrorCode::NoError, std::nullopt, std::move(te.data)};
     } catch (std::exception &e) {
         return {DecryptionErrorCode::ParsingFailed, e.what(), std::nullopt};