mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-05 06:33:57 +02:00
Provided session controller to Profile::GroupMembersWidget.
This commit is contained in:
parent
37f96534ec
commit
58163ea581
3 changed files with 28 additions and 9 deletions
|
@ -4609,7 +4609,12 @@ void HistoryWidget::showMembersDropdown() {
|
||||||
}
|
}
|
||||||
if (!_membersDropdown) {
|
if (!_membersDropdown) {
|
||||||
_membersDropdown.create(this, st::membersInnerDropdown);
|
_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->resizeToWidth(st::membersInnerWidth);
|
||||||
|
|
||||||
_membersDropdown->setMaxHeight(countMembersDropdownHeightMax());
|
_membersDropdown->setMaxHeight(countMembersDropdownHeightMax());
|
||||||
|
|
|
@ -25,7 +25,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
#include "apiwrap.h"
|
#include "apiwrap.h"
|
||||||
#include "main/main_session.h"
|
#include "main/main_session.h"
|
||||||
#include "lang/lang_keys.h"
|
#include "lang/lang_keys.h"
|
||||||
#include "facades.h" // Ui::showPeerProfile
|
#include "window/window_session_controller.h"
|
||||||
|
|
||||||
namespace Profile {
|
namespace Profile {
|
||||||
namespace {
|
namespace {
|
||||||
|
@ -43,9 +43,11 @@ not_null<UserData*> GroupMembersWidget::Member::user() const {
|
||||||
|
|
||||||
GroupMembersWidget::GroupMembersWidget(
|
GroupMembersWidget::GroupMembersWidget(
|
||||||
QWidget *parent,
|
QWidget *parent,
|
||||||
|
not_null<Window::SessionController*> controller,
|
||||||
not_null<PeerData*> peer,
|
not_null<PeerData*> peer,
|
||||||
const style::PeerListItem &st)
|
const style::PeerListItem &st)
|
||||||
: PeerListWidget(parent, peer, QString(), st, tr::lng_profile_kick(tr::now))
|
: PeerListWidget(parent, peer, QString(), st, tr::lng_profile_kick(tr::now))
|
||||||
|
, _controller(controller)
|
||||||
, _updateOnlineTimer([=] { updateOnlineDisplay(); }) {
|
, _updateOnlineTimer([=] { updateOnlineDisplay(); }) {
|
||||||
peer->session().changes().peerUpdates(
|
peer->session().changes().peerUpdates(
|
||||||
UpdateFlag::Admins
|
UpdateFlag::Admins
|
||||||
|
@ -59,7 +61,7 @@ GroupMembersWidget::GroupMembersWidget(
|
||||||
removePeer(selectedPeer);
|
removePeer(selectedPeer);
|
||||||
});
|
});
|
||||||
setSelectedCallback([=](PeerData *selectedPeer) {
|
setSelectedCallback([=](PeerData *selectedPeer) {
|
||||||
Ui::showPeerProfile(selectedPeer);
|
controller->showPeerInfo(selectedPeer);
|
||||||
});
|
});
|
||||||
setUpdateItemCallback([=](Item *item) {
|
setUpdateItemCallback([=](Item *item) {
|
||||||
updateItemStatusText(item);
|
updateItemStatusText(item);
|
||||||
|
@ -75,8 +77,10 @@ void GroupMembersWidget::removePeer(PeerData *selectedPeer) {
|
||||||
const auto user = selectedPeer->asUser();
|
const auto user = selectedPeer->asUser();
|
||||||
Assert(user != nullptr);
|
Assert(user != nullptr);
|
||||||
|
|
||||||
auto text = tr::lng_profile_sure_kick(tr::now, lt_user, user->firstName);
|
const auto text = tr::lng_profile_sure_kick(
|
||||||
auto currentRestrictedRights = [&]() -> ChatRestrictionsInfo {
|
tr::now,
|
||||||
|
lt_user, user->firstName);
|
||||||
|
const auto currentRestrictedRights = [&]() -> ChatRestrictionsInfo {
|
||||||
if (auto channel = peer()->asMegagroup()) {
|
if (auto channel = peer()->asMegagroup()) {
|
||||||
auto it = channel->mgInfo->lastRestricted.find(user);
|
auto it = channel->mgInfo->lastRestricted.find(user);
|
||||||
if (it != channel->mgInfo->lastRestricted.cend()) {
|
if (it != channel->mgInfo->lastRestricted.cend()) {
|
||||||
|
@ -87,11 +91,14 @@ void GroupMembersWidget::removePeer(PeerData *selectedPeer) {
|
||||||
}();
|
}();
|
||||||
|
|
||||||
const auto peer = this->peer();
|
const auto peer = this->peer();
|
||||||
const auto callback = [=] {
|
const auto callback = [=, controller = _controller] {
|
||||||
Ui::hideLayer();
|
controller->hideLayer();
|
||||||
if (const auto chat = peer->asChat()) {
|
if (const auto chat = peer->asChat()) {
|
||||||
chat->session().api().chatParticipants().kick(chat, user);
|
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()) {
|
} else if (const auto channel = peer->asChannel()) {
|
||||||
channel->session().api().chatParticipants().kick(
|
channel->session().api().chatParticipants().kick(
|
||||||
channel,
|
channel,
|
||||||
|
@ -99,7 +106,7 @@ void GroupMembersWidget::removePeer(PeerData *selectedPeer) {
|
||||||
currentRestrictedRights);
|
currentRestrictedRights);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
Ui::show(Ui::MakeConfirmBox({
|
_controller->show(Ui::MakeConfirmBox({
|
||||||
.text = text,
|
.text = text,
|
||||||
.confirmed = crl::guard(&peer->session(), callback),
|
.confirmed = crl::guard(&peer->session(), callback),
|
||||||
.confirmText = tr::lng_box_remove(),
|
.confirmText = tr::lng_box_remove(),
|
||||||
|
|
|
@ -18,6 +18,10 @@ namespace Data {
|
||||||
struct PeerUpdate;
|
struct PeerUpdate;
|
||||||
} // namespace Data
|
} // namespace Data
|
||||||
|
|
||||||
|
namespace Window {
|
||||||
|
class SessionController;
|
||||||
|
} // namespace Window
|
||||||
|
|
||||||
namespace Profile {
|
namespace Profile {
|
||||||
|
|
||||||
class GroupMembersWidget : public PeerListWidget {
|
class GroupMembersWidget : public PeerListWidget {
|
||||||
|
@ -25,6 +29,7 @@ class GroupMembersWidget : public PeerListWidget {
|
||||||
public:
|
public:
|
||||||
GroupMembersWidget(
|
GroupMembersWidget(
|
||||||
QWidget *parent,
|
QWidget *parent,
|
||||||
|
not_null<Window::SessionController*> controller,
|
||||||
not_null<PeerData*> peer,
|
not_null<PeerData*> peer,
|
||||||
const style::PeerListItem &st);
|
const style::PeerListItem &st);
|
||||||
|
|
||||||
|
@ -73,6 +78,8 @@ private:
|
||||||
not_null<ChannelData*> megagroup);
|
not_null<ChannelData*> megagroup);
|
||||||
bool addUsersToEnd(not_null<ChannelData*> megagroup);
|
bool addUsersToEnd(not_null<ChannelData*> megagroup);
|
||||||
|
|
||||||
|
const not_null<Window::SessionController*> _controller;
|
||||||
|
|
||||||
base::flat_map<UserData*, Member*> _membersByUser;
|
base::flat_map<UserData*, Member*> _membersByUser;
|
||||||
bool _sortByOnline = false;
|
bool _sortByOnline = false;
|
||||||
TimeId _now = 0;
|
TimeId _now = 0;
|
||||||
|
|
Loading…
Add table
Reference in a new issue