From fd949f0b83498db576cecb6c056607c7c964dde7 Mon Sep 17 00:00:00 2001 From: Nicolas Werner Date: Sat, 7 Jan 2023 17:39:32 +0100 Subject: Speedup quick switcher --- src/Cache.cpp | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) (limited to 'src/Cache.cpp') diff --git a/src/Cache.cpp b/src/Cache.cpp index be3380c1..18b991af 100644 --- a/src/Cache.cpp +++ b/src/Cache.cpp @@ -99,7 +99,6 @@ using Receipts = std::map>; Q_DECLARE_METATYPE(RoomMember) Q_DECLARE_METATYPE(mtx::responses::Timeline) -Q_DECLARE_METATYPE(RoomSearchResult) Q_DECLARE_METATYPE(RoomInfo) Q_DECLARE_METATYPE(mtx::responses::QueryKeys) @@ -2451,6 +2450,39 @@ Cache::roomInfo(bool withInvites) return result; } +std::vector +Cache::roomNamesAndAliases() +{ + auto txn = ro_txn(env_); + + std::vector result; + result.reserve(roomsDb_.size(txn)); + + std::string_view room_id; + std::string_view room_data; + auto roomsCursor = lmdb::cursor::open(txn, roomsDb_); + while (roomsCursor.get(room_id, room_data, MDB_NEXT)) { + try { + std::string room_id_str = std::string(room_id); + RoomInfo info = nlohmann::json::parse(std::move(room_data)).get(); + + auto aliases = getStateEvent(txn, room_id_str); + std::string alias; + if (aliases) { + alias = aliases->content.alias; + } + + result.push_back(RoomNameAlias{.id = std::move(room_id_str), + .name = std::move(info.name), + .alias = std::move(alias)}); + } catch (std::exception &e) { + nhlog::db()->warn("Failed to add room {} to result: {}", room_id, e.what()); + } + } + + return result; +} + std::string Cache::getLastEventId(lmdb::txn &txn, const std::string &room_id) { @@ -5136,7 +5168,6 @@ void init(const QString &user_id) { qRegisterMetaType(); - qRegisterMetaType(); qRegisterMetaType(); qRegisterMetaType>(); qRegisterMetaType>(); -- cgit 1.5.1