From 6539fbcff6008deae8c971699afdcdcd77a2f12a Mon Sep 17 00:00:00 2001 From: levlam Date: Fri, 28 Sep 2018 19:07:14 +0300 Subject: [PATCH] Add get_message_content_new_participant_count. GitOrigin-RevId: b4c884cdd8d947af3a5a8a3263da2b3bc547be4d --- td/telegram/MessagesManager.cpp | 38 ++++++++++++++++----------------- td/telegram/MessagesManager.h | 2 ++ 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp index 57c91008..e8a19980 100644 --- a/td/telegram/MessagesManager.cpp +++ b/td/telegram/MessagesManager.cpp @@ -23363,6 +23363,19 @@ MessagesManager::Message *MessagesManager::add_message_to_dialog(DialogId dialog return add_message_to_dialog(d, std::move(message), from_update, need_update, need_update_dialog_pos, source); } +int32 MessagesManager::get_message_content_new_participant_count(const MessageContent *content) { + switch (content->get_type()) { + case MessageContentType::ChatAddUsers: + return narrow_cast(static_cast(content)->user_ids.size()); + case MessageContentType::ChatJoinedByLink: + return 1; + case MessageContentType::ChatDeleteUser: + return -1; + default: + return 0; + } +} + MessagesManager::Message *MessagesManager::add_message_to_dialog(Dialog *d, unique_ptr message, bool from_update, bool *need_update, bool *need_update_dialog_pos, const char *source) { @@ -23823,30 +23836,15 @@ MessagesManager::Message *MessagesManager::add_message_to_dialog(Dialog *d, uniq } if (from_update && message_id.is_server() && dialog_id.get_type() == DialogType::Channel) { - int32 new_participant_count = 0; - switch (message_content_type) { - case MessageContentType::ChatAddUsers: - new_participant_count = - narrow_cast(static_cast(message->content.get())->user_ids.size()); - break; - case MessageContentType::ChatJoinedByLink: - new_participant_count = 1; - break; - case MessageContentType::ChatDeleteUser: - new_participant_count = -1; - break; - case MessageContentType::PinMessage: - td_->contacts_manager_->on_update_channel_pinned_message( - dialog_id.get_channel_id(), static_cast(message->content.get())->message_id); - break; - default: - // nothing to do - break; - } + int32 new_participant_count = get_message_content_new_participant_count(message->content.get()); if (new_participant_count != 0) { td_->contacts_manager_->speculative_add_channel_participants(dialog_id.get_channel_id(), new_participant_count, message->sender_user_id == my_user_id); } + if (message_content_type == MessageContentType::PinMessage) { + td_->contacts_manager_->on_update_channel_pinned_message( + dialog_id.get_channel_id(), static_cast(message->content.get())->message_id); + } } if (!td_->auth_manager_->is_bot() && from_update && message->forward_info == nullptr && (message->is_outgoing || dialog_id == my_dialog_id)) { diff --git a/td/telegram/MessagesManager.h b/td/telegram/MessagesManager.h index 6bb55965..000f9d42 100644 --- a/td/telegram/MessagesManager.h +++ b/td/telegram/MessagesManager.h @@ -2249,6 +2249,8 @@ class MessagesManager : public Actor { static int32 get_message_content_index_mask(const MessageContent *content, const Td *td, bool is_secret, bool is_outgoing); + static int32 get_message_content_new_participant_count(const MessageContent *content); + Message *add_message_to_dialog(DialogId dialog_id, unique_ptr message, bool from_update, bool *need_update, bool *need_update_dialog_pos, const char *source);