mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2026-08-06 03:42:56 +00:00
Show custom ranks, allow toggling on.
This commit is contained in:
@@ -67,6 +67,10 @@ bool ChatData::allowsForwarding() const {
|
||||
return !(flags() & Flag::NoForwards);
|
||||
}
|
||||
|
||||
bool ChatData::customRanksEnabled() const {
|
||||
return flags() & Flag::CustomRanksEnabled;
|
||||
}
|
||||
|
||||
bool ChatData::canEditInformation() const {
|
||||
return amIn() && !amRestricted(ChatRestriction::ChangeInfo);
|
||||
}
|
||||
@@ -437,6 +441,25 @@ void ApplyChatUpdate(
|
||||
session->changes().peerUpdated(chat, UpdateFlag::Admins);
|
||||
}
|
||||
|
||||
void ApplyChatUpdate(
|
||||
not_null<ChatData*> chat,
|
||||
const MTPDupdateChatParticipantRank &update) {
|
||||
if (chat->applyUpdateVersion(update.vversion().v)
|
||||
!= ChatData::UpdateStatus::Good) {
|
||||
return;
|
||||
}
|
||||
const auto rank = qs(update.vrank().v);
|
||||
const auto userId = UserId(update.vuser_id().v);
|
||||
if (rank.isEmpty()) {
|
||||
chat->memberRanks.remove(userId);
|
||||
} else {
|
||||
chat->memberRanks[userId] = rank;
|
||||
}
|
||||
chat->session().changes().peerUpdated(
|
||||
chat,
|
||||
Data::PeerUpdate::Flag::Members);
|
||||
}
|
||||
|
||||
void ApplyChatUpdate(
|
||||
not_null<ChatData*> chat,
|
||||
const MTPDupdateChatDefaultBannedRights &update) {
|
||||
@@ -532,6 +555,7 @@ void ApplyChatUpdate(
|
||||
chat->participants.clear();
|
||||
chat->invitedByMe.clear();
|
||||
chat->admins.clear();
|
||||
chat->memberRanks.clear();
|
||||
chat->setAdminRights(ChatAdminRights());
|
||||
const auto selfUserId = session->userId();
|
||||
for (const auto &participant : list) {
|
||||
@@ -558,13 +582,25 @@ void ApplyChatUpdate(
|
||||
|
||||
participant.match([&](const MTPDchatParticipantCreator &data) {
|
||||
chat->creator = userId;
|
||||
const auto rank = qs(data.vrank().value_or_empty());
|
||||
if (!rank.isEmpty()) {
|
||||
chat->memberRanks[userId] = rank;
|
||||
}
|
||||
}, [&](const MTPDchatParticipantAdmin &data) {
|
||||
chat->admins.emplace(user);
|
||||
if (user->isSelf()) {
|
||||
chat->setAdminRights(
|
||||
chat->defaultAdminRights(user).flags);
|
||||
}
|
||||
}, [](const MTPDchatParticipant &) {
|
||||
const auto rank = qs(data.vrank().value_or_empty());
|
||||
if (!rank.isEmpty()) {
|
||||
chat->memberRanks[userId] = rank;
|
||||
}
|
||||
}, [&](const MTPDchatParticipant &data) {
|
||||
const auto rank = qs(data.vrank().value_or_empty());
|
||||
if (!rank.isEmpty()) {
|
||||
chat->memberRanks[userId] = rank;
|
||||
}
|
||||
});
|
||||
}
|
||||
if (chat->participants.empty()) {
|
||||
|
||||
Reference in New Issue
Block a user