mirror of
https://github.com/telegramdesktop/tdesktop
synced 2025-03-25 04:38:23 +00:00
Provided session controller to Profile::GroupMembersWidget.
This commit is contained in:
parent
37f96534ec
commit
58163ea581
@ -4609,7 +4609,12 @@ void HistoryWidget::showMembersDropdown() {
|
||||
}
|
||||
if (!_membersDropdown) {
|
||||
_membersDropdown.create(this, st::membersInnerDropdown);
|
||||
_membersDropdown->setOwnedWidget(object_ptr<Profile::GroupMembersWidget>(this, _peer, st::membersInnerItem));
|
||||
_membersDropdown->setOwnedWidget(
|
||||
object_ptr<Profile::GroupMembersWidget>(
|
||||
this,
|
||||
controller(),
|
||||
_peer,
|
||||
st::membersInnerItem));
|
||||
_membersDropdown->resizeToWidth(st::membersInnerWidth);
|
||||
|
||||
_membersDropdown->setMaxHeight(countMembersDropdownHeightMax());
|
||||
|
@ -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<UserData*> GroupMembersWidget::Member::user() const {
|
||||
|
||||
GroupMembersWidget::GroupMembersWidget(
|
||||
QWidget *parent,
|
||||
not_null<Window::SessionController*> controller,
|
||||
not_null<PeerData*> 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(),
|
||||
|
@ -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<Window::SessionController*> controller,
|
||||
not_null<PeerData*> peer,
|
||||
const style::PeerListItem &st);
|
||||
|
||||
@ -73,6 +78,8 @@ private:
|
||||
not_null<ChannelData*> megagroup);
|
||||
bool addUsersToEnd(not_null<ChannelData*> megagroup);
|
||||
|
||||
const not_null<Window::SessionController*> _controller;
|
||||
|
||||
base::flat_map<UserData*, Member*> _membersByUser;
|
||||
bool _sortByOnline = false;
|
||||
TimeId _now = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user