summary refs log tree commit diff
path: root/src/Cache.cpp
diff options
context:
space:
mode:
authorNicolas Werner <nicolas.werner@hotmail.de>2021-01-12 00:02:18 +0100
committerNicolas Werner <nicolas.werner@hotmail.de>2021-01-12 00:02:18 +0100
commit2a19783f994db579eea685b2c3d681d1612423cc (patch)
tree27274a54b5d695a44a1bb0edb68c6b95037ae531 /src/Cache.cpp
parentAllow joins via other servers from a matrix: uri (diff)
downloadnheko-2a19783f994db579eea685b2c3d681d1612423cc.tar.xz
Fix timeline becoming corrupted on backfill
Fixes #273
Diffstat (limited to 'src/Cache.cpp')
-rw-r--r--src/Cache.cpp15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/Cache.cpp b/src/Cache.cpp
index 17b55144..389df0a3 100644
--- a/src/Cache.cpp
+++ b/src/Cache.cpp
@@ -1208,10 +1208,11 @@ Cache::saveState(const mtx::responses::Sync &res)
                 for (const auto &ev : res.account_data.events)
                         std::visit(
                           [&txn, &accountDataDb](const auto &event) {
+                                  auto j = json(event);
                                   lmdb::dbi_put(txn,
                                                 accountDataDb,
-                                                lmdb::val(to_string(event.type)),
-                                                lmdb::val(json(event).dump()));
+                                                lmdb::val(j["type"].get<std::string>()),
+                                                lmdb::val(j.dump()));
                           },
                           ev);
         }
@@ -1242,10 +1243,11 @@ Cache::saveState(const mtx::responses::Sync &res)
                         for (const auto &evt : room.second.account_data.events) {
                                 std::visit(
                                   [&txn, &accountDataDb](const auto &event) {
+                                          auto j = json(event);
                                           lmdb::dbi_put(txn,
                                                         accountDataDb,
-                                                        lmdb::val(to_string(event.type)),
-                                                        lmdb::val(json(event).dump()));
+                                                        lmdb::val(j["type"].get<std::string>()),
+                                                        lmdb::val(j.dump()));
                                   },
                                   evt);
 
@@ -1391,10 +1393,11 @@ Cache::saveInvite(lmdb::txn &txn,
                 } else {
                         std::visit(
                           [&txn, &statesdb](auto msg) {
+                                  auto j   = json(msg);
                                   bool res = lmdb::dbi_put(txn,
                                                            statesdb,
-                                                           lmdb::val(to_string(msg.type)),
-                                                           lmdb::val(json(msg).dump()));
+                                                           lmdb::val(j["type"].get<std::string>()),
+                                                           lmdb::val(j.dump()));
 
                                   if (!res)
                                           nhlog::db()->warn("couldn't save data: {}",