Replace get_administrator_rights with AdministratorRights constructor.

This commit is contained in:
levlam 2022-04-04 13:58:14 +03:00
parent 665c1adc75
commit 4a50db52d8
3 changed files with 27 additions and 43 deletions

View File

@ -10505,8 +10505,8 @@ void ContactsManager::on_get_user_full(tl_object_ptr<telegram_api::userFull> &&u
bool can_be_called = user->phone_calls_available_ && !user->phone_calls_private_;
bool supports_video_calls = user->video_calls_available_ && !user->phone_calls_private_;
bool has_private_calls = user->phone_calls_private_;
auto group_administrator_rights = get_administrator_rights(std::move(user->bot_group_admin_rights_));
auto broadcast_administrator_rights = get_administrator_rights(std::move(user->bot_broadcast_admin_rights_));
AdministratorRights group_administrator_rights(user->bot_group_admin_rights_);
AdministratorRights broadcast_administrator_rights(user->bot_broadcast_admin_rights_);
if (user_full->can_be_called != can_be_called || user_full->supports_video_calls != supports_video_calls ||
user_full->has_private_calls != has_private_calls ||
user_full->private_forward_name != user->private_forward_name_ ||

View File

@ -18,18 +18,29 @@
namespace td {
AdministratorRights::AdministratorRights(
const td_api::object_ptr<td_api::chatAdministratorRights> &administrator_rights) {
if (administrator_rights == nullptr) {
AdministratorRights::AdministratorRights(const tl_object_ptr<telegram_api::chatAdminRights> &rights) {
if (rights == nullptr) {
flags_ = 0;
return;
}
*this = AdministratorRights(administrator_rights->is_anonymous_, administrator_rights->can_manage_chat_,
administrator_rights->can_change_info_, administrator_rights->can_post_messages_,
administrator_rights->can_edit_messages_, administrator_rights->can_delete_messages_,
administrator_rights->can_invite_users_, administrator_rights->can_restrict_members_,
administrator_rights->can_pin_messages_, administrator_rights->can_promote_members_,
administrator_rights->can_manage_video_chats_);
if (!rights->other_) {
LOG(ERROR) << "Receive wrong other flag in " << to_string(rights);
}
*this = AdministratorRights(rights->anonymous_, rights->other_, rights->change_info_, rights->post_messages_,
rights->edit_messages_, rights->delete_messages_, rights->invite_users_,
rights->ban_users_, rights->pin_messages_, rights->add_admins_, rights->manage_call_);
}
AdministratorRights::AdministratorRights(const td_api::object_ptr<td_api::chatAdministratorRights> &rights) {
if (rights == nullptr) {
flags_ = 0;
return;
}
*this = AdministratorRights(rights->is_anonymous_, rights->can_manage_chat_, rights->can_change_info_,
rights->can_post_messages_, rights->can_edit_messages_, rights->can_delete_messages_,
rights->can_invite_users_, rights->can_restrict_members_, rights->can_pin_messages_,
rights->can_promote_members_, rights->can_manage_video_chats_);
}
AdministratorRights::AdministratorRights(bool is_anonymous, bool can_manage_dialog, bool can_change_info,
@ -341,8 +352,7 @@ DialogParticipantStatus::DialogParticipantStatus(bool can_be_edited,
tl_object_ptr<telegram_api::chatAdminRights> &&admin_rights,
string rank) {
CHECK(admin_rights != nullptr);
uint32 flags =
::td::get_administrator_rights(std::move(admin_rights)).flags_ | AdministratorRights::CAN_MANAGE_DIALOG;
uint32 flags = AdministratorRights(std::move(admin_rights)).flags_ | AdministratorRights::CAN_MANAGE_DIALOG;
if (can_be_edited) {
flags |= CAN_BE_EDITED;
}
@ -534,8 +544,8 @@ DialogParticipantStatus get_dialog_participant_status(const tl_object_ptr<td_api
if (!clean_input_string(custom_title)) {
custom_title.clear();
}
return DialogParticipantStatus::Administrator(::td::get_administrator_rights(st->rights_),
std::move(custom_title), true /*st->can_be_edited_*/);
return DialogParticipantStatus::Administrator(AdministratorRights(st->rights_), std::move(custom_title),
true /*st->can_be_edited_*/);
}
case td_api::chatMemberStatusMember::ID:
return DialogParticipantStatus::Member();
@ -556,30 +566,6 @@ DialogParticipantStatus get_dialog_participant_status(const tl_object_ptr<td_api
}
}
AdministratorRights get_administrator_rights(tl_object_ptr<telegram_api::chatAdminRights> &&admin_rights) {
if (admin_rights == nullptr) {
return AdministratorRights();
}
if (!admin_rights->other_) {
LOG(ERROR) << "Receive wrong other flag in " << to_string(admin_rights);
}
return AdministratorRights(admin_rights->anonymous_, admin_rights->other_, admin_rights->change_info_,
admin_rights->post_messages_, admin_rights->edit_messages_, admin_rights->delete_messages_,
admin_rights->invite_users_, admin_rights->ban_users_, admin_rights->pin_messages_,
admin_rights->add_admins_, admin_rights->manage_call_);
}
AdministratorRights get_administrator_rights(const td_api::object_ptr<td_api::chatAdministratorRights> &rights) {
if (rights == nullptr) {
return AdministratorRights();
}
return AdministratorRights(rights->is_anonymous_, rights->can_manage_chat_, rights->can_change_info_,
rights->can_post_messages_, rights->can_edit_messages_, rights->can_delete_messages_,
rights->can_invite_users_, rights->can_restrict_members_, rights->can_pin_messages_,
rights->can_promote_members_, rights->can_manage_video_chats_);
}
RestrictedRights get_restricted_rights(tl_object_ptr<telegram_api::chatBannedRights> &&banned_rights) {
if (banned_rights == nullptr) {
return RestrictedRights(false, false, false, false, false, false, false, false, false, false, false);

View File

@ -50,6 +50,8 @@ class AdministratorRights {
AdministratorRights() : flags_(0) {
}
explicit AdministratorRights(const tl_object_ptr<telegram_api::chatAdminRights> &admin_rights);
explicit AdministratorRights(const td_api::object_ptr<td_api::chatAdministratorRights> &administrator_rights);
AdministratorRights(bool is_anonymous, bool can_manage_dialog, bool can_change_info, bool can_post_messages,
@ -548,10 +550,6 @@ struct DialogParticipants {
DialogParticipantStatus get_dialog_participant_status(const tl_object_ptr<td_api::ChatMemberStatus> &status);
AdministratorRights get_administrator_rights(tl_object_ptr<telegram_api::chatAdminRights> &&admin_rights);
AdministratorRights get_administrator_rights(const td_api::object_ptr<td_api::chatAdministratorRights> &rights);
RestrictedRights get_restricted_rights(tl_object_ptr<telegram_api::chatBannedRights> &&banned_rights);
RestrictedRights get_restricted_rights(const td_api::object_ptr<td_api::chatPermissions> &permissions);