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

index 0377ce30..3df67fcc 100644 --- a/src/ChatPage.cpp +++ b/src/ChatPage.cpp
@@ -267,10 +267,27 @@ ChatPage::ChatPage(QSharedPointer<UserSettings> userSettings, QWidget *parent) [this](const QString &groupId) { current_community_ = groupId; - if (groupId == "world") - room_list_->removeFilter(); - else - room_list_->applyFilter(communitiesList_->roomList(groupId)); + if (groupId == "world") { + auto hidden = communitiesList_->hiddenTagsAndCommunities(); + std::set<QString> roomsToHide = communitiesList_->roomList(groupId); + for (const auto &hiddenTag : hidden) { + auto temp = communitiesList_->roomList(hiddenTag); + roomsToHide.insert(temp.begin(), temp.end()); + } + + room_list_->removeFilter(roomsToHide); + } else { + auto hidden = communitiesList_->hiddenTagsAndCommunities(); + hidden.erase(current_community_); + + auto roomsToShow = communitiesList_->roomList(groupId); + for (const auto &hiddenTag : hidden) { + for (const auto &r : communitiesList_->roomList(hiddenTag)) + roomsToShow.erase(r); + } + + room_list_->applyFilter(roomsToShow); + } }); connect(&notificationsManager,