mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-05 06:33:57 +02:00
Save recent requester userIds from API.
This commit is contained in:
parent
f839c7f2bb
commit
36271d6b85
5 changed files with 61 additions and 12 deletions
|
@ -1970,10 +1970,11 @@ void Updates::feedUpdate(const MTPUpdate &update) {
|
||||||
const auto &d = update.c_updatePendingJoinRequests();
|
const auto &d = update.c_updatePendingJoinRequests();
|
||||||
if (const auto peer = session().data().peerLoaded(peerFromMTP(d.vpeer()))) {
|
if (const auto peer = session().data().peerLoaded(peerFromMTP(d.vpeer()))) {
|
||||||
const auto count = d.vrequests_pending().v;
|
const auto count = d.vrequests_pending().v;
|
||||||
|
const auto &requesters = d.vrecent_requesters().v;
|
||||||
if (const auto chat = peer->asChat()) {
|
if (const auto chat = peer->asChat()) {
|
||||||
chat->setPendingRequestsCount(count);
|
chat->setPendingRequestsCount(count, requesters);
|
||||||
} else if (const auto channel = peer->asChannel()) {
|
} else if (const auto channel = peer->asChannel()) {
|
||||||
channel->setPendingRequestsCount(count);
|
channel->setPendingRequestsCount(count, requesters);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
|
|
|
@ -195,9 +195,23 @@ void ChannelData::setKickedCount(int newKickedCount) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ChannelData::setPendingRequestsCount(int count) {
|
void ChannelData::setPendingRequestsCount(
|
||||||
if (_pendingRequestsCount != count) {
|
int count,
|
||||||
|
const QVector<MTPlong> &recentRequesters) {
|
||||||
|
setPendingRequestsCount(count, ranges::views::all(
|
||||||
|
recentRequesters
|
||||||
|
) | ranges::views::transform([&](const MTPlong &value) {
|
||||||
|
return UserId(value);
|
||||||
|
}) | ranges::to_vector);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ChannelData::setPendingRequestsCount(
|
||||||
|
int count,
|
||||||
|
std::vector<UserId> recentRequesters) {
|
||||||
|
if (_pendingRequestsCount != count
|
||||||
|
|| _recentRequesters != recentRequesters) {
|
||||||
_pendingRequestsCount = count;
|
_pendingRequestsCount = count;
|
||||||
|
_recentRequesters = std::move(recentRequesters);
|
||||||
session().changes().peerUpdated(this, UpdateFlag::PendingRequests);
|
session().changes().peerUpdated(this, UpdateFlag::PendingRequests);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -550,7 +564,7 @@ void ChannelData::setAdminRights(ChatAdminRights rights) {
|
||||||
}
|
}
|
||||||
_adminRights.set(rights);
|
_adminRights.set(rights);
|
||||||
if (!canHaveInviteLink()) {
|
if (!canHaveInviteLink()) {
|
||||||
setPendingRequestsCount(0);
|
setPendingRequestsCount(0, std::vector<UserId>{});
|
||||||
}
|
}
|
||||||
if (isMegagroup()) {
|
if (isMegagroup()) {
|
||||||
const auto self = session().user();
|
const auto self = session().user();
|
||||||
|
@ -885,7 +899,8 @@ void ApplyChannelUpdate(
|
||||||
channel->setThemeEmoji(qs(update.vtheme_emoticon().value_or_empty()));
|
channel->setThemeEmoji(qs(update.vtheme_emoticon().value_or_empty()));
|
||||||
channel->fullUpdated();
|
channel->fullUpdated();
|
||||||
channel->setPendingRequestsCount(
|
channel->setPendingRequestsCount(
|
||||||
update.vrequests_pending().value_or_empty());
|
update.vrequests_pending().value_or_empty(),
|
||||||
|
update.vrecent_requesters().value_or_empty());
|
||||||
|
|
||||||
if (canViewAdmins != channel->canViewAdmins()
|
if (canViewAdmins != channel->canViewAdmins()
|
||||||
|| canViewMembers != channel->canViewMembers()) {
|
|| canViewMembers != channel->canViewMembers()) {
|
||||||
|
|
|
@ -180,7 +180,15 @@ public:
|
||||||
[[nodiscard]] int pendingRequestsCount() const {
|
[[nodiscard]] int pendingRequestsCount() const {
|
||||||
return _pendingRequestsCount;
|
return _pendingRequestsCount;
|
||||||
}
|
}
|
||||||
void setPendingRequestsCount(int count);
|
[[nodiscard]] const std::vector<UserId> &recentRequesters() const {
|
||||||
|
return _recentRequesters;
|
||||||
|
}
|
||||||
|
void setPendingRequestsCount(
|
||||||
|
int count,
|
||||||
|
const QVector<MTPlong> &recentRequesters);
|
||||||
|
void setPendingRequestsCount(
|
||||||
|
int count,
|
||||||
|
std::vector<UserId> recentRequesters);
|
||||||
|
|
||||||
[[nodiscard]] bool haveLeft() const {
|
[[nodiscard]] bool haveLeft() const {
|
||||||
return flags() & Flag::Left;
|
return flags() & Flag::Left;
|
||||||
|
@ -433,6 +441,7 @@ private:
|
||||||
int _restrictedCount = 0;
|
int _restrictedCount = 0;
|
||||||
int _kickedCount = 0;
|
int _kickedCount = 0;
|
||||||
int _pendingRequestsCount = 0;
|
int _pendingRequestsCount = 0;
|
||||||
|
std::vector<UserId> _recentRequesters;
|
||||||
MsgId _availableMinId = 0;
|
MsgId _availableMinId = 0;
|
||||||
|
|
||||||
RestrictionFlags _defaultRestrictions;
|
RestrictionFlags _defaultRestrictions;
|
||||||
|
|
|
@ -147,7 +147,7 @@ void ChatData::setAdminRights(ChatAdminRights rights) {
|
||||||
}
|
}
|
||||||
_adminRights.set(rights);
|
_adminRights.set(rights);
|
||||||
if (!canHaveInviteLink()) {
|
if (!canHaveInviteLink()) {
|
||||||
setPendingRequestsCount(0);
|
setPendingRequestsCount(0, std::vector<UserId>{});
|
||||||
}
|
}
|
||||||
session().changes().peerUpdated(
|
session().changes().peerUpdated(
|
||||||
this,
|
this,
|
||||||
|
@ -261,9 +261,23 @@ void ChatData::setBotCommands(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ChatData::setPendingRequestsCount(int count) {
|
void ChatData::setPendingRequestsCount(
|
||||||
if (_pendingRequestsCount != count) {
|
int count,
|
||||||
|
const QVector<MTPlong> &recentRequesters) {
|
||||||
|
setPendingRequestsCount(count, ranges::views::all(
|
||||||
|
recentRequesters
|
||||||
|
) | ranges::views::transform([&](const MTPlong &value) {
|
||||||
|
return UserId(value);
|
||||||
|
}) | ranges::to_vector);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ChatData::setPendingRequestsCount(
|
||||||
|
int count,
|
||||||
|
std::vector<UserId> recentRequesters) {
|
||||||
|
if (_pendingRequestsCount != count
|
||||||
|
|| _recentRequesters != recentRequesters) {
|
||||||
_pendingRequestsCount = count;
|
_pendingRequestsCount = count;
|
||||||
|
_recentRequesters = std::move(recentRequesters);
|
||||||
session().changes().peerUpdated(this, UpdateFlag::PendingRequests);
|
session().changes().peerUpdated(this, UpdateFlag::PendingRequests);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -442,7 +456,8 @@ void ApplyChatUpdate(not_null<ChatData*> chat, const MTPDchatFull &update) {
|
||||||
chat->fullUpdated();
|
chat->fullUpdated();
|
||||||
chat->setAbout(qs(update.vabout()));
|
chat->setAbout(qs(update.vabout()));
|
||||||
chat->setPendingRequestsCount(
|
chat->setPendingRequestsCount(
|
||||||
update.vrequests_pending().value_or_empty());
|
update.vrequests_pending().value_or_empty(),
|
||||||
|
update.vrecent_requesters().value_or_empty());
|
||||||
|
|
||||||
chat->session().api().applyNotifySettings(
|
chat->session().api().applyNotifySettings(
|
||||||
MTP_inputNotifyPeer(chat->input),
|
MTP_inputNotifyPeer(chat->input),
|
||||||
|
|
|
@ -167,7 +167,15 @@ public:
|
||||||
[[nodiscard]] int pendingRequestsCount() const {
|
[[nodiscard]] int pendingRequestsCount() const {
|
||||||
return _pendingRequestsCount;
|
return _pendingRequestsCount;
|
||||||
}
|
}
|
||||||
void setPendingRequestsCount(int count);
|
[[nodiscard]] const std::vector<UserId> &recentRequesters() const {
|
||||||
|
return _recentRequesters;
|
||||||
|
}
|
||||||
|
void setPendingRequestsCount(
|
||||||
|
int count,
|
||||||
|
const QVector<MTPlong> &recentRequesters);
|
||||||
|
void setPendingRequestsCount(
|
||||||
|
int count,
|
||||||
|
std::vector<UserId> recentRequesters);
|
||||||
|
|
||||||
// Still public data members.
|
// Still public data members.
|
||||||
const MTPlong inputChat;
|
const MTPlong inputChat;
|
||||||
|
@ -191,6 +199,7 @@ private:
|
||||||
AdminRightFlags _adminRights;
|
AdminRightFlags _adminRights;
|
||||||
int _version = 0;
|
int _version = 0;
|
||||||
int _pendingRequestsCount = 0;
|
int _pendingRequestsCount = 0;
|
||||||
|
std::vector<UserId> _recentRequesters;
|
||||||
|
|
||||||
std::unique_ptr<Data::GroupCall> _call;
|
std::unique_ptr<Data::GroupCall> _call;
|
||||||
PeerId _callDefaultJoinAs = 0;
|
PeerId _callDefaultJoinAs = 0;
|
||||||
|
|
Loading…
Add table
Reference in a new issue