summary refs log tree commit diff
path: root/src/timeline/CommunitiesModel.cpp
diff options
context:
space:
mode:
authorNicolas Werner <nicolas.werner@hotmail.de>2022-09-05 02:00:20 +0200
committerNicolas Werner <nicolas.werner@hotmail.de>2022-09-05 02:00:20 +0200
commit1d7575036e4682961c4696d25311e2d8cc9ce293 (patch)
treedad0ed24c1985083c2fd98a498783afa6c173338 /src/timeline/CommunitiesModel.cpp
parentAttribute values can contain slashes (diff)
downloadnheko-1d7575036e4682961c4696d25311e2d8cc9ce293.tar.xz
Allow creating spaces
Diffstat (limited to 'src/timeline/CommunitiesModel.cpp')
-rw-r--r--src/timeline/CommunitiesModel.cpp23
1 files changed, 16 insertions, 7 deletions
diff --git a/src/timeline/CommunitiesModel.cpp b/src/timeline/CommunitiesModel.cpp

index adc52c7b..72d0bdfb 100644 --- a/src/timeline/CommunitiesModel.cpp +++ b/src/timeline/CommunitiesModel.cpp
@@ -449,7 +449,8 @@ CommunitiesModel::clear() void CommunitiesModel::sync(const mtx::responses::Sync &sync_) { - bool tagsUpdated = false; + bool tagsUpdated = false; + const auto userid = http::client()->user_id().to_string(); for (const auto &[roomid, room] : sync_.rooms.join) { for (const auto &e : room.account_data.events) @@ -457,20 +458,28 @@ CommunitiesModel::sync(const mtx::responses::Sync &sync_) mtx::events::AccountDataEvent<mtx::events::account_data::Tags>>(e)) { tagsUpdated = true; } - for (const auto &e : room.state.events) + for (const auto &e : room.state.events) { if (std::holds_alternative<mtx::events::StateEvent<mtx::events::state::space::Child>>( e) || std::holds_alternative<mtx::events::StateEvent<mtx::events::state::space::Parent>>( - e)) { + e)) tagsUpdated = true; - } - for (const auto &e : room.timeline.events) + + if (auto ev = std::get_if<mtx::events::StateEvent<mtx::events::state::Member>>(&e); + ev && ev->state_key == userid) + tagsUpdated = true; + } + for (const auto &e : room.timeline.events) { if (std::holds_alternative<mtx::events::StateEvent<mtx::events::state::space::Child>>( e) || std::holds_alternative<mtx::events::StateEvent<mtx::events::state::space::Parent>>( - e)) { + e)) tagsUpdated = true; - } + + if (auto ev = std::get_if<mtx::events::StateEvent<mtx::events::state::Member>>(&e); + ev && ev->state_key == userid) + tagsUpdated = true; + } auto roomId = QString::fromStdString(roomid); auto &oldUnreads = roomNotificationCache[roomId];