From 58163ea581be559ac12e71b77d3e68757aeb1d4e Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Wed, 8 Jun 2022 15:38:56 +0300 Subject: [PATCH] Provided session controller to Profile::GroupMembersWidget. --- .../SourceFiles/history/history_widget.cpp | 7 +++++- .../profile/profile_block_group_members.cpp | 23 ++++++++++++------- .../profile/profile_block_group_members.h | 7 ++++++ 3 files changed, 28 insertions(+), 9 deletions(-) diff --git a/Telegram/SourceFiles/history/history_widget.cpp b/Telegram/SourceFiles/history/history_widget.cpp index 1b682305e..e7afc350e 100644 --- a/Telegram/SourceFiles/history/history_widget.cpp +++ b/Telegram/SourceFiles/history/history_widget.cpp @@ -4609,7 +4609,12 @@ void HistoryWidget::showMembersDropdown() { } if (!_membersDropdown) { _membersDropdown.create(this, st::membersInnerDropdown); - _membersDropdown->setOwnedWidget(object_ptr(this, _peer, st::membersInnerItem)); + _membersDropdown->setOwnedWidget( + object_ptr( + this, + controller(), + _peer, + st::membersInnerItem)); _membersDropdown->resizeToWidth(st::membersInnerWidth); _membersDropdown->setMaxHeight(countMembersDropdownHeightMax()); diff --git a/Telegram/SourceFiles/profile/profile_block_group_members.cpp b/Telegram/SourceFiles/profile/profile_block_group_members.cpp index c69941690..96736fb57 100644 --- a/Telegram/SourceFiles/profile/profile_block_group_members.cpp +++ b/Telegram/SourceFiles/profile/profile_block_group_members.cpp @@ -25,7 +25,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "apiwrap.h" #include "main/main_session.h" #include "lang/lang_keys.h" -#include "facades.h" // Ui::showPeerProfile +#include "window/window_session_controller.h" namespace Profile { namespace { @@ -43,9 +43,11 @@ not_null GroupMembersWidget::Member::user() const { GroupMembersWidget::GroupMembersWidget( QWidget *parent, + not_null controller, not_null peer, const style::PeerListItem &st) : PeerListWidget(parent, peer, QString(), st, tr::lng_profile_kick(tr::now)) +, _controller(controller) , _updateOnlineTimer([=] { updateOnlineDisplay(); }) { peer->session().changes().peerUpdates( UpdateFlag::Admins @@ -59,7 +61,7 @@ GroupMembersWidget::GroupMembersWidget( removePeer(selectedPeer); }); setSelectedCallback([=](PeerData *selectedPeer) { - Ui::showPeerProfile(selectedPeer); + controller->showPeerInfo(selectedPeer); }); setUpdateItemCallback([=](Item *item) { updateItemStatusText(item); @@ -75,8 +77,10 @@ void GroupMembersWidget::removePeer(PeerData *selectedPeer) { const auto user = selectedPeer->asUser(); Assert(user != nullptr); - auto text = tr::lng_profile_sure_kick(tr::now, lt_user, user->firstName); - auto currentRestrictedRights = [&]() -> ChatRestrictionsInfo { + const auto text = tr::lng_profile_sure_kick( + tr::now, + lt_user, user->firstName); + const auto currentRestrictedRights = [&]() -> ChatRestrictionsInfo { if (auto channel = peer()->asMegagroup()) { auto it = channel->mgInfo->lastRestricted.find(user); if (it != channel->mgInfo->lastRestricted.cend()) { @@ -87,11 +91,14 @@ void GroupMembersWidget::removePeer(PeerData *selectedPeer) { }(); const auto peer = this->peer(); - const auto callback = [=] { - Ui::hideLayer(); + const auto callback = [=, controller = _controller] { + controller->hideLayer(); if (const auto chat = peer->asChat()) { chat->session().api().chatParticipants().kick(chat, user); - Ui::showPeerHistory(chat, ShowAtTheEndMsgId); + controller->showPeerHistory( + chat->id, + Window::SectionShow::Way::ClearStack, + ShowAtTheEndMsgId); } else if (const auto channel = peer->asChannel()) { channel->session().api().chatParticipants().kick( channel, @@ -99,7 +106,7 @@ void GroupMembersWidget::removePeer(PeerData *selectedPeer) { currentRestrictedRights); } }; - Ui::show(Ui::MakeConfirmBox({ + _controller->show(Ui::MakeConfirmBox({ .text = text, .confirmed = crl::guard(&peer->session(), callback), .confirmText = tr::lng_box_remove(), diff --git a/Telegram/SourceFiles/profile/profile_block_group_members.h b/Telegram/SourceFiles/profile/profile_block_group_members.h index 5420df7ff..84884778b 100644 --- a/Telegram/SourceFiles/profile/profile_block_group_members.h +++ b/Telegram/SourceFiles/profile/profile_block_group_members.h @@ -18,6 +18,10 @@ namespace Data { struct PeerUpdate; } // namespace Data +namespace Window { +class SessionController; +} // namespace Window + namespace Profile { class GroupMembersWidget : public PeerListWidget { @@ -25,6 +29,7 @@ class GroupMembersWidget : public PeerListWidget { public: GroupMembersWidget( QWidget *parent, + not_null controller, not_null peer, const style::PeerListItem &st); @@ -73,6 +78,8 @@ private: not_null megagroup); bool addUsersToEnd(not_null megagroup); + const not_null _controller; + base::flat_map _membersByUser; bool _sortByOnline = false; TimeId _now = 0;