From 4a50db52d833d16c907fa527115ebb1112d67535 Mon Sep 17 00:00:00 2001 From: levlam Date: Mon, 4 Apr 2022 13:58:14 +0300 Subject: [PATCH] Replace get_administrator_rights with AdministratorRights constructor. --- td/telegram/ContactsManager.cpp | 4 +-- td/telegram/DialogParticipant.cpp | 60 ++++++++++++------------------- td/telegram/DialogParticipant.h | 6 ++-- 3 files changed, 27 insertions(+), 43 deletions(-) diff --git a/td/telegram/ContactsManager.cpp b/td/telegram/ContactsManager.cpp index 6f54a9a57..845ad845d 100644 --- a/td/telegram/ContactsManager.cpp +++ b/td/telegram/ContactsManager.cpp @@ -10505,8 +10505,8 @@ void ContactsManager::on_get_user_full(tl_object_ptr &&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_ || diff --git a/td/telegram/DialogParticipant.cpp b/td/telegram/DialogParticipant.cpp index 8d409bf50..a8091c436 100644 --- a/td/telegram/DialogParticipant.cpp +++ b/td/telegram/DialogParticipant.cpp @@ -18,18 +18,29 @@ namespace td { -AdministratorRights::AdministratorRights( - const td_api::object_ptr &administrator_rights) { - if (administrator_rights == nullptr) { +AdministratorRights::AdministratorRights(const tl_object_ptr &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 &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 &&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_ptrrights_), - 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 &&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 &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 &&banned_rights) { if (banned_rights == nullptr) { return RestrictedRights(false, false, false, false, false, false, false, false, false, false, false); diff --git a/td/telegram/DialogParticipant.h b/td/telegram/DialogParticipant.h index bdf02d928..37ac4e758 100644 --- a/td/telegram/DialogParticipant.h +++ b/td/telegram/DialogParticipant.h @@ -50,6 +50,8 @@ class AdministratorRights { AdministratorRights() : flags_(0) { } + explicit AdministratorRights(const tl_object_ptr &admin_rights); + explicit AdministratorRights(const td_api::object_ptr &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 &status); -AdministratorRights get_administrator_rights(tl_object_ptr &&admin_rights); - -AdministratorRights get_administrator_rights(const td_api::object_ptr &rights); - RestrictedRights get_restricted_rights(tl_object_ptr &&banned_rights); RestrictedRights get_restricted_rights(const td_api::object_ptr &permissions);