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");
|