Rebase: Simplify update*FullInfo handling.

This commit is contained in:
David Guillen Fandos 2024-02-03 11:21:00 +01:00
parent c57bb6830b
commit d7d127430f
2 changed files with 26 additions and 116 deletions

View File

@ -4149,7 +4149,7 @@ class Client::TdOnGetChatStickerSetCallback final : public TdQueryCallback {
auto chat_info = client_->get_chat(chat_id_);
CHECK(chat_info != nullptr);
CHECK(chat_info->type == ChatInfo::Type::Supergroup);
client_->set_supergroup_sticker_set_id(chat_info->supergroup_id, 0);
client_->add_supergroup_info(chat_info->supergroup_id)->sticker_set_id = 0;
} else {
CHECK(result->get_id() == td_api::stickerSet::ID);
auto sticker_set = move_object_as<td_api::stickerSet>(result);
@ -5990,14 +5990,12 @@ void Client::on_update(object_ptr<td_api::Object> result) {
auto update = move_object_as<td_api::updateUserFullInfo>(result);
auto user_id = update->user_id_;
auto full_info = update->user_full_info_.get();
set_user_photo(user_id,
full_info->photo_ == nullptr ? std::move(full_info->public_photo_) : std::move(full_info->photo_));
if (full_info->bio_ != nullptr) {
set_user_bio(user_id, std::move(full_info->bio_->text_));
}
set_user_has_private_forwards(user_id, full_info->has_private_forwards_);
set_user_has_restricted_voice_and_video_messages(user_id,
full_info->has_restricted_voice_and_video_note_messages_);
auto user_info = add_user_info(user_id);
user_info->photo =
full_info->photo_ == nullptr ? std::move(full_info->public_photo_) : std::move(full_info->photo_);
user_info->bio = full_info->bio_ != nullptr ? std::move(full_info->bio_->text_) : td::string();
user_info->has_private_forwards = full_info->has_private_forwards_;
user_info->has_restricted_voice_and_video_messages = full_info->has_restricted_voice_and_video_note_messages_;
break;
}
case td_api::updateUserStatus::ID: {
@ -6016,11 +6014,11 @@ void Client::on_update(object_ptr<td_api::Object> result) {
auto update = move_object_as<td_api::updateBasicGroupFullInfo>(result);
auto group_id = update->basic_group_id_;
auto full_info = update->basic_group_full_info_.get();
set_group_photo(group_id, std::move(full_info->photo_));
set_group_description(group_id, std::move(full_info->description_));
set_group_invite_link(group_id, full_info->invite_link_ != nullptr
? std::move(full_info->invite_link_->invite_link_)
: td::string());
auto group_info = add_group_info(group_id);
group_info->photo = std::move(full_info->photo_);
group_info->description = std::move(full_info->description_);
group_info->invite_link = std::move(
full_info->invite_link_ != nullptr ? std::move(full_info->invite_link_->invite_link_) : td::string());
break;
}
case td_api::updateSupergroup::ID: {
@ -6033,18 +6031,18 @@ void Client::on_update(object_ptr<td_api::Object> result) {
auto update = move_object_as<td_api::updateSupergroupFullInfo>(result);
auto supergroup_id = update->supergroup_id_;
auto full_info = update->supergroup_full_info_.get();
set_supergroup_photo(supergroup_id, std::move(full_info->photo_));
set_supergroup_description(supergroup_id, std::move(full_info->description_));
set_supergroup_invite_link(supergroup_id, full_info->invite_link_ != nullptr
? std::move(full_info->invite_link_->invite_link_)
: td::string());
set_supergroup_sticker_set_id(supergroup_id, full_info->sticker_set_id_);
set_supergroup_can_set_sticker_set(supergroup_id, full_info->can_set_sticker_set_);
set_supergroup_slow_mode_delay(supergroup_id, full_info->slow_mode_delay_);
set_supergroup_linked_chat_id(supergroup_id, full_info->linked_chat_id_);
set_supergroup_location(supergroup_id, std::move(full_info->location_));
set_supergroup_has_hidden_members(supergroup_id, full_info->has_hidden_members_);
set_supergroup_has_aggressive_anti_spam_enabled(supergroup_id, full_info->has_aggressive_anti_spam_enabled_);
auto supergroup_info = add_supergroup_info(supergroup_id);
supergroup_info->photo = std::move(full_info->photo_);
supergroup_info->description = std::move(full_info->description_);
supergroup_info->invite_link = std::move(
full_info->invite_link_ != nullptr ? std::move(full_info->invite_link_->invite_link_) : td::string());
supergroup_info->sticker_set_id = full_info->sticker_set_id_;
supergroup_info->can_set_sticker_set = full_info->can_set_sticker_set_;
supergroup_info->slow_mode_delay = full_info->slow_mode_delay_;
supergroup_info->linked_chat_id = full_info->linked_chat_id_;
supergroup_info->location = std::move(full_info->location_);
supergroup_info->has_hidden_members = full_info->has_hidden_members_;
supergroup_info->has_aggressive_anti_spam_enabled = full_info->has_aggressive_anti_spam_enabled_;
break;
}
case td_api::updateOption::ID: {
@ -11820,23 +11818,6 @@ const Client::UserInfo *Client::get_user_info(int64 user_id) const {
return users_.get_pointer(user_id);
}
void Client::set_user_photo(int64 user_id, object_ptr<td_api::chatPhoto> &&photo) {
add_user_info(user_id)->photo = std::move(photo);
}
void Client::set_user_bio(int64 user_id, td::string &&bio) {
add_user_info(user_id)->bio = std::move(bio);
}
void Client::set_user_has_private_forwards(int64 user_id, bool has_private_forwards) {
add_user_info(user_id)->has_private_forwards = has_private_forwards;
}
void Client::set_user_has_restricted_voice_and_video_messages(int64 user_id,
bool has_restricted_voice_and_video_messages) {
add_user_info(user_id)->has_restricted_voice_and_video_messages = has_restricted_voice_and_video_messages;
}
void Client::set_user_status(int64 user_id, object_ptr<td_api::UserStatus> &&status) {
add_user_info(user_id)->status = std::move(status);
}
@ -11864,18 +11845,6 @@ const Client::GroupInfo *Client::get_group_info(int64 group_id) const {
return groups_.get_pointer(group_id);
}
void Client::set_group_photo(int64 group_id, object_ptr<td_api::chatPhoto> &&photo) {
add_group_info(group_id)->photo = std::move(photo);
}
void Client::set_group_description(int64 group_id, td::string &&description) {
add_group_info(group_id)->description = std::move(description);
}
void Client::set_group_invite_link(int64 group_id, td::string &&invite_link) {
add_group_info(group_id)->invite_link = std::move(invite_link);
}
void Client::add_supergroup(SupergroupInfo *supergroup_info, object_ptr<td_api::supergroup> &&supergroup) {
if (supergroup->usernames_ == nullptr) {
supergroup_info->active_usernames.clear();
@ -11898,47 +11867,6 @@ void Client::add_supergroup(SupergroupInfo *supergroup_info, object_ptr<td_api::
// end custom properties
}
void Client::set_supergroup_photo(int64 supergroup_id, object_ptr<td_api::chatPhoto> &&photo) {
add_supergroup_info(supergroup_id)->photo = std::move(photo);
}
void Client::set_supergroup_description(int64 supergroup_id, td::string &&description) {
add_supergroup_info(supergroup_id)->description = std::move(description);
}
void Client::set_supergroup_invite_link(int64 supergroup_id, td::string &&invite_link) {
add_supergroup_info(supergroup_id)->invite_link = std::move(invite_link);
}
void Client::set_supergroup_sticker_set_id(int64 supergroup_id, int64 sticker_set_id) {
add_supergroup_info(supergroup_id)->sticker_set_id = sticker_set_id;
}
void Client::set_supergroup_can_set_sticker_set(int64 supergroup_id, bool can_set_sticker_set) {
add_supergroup_info(supergroup_id)->can_set_sticker_set = can_set_sticker_set;
}
void Client::set_supergroup_slow_mode_delay(int64 supergroup_id, int32 slow_mode_delay) {
add_supergroup_info(supergroup_id)->slow_mode_delay = slow_mode_delay;
}
void Client::set_supergroup_linked_chat_id(int64 supergroup_id, int64 linked_chat_id) {
add_supergroup_info(supergroup_id)->linked_chat_id = linked_chat_id;
}
void Client::set_supergroup_location(int64 supergroup_id, object_ptr<td_api::chatLocation> location) {
add_supergroup_info(supergroup_id)->location = std::move(location);
}
void Client::set_supergroup_has_hidden_members(int64 supergroup_id, bool has_hidden_members) {
add_supergroup_info(supergroup_id)->has_hidden_members = has_hidden_members;
}
void Client::set_supergroup_has_aggressive_anti_spam_enabled(int64 supergroup_id,
bool has_aggressive_anti_spam_enabled) {
add_supergroup_info(supergroup_id)->has_aggressive_anti_spam_enabled = has_aggressive_anti_spam_enabled;
}
Client::SupergroupInfo *Client::add_supergroup_info(int64 supergroup_id) {
auto &supergroup_info = supergroups_[supergroup_id];
if (supergroup_info == nullptr) {

View File

@ -836,16 +836,11 @@ class Client final : public WebhookActor::Callback {
bool added_to_attachment_menu = false;
};
static void add_user(UserInfo *user_info, object_ptr<td_api::user> &&user);
void set_user_photo(int64 user_id, object_ptr<td_api::chatPhoto> &&photo);
void set_user_bio(int64 user_id, td::string &&bio);
void set_user_has_private_forwards(int64 user_id, bool has_private_forwards);
void set_user_has_restricted_voice_and_video_messages(int64 user_id, bool has_restricted_voice_and_video_messages);
void set_user_status(int64 user_id, object_ptr<td_api::UserStatus> &&status);
UserInfo *add_user_info(int64 user_id);
const UserInfo *get_user_info(int64 user_id) const;
void set_user_status(int64 user_id, object_ptr<td_api::UserStatus> &&status);
struct GroupInfo {
object_ptr<td_api::chatPhoto> photo;
td::string description;
@ -857,9 +852,6 @@ class Client final : public WebhookActor::Callback {
int64 upgraded_to_supergroup_id = 0;
};
static void add_group(GroupInfo *group_info, object_ptr<td_api::basicGroup> &&group);
void set_group_photo(int64 group_id, object_ptr<td_api::chatPhoto> &&photo);
void set_group_description(int64 group_id, td::string &&description);
void set_group_invite_link(int64 group_id, td::string &&invite_link);
GroupInfo *add_group_info(int64 group_id);
const GroupInfo *get_group_info(int64 group_id) const;
@ -890,16 +882,6 @@ class Client final : public WebhookActor::Callback {
// end custom properties
};
static void add_supergroup(SupergroupInfo *supergroup_info, object_ptr<td_api::supergroup> &&supergroup);
void set_supergroup_photo(int64 supergroup_id, object_ptr<td_api::chatPhoto> &&photo);
void set_supergroup_description(int64 supergroup_id, td::string &&description);
void set_supergroup_invite_link(int64 supergroup_id, td::string &&invite_link);
void set_supergroup_sticker_set_id(int64 supergroup_id, int64 sticker_set_id);
void set_supergroup_can_set_sticker_set(int64 supergroup_id, bool can_set_sticker_set);
void set_supergroup_slow_mode_delay(int64 supergroup_id, int32 slow_mode_delay);
void set_supergroup_linked_chat_id(int64 supergroup_id, int64 linked_chat_id);
void set_supergroup_location(int64 supergroup_id, object_ptr<td_api::chatLocation> location);
void set_supergroup_has_hidden_members(int64 supergroup_id, bool has_hidden_members);
void set_supergroup_has_aggressive_anti_spam_enabled(int64 supergroup_id, bool has_aggressive_anti_spam_enabled);
SupergroupInfo *add_supergroup_info(int64 supergroup_id);
const SupergroupInfo *get_supergroup_info(int64 supergroup_id) const;