diff options
author | Nicolas Werner <nicolas.werner@hotmail.de> | 2021-01-12 00:02:18 +0100 |
---|---|---|
committer | Nicolas Werner <nicolas.werner@hotmail.de> | 2021-01-12 00:02:18 +0100 |
commit | 2a19783f994db579eea685b2c3d681d1612423cc (patch) | |
tree | 27274a54b5d695a44a1bb0edb68c6b95037ae531 /src/Cache.cpp | |
parent | Allow joins via other servers from a matrix: uri (diff) | |
download | nheko-2a19783f994db579eea685b2c3d681d1612423cc.tar.xz |
Fix timeline becoming corrupted on backfill
Fixes #273
Diffstat (limited to 'src/Cache.cpp')
-rw-r--r-- | src/Cache.cpp | 15 |
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: {}", |