summary refs log tree commit diff
path: root/src/Cache.cpp
diff options
context:
space:
mode:
authorDeepBlueV7.X <nicolas.werner@hotmail.de>2021-01-10 23:29:30 +0100
committerGitHub <noreply@github.com>2021-01-10 23:29:30 +0100
commitd8fb5daac13bdf2d549f5217eab111ffb65a2e07 (patch)
treeaeeee1baa42e2ebf46312a3e8484c22be691195e /src/Cache.cpp
parentMerge pull request #369 from trilene/master (diff)
parentHandle matrix scheme (diff)
downloadnheko-d8fb5daac13bdf2d549f5217eab111ffb65a2e07.tar.xz
Merge pull request #370 from Nheko-Reborn/matrix-scheme
Handle matrix scheme
Diffstat (limited to 'src/Cache.cpp')
-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) {