diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp index ed727a79..9c65650b 100644 --- a/td/telegram/MessagesManager.cpp +++ b/td/telegram/MessagesManager.cpp @@ -16681,22 +16681,11 @@ bool MessagesManager::is_message_auto_read(DialogId dialog_id, bool is_outgoing) } } -void MessagesManager::add_message_dependencies(Dependencies &dependencies, DialogId dialog_id, const Message *m) { - dependencies.user_ids.insert(m->sender_user_id); - dependencies.user_ids.insert(m->via_bot_user_id); - if (m->forward_info != nullptr) { - dependencies.user_ids.insert(m->forward_info->sender_user_id); - if (m->forward_info->dialog_id.is_valid() && dependencies.dialog_ids.insert(m->forward_info->dialog_id).second) { - add_dialog_dependencies(dependencies, m->forward_info->dialog_id); - } - if (m->forward_info->from_dialog_id.is_valid() && - dependencies.dialog_ids.insert(m->forward_info->from_dialog_id).second) { - add_dialog_dependencies(dependencies, m->forward_info->from_dialog_id); - } - } - switch (m->content->get_type()) { +void MessagesManager::add_message_content_dependencies(Dependencies &dependencies, + const MessageContent *message_content) { + switch (message_content->get_type()) { case MessageContentType::Text: { - auto content = static_cast(m->content.get()); + auto content = static_cast(message_content); dependencies.web_page_ids.insert(content->web_page_id); break; } @@ -16705,14 +16694,14 @@ void MessagesManager::add_message_dependencies(Dependencies &dependencies, Dialo case MessageContentType::Audio: break; case MessageContentType::Contact: { - auto content = static_cast(m->content.get()); + auto content = static_cast(message_content); dependencies.user_ids.insert(content->contact.get_user_id()); break; } case MessageContentType::Document: break; case MessageContentType::Game: { - auto content = static_cast(m->content.get()); + auto content = static_cast(message_content); dependencies.user_ids.insert(content->game.get_bot_user_id()); break; } @@ -16735,7 +16724,7 @@ void MessagesManager::add_message_dependencies(Dependencies &dependencies, Dialo case MessageContentType::VoiceNote: break; case MessageContentType::ChatCreate: { - auto content = static_cast(m->content.get()); + auto content = static_cast(message_content); dependencies.user_ids.insert(content->participant_user_ids.begin(), content->participant_user_ids.end()); break; } @@ -16748,26 +16737,26 @@ void MessagesManager::add_message_dependencies(Dependencies &dependencies, Dialo case MessageContentType::ChatDeleteHistory: break; case MessageContentType::ChatAddUsers: { - auto content = static_cast(m->content.get()); + auto content = static_cast(message_content); dependencies.user_ids.insert(content->user_ids.begin(), content->user_ids.end()); break; } case MessageContentType::ChatJoinedByLink: break; case MessageContentType::ChatDeleteUser: { - auto content = static_cast(m->content.get()); + auto content = static_cast(message_content); dependencies.user_ids.insert(content->user_id); break; } case MessageContentType::ChatMigrateTo: { - auto content = static_cast(m->content.get()); + auto content = static_cast(message_content); dependencies.channel_ids.insert(content->migrated_to_channel_id); break; } case MessageContentType::ChannelCreate: break; case MessageContentType::ChannelMigrateFrom: { - auto content = static_cast(m->content.get()); + auto content = static_cast(message_content); dependencies.chat_ids.insert(content->migrated_from_chat_id); break; } @@ -16803,7 +16792,23 @@ void MessagesManager::add_message_dependencies(Dependencies &dependencies, Dialo UNREACHABLE(); break; } - add_formatted_text_dependencies(dependencies, get_message_content_text(m->content.get())); + add_formatted_text_dependencies(dependencies, get_message_content_text(message_content)); +} + +void MessagesManager::add_message_dependencies(Dependencies &dependencies, DialogId dialog_id, const Message *m) { + dependencies.user_ids.insert(m->sender_user_id); + dependencies.user_ids.insert(m->via_bot_user_id); + if (m->forward_info != nullptr) { + dependencies.user_ids.insert(m->forward_info->sender_user_id); + if (m->forward_info->dialog_id.is_valid() && dependencies.dialog_ids.insert(m->forward_info->dialog_id).second) { + add_dialog_dependencies(dependencies, m->forward_info->dialog_id); + } + if (m->forward_info->from_dialog_id.is_valid() && + dependencies.dialog_ids.insert(m->forward_info->from_dialog_id).second) { + add_dialog_dependencies(dependencies, m->forward_info->from_dialog_id); + } + } + add_message_content_dependencies(dependencies, m->content.get()); } void MessagesManager::add_dialog_dependencies(Dependencies &dependencies, DialogId dialog_id) { diff --git a/td/telegram/MessagesManager.h b/td/telegram/MessagesManager.h index 9c74c229..a94f55cf 100644 --- a/td/telegram/MessagesManager.h +++ b/td/telegram/MessagesManager.h @@ -2738,6 +2738,8 @@ class MessagesManager : public Actor { static void dump_debug_message_op(const Dialog *d, int priority = 0); + static void add_message_content_dependencies(Dependencies &dependencies, const MessageContent *message_content); + static void add_message_dependencies(Dependencies &dependencies, DialogId dialog_id, const Message *m); static void add_dialog_dependencies(Dependencies &dependencies, DialogId dialog_id);