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};