summary refs log tree commit diff
path: root/src/ChatPage.cpp
diff options
context:
space:
mode:
authorJoseph Donofry <joedonofry@gmail.com>2021-02-01 18:42:38 -0500
committerJoseph Donofry <joedonofry@gmail.com>2021-02-01 18:42:38 -0500
commit53c653a228f529bab3753ca99dee18a5bf5342a2 (patch)
treead0ba40d27ca5a515f1f33c29c910e5cf7b20dd7 /src/ChatPage.cpp
parentRemove redundant import and fix visible warning (diff)
parentFix emojis with fe0f in the middle (diff)
downloadnheko-53c653a228f529bab3753ca99dee18a5bf5342a2.tar.xz
Merge remote-tracking branch 'nheko-im/master' into privacy_screen
Diffstat (limited to 'src/ChatPage.cpp')
-rw-r--r--src/ChatPage.cpp37
1 files changed, 30 insertions, 7 deletions
diff --git a/src/ChatPage.cpp b/src/ChatPage.cpp

index 5bbfa351..db80ecd5 100644 --- a/src/ChatPage.cpp +++ b/src/ChatPage.cpp
@@ -111,7 +111,11 @@ ChatPage::ChatPage(QSharedPointer<UserSettings> userSettings, QWidget *parent) connect(sidebarActions_, &SideBarActions::joinRoom, this, &ChatPage::joinRoom); connect(sidebarActions_, &SideBarActions::createRoom, this, &ChatPage::createRoom); - user_info_widget_ = new UserInfoWidget(sideBar_); + user_info_widget_ = new UserInfoWidget(sideBar_); + connect(user_info_widget_, &UserInfoWidget::openGlobalUserProfile, this, [this]() { + view_manager_->activeTimeline()->openUserProfile(utils::localUser(), true); + }); + user_mentions_popup_ = new popups::UserMentions(); room_list_ = new RoomList(userSettings, sideBar_); connect(room_list_, &RoomList::joinRoom, this, &ChatPage::joinRoom); @@ -267,10 +271,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, @@ -1299,8 +1320,10 @@ ChatPage::startChat(QString userid) mtx::requests::CreateRoom req; req.preset = mtx::requests::Preset::PrivateChat; req.visibility = mtx::common::RoomVisibility::Private; - if (utils::localUser() != userid) - req.invite = {userid.toStdString()}; + if (utils::localUser() != userid) { + req.invite = {userid.toStdString()}; + req.is_direct = true; + } emit ChatPage::instance()->createRoom(req); }