Don't edit non-member tags.

This commit is contained in:
John Preston
2026-03-16 15:13:33 +04:00
parent 28637308ed
commit 994dd2e05c
2 changed files with 13 additions and 3 deletions
@@ -495,8 +495,9 @@ void TagInfoBox(
const auto isAdmin = (selfRole != BadgeRole::User);
const auto canEditSelf = isAdmin
|| !peer->amRestricted(ChatRestriction::EditRank);
if (canEditSelf) {
const auto channel = peer->asChannel();
const auto inGroup = peer->isChat() || (channel && channel->amIn());
if (canEditSelf && inGroup) {
const auto currentRank = LookupCurrentRank(peer);
auto buttonText = currentRank.isEmpty()
? tr::lng_tag_info_add_my_tag()
@@ -3998,6 +3998,12 @@ void FillSenderUserpicMenu(
if (const auto user = peer->asUser()) {
if (groupPeer) {
// Discussion group users may not be members,
// so editing their tag is not available.
const auto groupChannel = groupPeer->asChannel();
const auto isDiscussionGroup = groupChannel
&& groupChannel->isMegagroup()
&& groupChannel->discussionLink();
const auto canEditTarget = [&] {
if (const auto chat = groupPeer->asChat()) {
if (peerToUser(user->id) == chat->creator) {
@@ -4017,7 +4023,10 @@ void FillSenderUserpicMenu(
}
return false;
}();
if (groupPeer->canManageRanks() && canEditTarget && !user->isSelf()) {
if (!isDiscussionGroup
&& canEditTarget
&& groupPeer->canManageRanks()
&& !user->isSelf()) {
const auto currentRank = LookupMemberRank(
groupPeer,
user);