summary refs log tree commit diff
path: root/src/Cache.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Cache.cpp')
-rw-r--r--src/Cache.cpp23
1 files changed, 16 insertions, 7 deletions
diff --git a/src/Cache.cpp b/src/Cache.cpp

index f4a014c1..f3ad4fc5 100644 --- a/src/Cache.cpp +++ b/src/Cache.cpp
@@ -1543,18 +1543,12 @@ Cache::updateState(const std::string &room, const mtx::responses::StateEvents &s saveStateEvents(txn, statesdb, stateskeydb, membersdb, eventsDb, room, state.events); RoomInfo updatedInfo; - updatedInfo.name = getRoomName(txn, statesdb, membersdb).toStdString(); - updatedInfo.topic = getRoomTopic(txn, statesdb).toStdString(); - updatedInfo.avatar_url = getRoomAvatarUrl(txn, statesdb, membersdb).toStdString(); - updatedInfo.version = getRoomVersion(txn, statesdb).toStdString(); - updatedInfo.is_space = getRoomIsSpace(txn, statesdb); { std::string_view data; if (roomsDb_.get(txn, room, data)) { try { - RoomInfo tmp = json::parse(std::string_view(data.data(), data.size())); - updatedInfo.tags = tmp.tags; + RoomInfo updatedInfo = json::parse(std::string_view(data.data(), data.size())); } catch (const json::exception &e) { nhlog::db()->warn("failed to parse room info: room_id ({}), {}: {}", room, @@ -1564,6 +1558,12 @@ Cache::updateState(const std::string &room, const mtx::responses::StateEvents &s } } + updatedInfo.name = getRoomName(txn, statesdb, membersdb).toStdString(); + updatedInfo.topic = getRoomTopic(txn, statesdb).toStdString(); + updatedInfo.avatar_url = getRoomAvatarUrl(txn, statesdb, membersdb).toStdString(); + updatedInfo.version = getRoomVersion(txn, statesdb).toStdString(); + updatedInfo.is_space = getRoomIsSpace(txn, statesdb); + roomsDb_.put(txn, room, json(updatedInfo).dump()); updateSpaces(txn, {room}, {room}); txn.commit(); @@ -1628,6 +1628,9 @@ Cache::saveState(const mtx::responses::Sync &res) updatedInfo.version = getRoomVersion(txn, statesdb).toStdString(); updatedInfo.is_space = getRoomIsSpace(txn, statesdb); + updatedInfo.notification_count = room.second.unread_notifications.notification_count; + updatedInfo.highlight_count = room.second.unread_notifications.highlight_count; + if (updatedInfo.is_space) { bool space_updates = false; for (const auto &e : room.second.state.events) @@ -4693,6 +4696,9 @@ to_json(json &j, const RoomInfo &info) j["join_rule"] = info.join_rule; j["guest_access"] = info.guest_access; + j["notification_count"] = info.notification_count; + j["highlight_count"] = info.highlight_count; + if (info.member_count != 0) j["member_count"] = info.member_count; @@ -4713,6 +4719,9 @@ from_json(const json &j, RoomInfo &info) info.join_rule = j.at("join_rule"); info.guest_access = j.at("guest_access"); + info.notification_count = j.value("notification_count", 0); + info.highlight_count = j.value("highlight_count", 0); + if (j.count("member_count")) info.member_count = j.at("member_count");