summary refs log tree commit diff
path: root/src/Cache.cpp
diff options
context:
space:
mode:
authorNicolas Werner <nicolas.werner@hotmail.de>2021-01-27 02:45:33 +0100
committerNicolas Werner <nicolas.werner@hotmail.de>2021-02-09 20:22:02 +0100
commitd6504812c71ff7251a5319113c580ab322469eb3 (patch)
tree24779b1c76ea9d6555130347781dee6a9d8c133c /src/Cache.cpp
parentSwitch to new relations format (diff)
downloadnheko-d6504812c71ff7251a5319113c580ab322469eb3.tar.xz
Render edits
Diffstat (limited to '')
-rw-r--r--src/Cache.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/Cache.cpp b/src/Cache.cpp

index 94b9a6a6..49861a9a 100644 --- a/src/Cache.cpp +++ b/src/Cache.cpp
@@ -108,6 +108,11 @@ Cache::isHiddenEvent(lmdb::txn &txn, const std::string &room_id) { using namespace mtx::events; + + // Always hide edits + if (mtx::accessors::relations(e).replaces()) + return true; + if (auto encryptedEvent = std::get_if<EncryptedEvent<msg::Encrypted>>(&e)) { MegolmSessionIndex index; index.room_id = room_id; @@ -1891,6 +1896,31 @@ Cache::getTimelineIndex(const std::string &room_id, std::string_view event_id) return *val.data<uint64_t>(); } +std::optional<uint64_t> +Cache::getArrivalIndex(const std::string &room_id, std::string_view event_id) +{ + auto txn = lmdb::txn::begin(env_, nullptr, MDB_RDONLY); + + lmdb::dbi orderDb{0}; + try { + orderDb = getEventToOrderDb(txn, room_id); + } catch (lmdb::runtime_error &e) { + nhlog::db()->error("Can't open db for room '{}', probably doesn't exist yet. ({})", + room_id, + e.what()); + return {}; + } + + lmdb::val indexVal{event_id.data(), event_id.size()}, val; + + bool success = lmdb::dbi_get(txn, orderDb, indexVal, val); + if (!success) { + return {}; + } + + return *val.data<uint64_t>(); +} + std::optional<std::string> Cache::getTimelineEventId(const std::string &room_id, uint64_t index) {