summary refs log tree commit diff
path: root/src/Cache.cpp
diff options
context:
space:
mode:
authorNicolas Werner <nicolas.werner@hotmail.de>2021-01-10 18:36:06 +0100
committerNicolas Werner <nicolas.werner@hotmail.de>2021-01-10 22:41:56 +0100
commit39f9b7d90adbdbc9eb6186d93bb6bfd0564c152c (patch)
tree600a18ee72fe9e1e2a508ff8c11673ae5a6250ed /src/Cache.cpp
parentFix some nulls in relations (diff)
downloadnheko-39f9b7d90adbdbc9eb6186d93bb6bfd0564c152c.tar.xz
Handle matrix scheme
Link opening only works on Linux for now.

See https://github.com/matrix-org/matrix-doc/pull/2312
Diffstat (limited to '')
-rw-r--r--src/Cache.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/Cache.cpp b/src/Cache.cpp

index 04046346..17b55144 100644 --- a/src/Cache.cpp +++ b/src/Cache.cpp
@@ -2221,6 +2221,34 @@ Cache::getRoomVersion(lmdb::txn &txn, lmdb::dbi &statesdb) return QString("1"); } +std::optional<mtx::events::state::CanonicalAlias> +Cache::getRoomAliases(const std::string &roomid) +{ + using namespace mtx::events; + using namespace mtx::events::state; + + auto txn = lmdb::txn::begin(env_, nullptr, MDB_RDONLY); + auto statesdb = getStatesDb(txn, roomid); + + lmdb::val event; + bool res = lmdb::dbi_get( + txn, statesdb, lmdb::val(to_string(mtx::events::EventType::RoomCanonicalAlias)), event); + + if (res) { + try { + StateEvent<CanonicalAlias> msg = + json::parse(std::string_view(event.data(), event.size())); + + return msg.content; + } catch (const json::exception &e) { + nhlog::db()->warn("failed to parse m.room.canonical_alias event: {}", + e.what()); + } + } + + return std::nullopt; +} + QString Cache::getInviteRoomName(lmdb::txn &txn, lmdb::dbi &statesdb, lmdb::dbi &membersdb) {