mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-05 06:33:57 +02:00
Version 2.7.1: Fix channels ban in admin log.
This commit is contained in:
parent
26d97a3636
commit
a82d1e863e
7 changed files with 49 additions and 24 deletions
|
@ -2226,6 +2226,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
"lng_admin_log_stopped_poll" = "{from} stopped poll:";
|
"lng_admin_log_stopped_poll" = "{from} stopped poll:";
|
||||||
"lng_admin_log_invited" = "invited {user}";
|
"lng_admin_log_invited" = "invited {user}";
|
||||||
"lng_admin_log_banned" = "banned {user}";
|
"lng_admin_log_banned" = "banned {user}";
|
||||||
|
"lng_admin_log_unbanned" = "unbanned {user}";
|
||||||
"lng_admin_log_restricted" = "changed restrictions for {user} {until}";
|
"lng_admin_log_restricted" = "changed restrictions for {user} {until}";
|
||||||
"lng_admin_log_promoted" = "changed privileges for {user}";
|
"lng_admin_log_promoted" = "changed privileges for {user}";
|
||||||
"lng_admin_log_transferred" = "transferred ownership to {user}";
|
"lng_admin_log_transferred" = "transferred ownership to {user}";
|
||||||
|
|
|
@ -621,7 +621,7 @@ channelParticipantSelf#a3289a6d user_id:int inviter_id:int date:int = ChannelPar
|
||||||
channelParticipantCreator#447dca4b flags:# user_id:int admin_rights:ChatAdminRights rank:flags.0?string = ChannelParticipant;
|
channelParticipantCreator#447dca4b flags:# user_id:int admin_rights:ChatAdminRights rank:flags.0?string = ChannelParticipant;
|
||||||
channelParticipantAdmin#ccbebbaf flags:# can_edit:flags.0?true self:flags.1?true user_id:int inviter_id:flags.1?int promoted_by:int date:int admin_rights:ChatAdminRights rank:flags.2?string = ChannelParticipant;
|
channelParticipantAdmin#ccbebbaf flags:# can_edit:flags.0?true self:flags.1?true user_id:int inviter_id:flags.1?int promoted_by:int date:int admin_rights:ChatAdminRights rank:flags.2?string = ChannelParticipant;
|
||||||
channelParticipantBanned#50a1dfd6 flags:# left:flags.0?true peer:Peer kicked_by:int date:int banned_rights:ChatBannedRights = ChannelParticipant;
|
channelParticipantBanned#50a1dfd6 flags:# left:flags.0?true peer:Peer kicked_by:int date:int banned_rights:ChatBannedRights = ChannelParticipant;
|
||||||
channelParticipantLeft#c3c6796b user_id:int = ChannelParticipant;
|
channelParticipantLeft#1b03f006 peer:Peer = ChannelParticipant;
|
||||||
|
|
||||||
channelParticipantsRecent#de3f3c79 = ChannelParticipantsFilter;
|
channelParticipantsRecent#de3f3c79 = ChannelParticipantsFilter;
|
||||||
channelParticipantsAdmins#b4608969 = ChannelParticipantsFilter;
|
channelParticipantsAdmins#b4608969 = ChannelParticipantsFilter;
|
||||||
|
|
|
@ -1526,6 +1526,8 @@ void ApiWrap::applyLastParticipantsList(
|
||||||
const auto participantId = p.match([](
|
const auto participantId = p.match([](
|
||||||
const MTPDchannelParticipantBanned &data) {
|
const MTPDchannelParticipantBanned &data) {
|
||||||
return peerFromMTP(data.vpeer());
|
return peerFromMTP(data.vpeer());
|
||||||
|
}, [](const MTPDchannelParticipantLeft &data) {
|
||||||
|
return peerFromMTP(data.vpeer());
|
||||||
}, [](const auto &data) {
|
}, [](const auto &data) {
|
||||||
return peerFromUser(data.vuser_id());
|
return peerFromUser(data.vuser_id());
|
||||||
});
|
});
|
||||||
|
@ -1614,6 +1616,8 @@ void ApiWrap::applyBotsList(
|
||||||
const auto participantId = p.match([](
|
const auto participantId = p.match([](
|
||||||
const MTPDchannelParticipantBanned &data) {
|
const MTPDchannelParticipantBanned &data) {
|
||||||
return peerFromMTP(data.vpeer());
|
return peerFromMTP(data.vpeer());
|
||||||
|
}, [](const MTPDchannelParticipantLeft &data) {
|
||||||
|
return peerFromMTP(data.vpeer());
|
||||||
}, [](const auto &data) {
|
}, [](const auto &data) {
|
||||||
return peerFromUser(data.vuser_id());
|
return peerFromUser(data.vuser_id());
|
||||||
});
|
});
|
||||||
|
@ -3197,6 +3201,8 @@ void ApiWrap::refreshChannelAdmins(
|
||||||
const auto participantId = p.match([](
|
const auto participantId = p.match([](
|
||||||
const MTPDchannelParticipantBanned &data) {
|
const MTPDchannelParticipantBanned &data) {
|
||||||
return peerFromMTP(data.vpeer());
|
return peerFromMTP(data.vpeer());
|
||||||
|
}, [](const MTPDchannelParticipantLeft &data) {
|
||||||
|
return peerFromMTP(data.vpeer());
|
||||||
}, [](const auto &data) {
|
}, [](const auto &data) {
|
||||||
return peerFromUser(data.vuser_id());
|
return peerFromUser(data.vuser_id());
|
||||||
});
|
});
|
||||||
|
|
|
@ -928,6 +928,8 @@ void ApplyMegagroupAdmins(
|
||||||
const auto participantId = p.match([](
|
const auto participantId = p.match([](
|
||||||
const MTPDchannelParticipantBanned &data) {
|
const MTPDchannelParticipantBanned &data) {
|
||||||
return peerFromMTP(data.vpeer());
|
return peerFromMTP(data.vpeer());
|
||||||
|
}, [](const MTPDchannelParticipantLeft &data) {
|
||||||
|
return peerFromMTP(data.vpeer());
|
||||||
}, [](const auto &data) {
|
}, [](const auto &data) {
|
||||||
return peerFromUser(data.vuser_id());
|
return peerFromUser(data.vuser_id());
|
||||||
});
|
});
|
||||||
|
|
|
@ -435,6 +435,8 @@ void InnerWidget::requestAdmins() {
|
||||||
const auto participantId = p.match([](
|
const auto participantId = p.match([](
|
||||||
const MTPDchannelParticipantBanned &data) {
|
const MTPDchannelParticipantBanned &data) {
|
||||||
return peerFromMTP(data.vpeer());
|
return peerFromMTP(data.vpeer());
|
||||||
|
}, [](const MTPDchannelParticipantLeft &data) {
|
||||||
|
return peerFromMTP(data.vpeer());
|
||||||
}, [](const auto &data) {
|
}, [](const auto &data) {
|
||||||
return peerFromUser(data.vuser_id());
|
return peerFromUser(data.vuser_id());
|
||||||
});
|
});
|
||||||
|
|
|
@ -227,6 +227,7 @@ QString GenerateBannedChangeText(
|
||||||
}
|
}
|
||||||
|
|
||||||
TextWithEntities GenerateBannedChangeText(
|
TextWithEntities GenerateBannedChangeText(
|
||||||
|
PeerId participantId,
|
||||||
const TextWithEntities &user,
|
const TextWithEntities &user,
|
||||||
const MTPChatBannedRights *newRights,
|
const MTPChatBannedRights *newRights,
|
||||||
const MTPChatBannedRights *prevRights) {
|
const MTPChatBannedRights *prevRights) {
|
||||||
|
@ -235,9 +236,12 @@ TextWithEntities GenerateBannedChangeText(
|
||||||
|
|
||||||
auto newFlags = newRights ? Data::ChatBannedRightsFlags(*newRights) : Flags(0);
|
auto newFlags = newRights ? Data::ChatBannedRightsFlags(*newRights) : Flags(0);
|
||||||
auto newUntil = newRights ? Data::ChatBannedRightsUntilDate(*newRights) : TimeId(0);
|
auto newUntil = newRights ? Data::ChatBannedRightsUntilDate(*newRights) : TimeId(0);
|
||||||
|
auto prevFlags = prevRights ? Data::ChatBannedRightsFlags(*prevRights) : Flags(0);
|
||||||
auto indefinitely = ChannelData::IsRestrictedForever(newUntil);
|
auto indefinitely = ChannelData::IsRestrictedForever(newUntil);
|
||||||
if (newFlags & Flag::f_view_messages) {
|
if (newFlags & Flag::f_view_messages) {
|
||||||
return tr::lng_admin_log_banned(tr::now, lt_user, user, Ui::Text::WithEntities);
|
return tr::lng_admin_log_banned(tr::now, lt_user, user, Ui::Text::WithEntities);
|
||||||
|
} else if (newFlags == 0 && (prevFlags & Flag::f_view_messages) && !peerIsUser(participantId)) {
|
||||||
|
return tr::lng_admin_log_unbanned(tr::now, lt_user, user, Ui::Text::WithEntities);
|
||||||
}
|
}
|
||||||
auto untilText = indefinitely
|
auto untilText = indefinitely
|
||||||
? tr::lng_admin_log_restricted_forever(tr::now)
|
? tr::lng_admin_log_restricted_forever(tr::now)
|
||||||
|
@ -341,9 +345,9 @@ TextWithEntities GenerateInviteLinkChangeText(
|
||||||
|
|
||||||
auto GenerateParticipantString(
|
auto GenerateParticipantString(
|
||||||
not_null<Main::Session*> session,
|
not_null<Main::Session*> session,
|
||||||
PeerId peerId) {
|
PeerId participantId) {
|
||||||
// User name in "User name (@username)" format with entities.
|
// User name in "User name (@username)" format with entities.
|
||||||
auto peer = session->data().peer(peerId);
|
auto peer = session->data().peer(participantId);
|
||||||
auto name = TextWithEntities { peer->name };
|
auto name = TextWithEntities { peer->name };
|
||||||
if (const auto user = peer->asUser()) {
|
if (const auto user = peer->asUser()) {
|
||||||
auto entityData = QString::number(user->id)
|
auto entityData = QString::number(user->id)
|
||||||
|
@ -378,6 +382,25 @@ auto GenerateParticipantChangeTextInner(
|
||||||
const MTPChannelParticipant &participant,
|
const MTPChannelParticipant &participant,
|
||||||
const MTPChannelParticipant *oldParticipant) {
|
const MTPChannelParticipant *oldParticipant) {
|
||||||
const auto oldType = oldParticipant ? oldParticipant->type() : 0;
|
const auto oldType = oldParticipant ? oldParticipant->type() : 0;
|
||||||
|
const auto generateOther = [&](PeerId participantId) {
|
||||||
|
auto user = GenerateParticipantString(
|
||||||
|
&channel->session(),
|
||||||
|
participantId);
|
||||||
|
if (oldType == mtpc_channelParticipantAdmin) {
|
||||||
|
return GenerateAdminChangeText(
|
||||||
|
channel,
|
||||||
|
user,
|
||||||
|
nullptr,
|
||||||
|
&oldParticipant->c_channelParticipantAdmin().vadmin_rights());
|
||||||
|
} else if (oldType == mtpc_channelParticipantBanned) {
|
||||||
|
return GenerateBannedChangeText(
|
||||||
|
participantId,
|
||||||
|
user,
|
||||||
|
nullptr,
|
||||||
|
&oldParticipant->c_channelParticipantBanned().vbanned_rights());
|
||||||
|
}
|
||||||
|
return tr::lng_admin_log_invited(tr::now, lt_user, user, Ui::Text::WithEntities);
|
||||||
|
};
|
||||||
return participant.match([&](const MTPDchannelParticipantCreator &data) {
|
return participant.match([&](const MTPDchannelParticipantCreator &data) {
|
||||||
// No valid string here :(
|
// No valid string here :(
|
||||||
return tr::lng_admin_log_transferred(
|
return tr::lng_admin_log_transferred(
|
||||||
|
@ -395,36 +418,25 @@ auto GenerateParticipantChangeTextInner(
|
||||||
channel,
|
channel,
|
||||||
user,
|
user,
|
||||||
&data.vadmin_rights(),
|
&data.vadmin_rights(),
|
||||||
(oldType == mtpc_channelParticipantAdmin)
|
(oldType == mtpc_channelParticipantAdmin
|
||||||
? &oldParticipant->c_channelParticipantAdmin().vadmin_rights()
|
? &oldParticipant->c_channelParticipantAdmin().vadmin_rights()
|
||||||
: nullptr);
|
: nullptr));
|
||||||
}, [&](const MTPDchannelParticipantBanned &data) {
|
}, [&](const MTPDchannelParticipantBanned &data) {
|
||||||
|
const auto participantId = peerFromMTP(data.vpeer());
|
||||||
const auto user = GenerateParticipantString(
|
const auto user = GenerateParticipantString(
|
||||||
&channel->session(),
|
&channel->session(),
|
||||||
peerFromMTP(data.vpeer()));
|
participantId);
|
||||||
return GenerateBannedChangeText(
|
return GenerateBannedChangeText(
|
||||||
|
participantId,
|
||||||
user,
|
user,
|
||||||
&data.vbanned_rights(),
|
&data.vbanned_rights(),
|
||||||
(oldType == mtpc_channelParticipantBanned)
|
(oldType == mtpc_channelParticipantBanned
|
||||||
? &oldParticipant->c_channelParticipantBanned().vbanned_rights()
|
? &oldParticipant->c_channelParticipantBanned().vbanned_rights()
|
||||||
: nullptr);
|
: nullptr));
|
||||||
|
}, [&](const MTPDchannelParticipantLeft &data) {
|
||||||
|
return generateOther(peerFromMTP(data.vpeer()));
|
||||||
}, [&](const auto &data) {
|
}, [&](const auto &data) {
|
||||||
auto user = GenerateParticipantString(
|
return generateOther(peerFromUser(data.vuser_id()));
|
||||||
&channel->session(),
|
|
||||||
peerFromUser(data.vuser_id()));
|
|
||||||
if (oldType == mtpc_channelParticipantAdmin) {
|
|
||||||
return GenerateAdminChangeText(
|
|
||||||
channel,
|
|
||||||
user,
|
|
||||||
nullptr,
|
|
||||||
&oldParticipant->c_channelParticipantAdmin().vadmin_rights());
|
|
||||||
} else if (oldType == mtpc_channelParticipantBanned) {
|
|
||||||
return GenerateBannedChangeText(
|
|
||||||
user,
|
|
||||||
nullptr,
|
|
||||||
&oldParticipant->c_channelParticipantBanned().vbanned_rights());
|
|
||||||
}
|
|
||||||
return tr::lng_admin_log_invited(tr::now, lt_user, user, Ui::Text::WithEntities);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1070,6 +1070,8 @@ void PeerMenuAddChannelMembers(
|
||||||
) | ranges::views::transform([](const MTPChannelParticipant &p) {
|
) | ranges::views::transform([](const MTPChannelParticipant &p) {
|
||||||
return p.match([](const MTPDchannelParticipantBanned &data) {
|
return p.match([](const MTPDchannelParticipantBanned &data) {
|
||||||
return peerFromMTP(data.vpeer());
|
return peerFromMTP(data.vpeer());
|
||||||
|
}, [](const MTPDchannelParticipantLeft &data) {
|
||||||
|
return peerFromMTP(data.vpeer());
|
||||||
}, [](const auto &data) {
|
}, [](const auto &data) {
|
||||||
return peerFromUser(data.vuser_id());
|
return peerFromUser(data.vuser_id());
|
||||||
});
|
});
|
||||||
|
|
Loading…
Add table
Reference in a new issue