Mask channel as forbidden on CHANNEL_PRIVATE error.

Fixes #5902.
This commit is contained in:
John Preston 2019-04-09 17:18:47 +04:00
parent fb847135b5
commit 826d6011a1
4 changed files with 17 additions and 1 deletions

View File

@ -1661,6 +1661,9 @@ void ApiWrap::requestSelfParticipant(not_null<ChannelData*> channel) {
}
const auto finalize = [=](UserId inviter, TimeId inviteDate) {
if (inviter < 0) {
channel->markForbidden();
}
channel->inviter = inviter;
channel->inviteDate = inviteDate;
if (const auto history = _session->data().historyLoaded(channel)) {

View File

@ -267,6 +267,17 @@ void ChannelData::applyEditBanned(not_null<UserData*> user, const MTPChatBannedR
Notify::peerUpdatedDelayed(this, flags);
}
void ChannelData::markForbidden() {
owner().processChat(MTP_channelForbidden(
MTP_flags(isMegagroup()
? MTPDchannelForbidden::Flag::f_megagroup
: MTPDchannelForbidden::Flag::f_broadcast),
MTP_int(bareId()),
MTP_long(access),
MTP_string(name),
MTPint()));
}
bool ChannelData::isGroupAdmin(not_null<UserData*> user) const {
if (auto info = mgInfo.get()) {
return info->admins.contains(peerToUser(user->id));

View File

@ -180,6 +180,8 @@ public:
const MTPChatBannedRights &oldRights,
const MTPChatBannedRights &newRights);
void markForbidden();
bool isGroupAdmin(not_null<UserData*> user) const;
bool lastParticipantsCountOutdated() const {

View File

@ -2454,7 +2454,7 @@ void History::dialogEntryApplied() {
if (!chatListMessage()) {
if (const auto channel = peer->asChannel()) {
const auto inviter = channel->inviter;
if (inviter != 0 && channel->amIn()) {
if (inviter > 0 && channel->amIn()) {
if (const auto from = owner().userLoaded(inviter)) {
clear(ClearType::Unload);
addNewerSlice(QVector<MTPMessage>());