diff --git a/td/telegram/CallbackQueriesManager.cpp b/td/telegram/CallbackQueriesManager.cpp index ff2cefdd1..46ec1742f 100644 --- a/td/telegram/CallbackQueriesManager.cpp +++ b/td/telegram/CallbackQueriesManager.cpp @@ -79,8 +79,7 @@ class GetBotCallbackAnswerQuery : public Td::ResultHandler { void on_error(uint64 id, Status status) override { if (status.message() == "DATA_INVALID") { - td->messages_manager_->get_messages_from_server(vector{FullMessageId{dialog_id_, message_id_}}, - Auto()); + td->messages_manager_->get_message_from_server({dialog_id_, message_id_}, Auto()); } td->messages_manager_->on_get_dialog_error(dialog_id_, status, "GetBotCallbackAnswerQuery"); td->callback_queries_manager_->on_get_callback_query_answer(result_id_, nullptr); diff --git a/td/telegram/FileReferenceManager.cpp b/td/telegram/FileReferenceManager.cpp index 7462f1bff..0e868e1f9 100644 --- a/td/telegram/FileReferenceManager.cpp +++ b/td/telegram/FileReferenceManager.cpp @@ -40,7 +40,7 @@ size_t FileReferenceManager::get_file_reference_error_pos(const Status &error) { } /* -fileSourceMessage chat_id:int53 message_id:int53 = FileSource; // repaired with get_messages_from_server +fileSourceMessage chat_id:int53 message_id:int53 = FileSource; // repaired with get_message_from_server fileSourceUserProfilePhoto user_id:int32 photo_id:int64 = FileSource; // repaired with photos.getUserPhotos fileSourceBasicGroupPhoto basic_group_id:int32 = FileSource; // repaired with messages.getChats fileSourceSupergroupPhoto supergroup_id:int32 = FileSource; // repaired with channels.getChannels @@ -236,8 +236,8 @@ void FileReferenceManager::send_query(Destination dest, FileSourceId file_source CHECK(index < file_sources_.size()); file_sources_[index].visit(overloaded( [&](const FileSourceMessage &source) { - send_closure_later(G()->messages_manager(), &MessagesManager::get_messages_from_server, - vector{source.full_message_id}, std::move(promise), nullptr); + send_closure_later(G()->messages_manager(), &MessagesManager::get_message_from_server, source.full_message_id, + std::move(promise), nullptr); }, [&](const FileSourceUserPhoto &source) { send_closure_later(G()->contacts_manager(), &ContactsManager::reload_user_profile_photo, source.user_id, diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp index 76b95b98c..b80437c1a 100644 --- a/td/telegram/MessagesManager.cpp +++ b/td/telegram/MessagesManager.cpp @@ -6517,8 +6517,8 @@ void MessagesManager::after_get_difference() { if (dialog_id.get_type() != DialogType::Channel) { dump_debug_message_op(get_dialog(dialog_id)); } - get_messages_from_server( - {it.first}, PromiseCreator::lambda([this, full_message_id = it.first](Result result) { + get_message_from_server( + it.first, PromiseCreator::lambda([this, full_message_id = it.first](Result result) { if (result.is_error()) { LOG(WARNING) << "Failed to get missing " << full_message_id << ": " << result.error(); } else { @@ -11610,8 +11610,7 @@ void MessagesManager::get_message_force_from_server(Dialog *d, MessageId message } if (d->deleted_message_ids.count(message_id) == 0 && dialog_type != DialogType::SecretChat) { - return get_messages_from_server({FullMessageId(d->dialog_id, message_id)}, std::move(promise), - std::move(input_message)); + return get_message_from_server({d->dialog_id, message_id}, std::move(promise), std::move(input_message)); } } @@ -11732,6 +11731,11 @@ bool MessagesManager::get_messages(DialogId dialog_id, const vector & return true; } +void MessagesManager::get_message_from_server(FullMessageId full_message_id, Promise &&promise, + tl_object_ptr input_message) { + get_messages_from_server({full_message_id}, std::move(promise), std::move(input_message)); +} + void MessagesManager::get_messages_from_server(vector &&message_ids, Promise &&promise, tl_object_ptr input_message) { if (message_ids.empty()) { @@ -14372,7 +14376,7 @@ unique_ptr MessagesManager::parse_message(DialogId dia << format::as_hex_dump<4>(value.as_slice()); if (dialog_id.get_type() != DialogType::SecretChat && m->message_id.is_valid() && m->message_id.is_server()) { // trying to repair the message - get_messages_from_server({FullMessageId{dialog_id, m->message_id}}, Auto()); + get_message_from_server({dialog_id, m->message_id}, Auto()); } return nullptr; } @@ -16485,7 +16489,7 @@ void MessagesManager::on_message_media_edited(DialogId dialog_id, MessageId mess cancel_upload_message_content_files(m->edited_content.get()); if (dialog_id.get_type() != DialogType::SecretChat) { - get_messages_from_server({FullMessageId{dialog_id, message_id}}, Auto()); + get_message_from_server({dialog_id, message_id}, Auto()); } } @@ -18558,7 +18562,7 @@ bool MessagesManager::add_new_message_notification(Dialog *d, Message *m, bool f send_closure(actor_id, &MessagesManager::flush_pending_new_message_notifications, dialog_id, from_mentions, dialog_id); }); - get_messages_from_server({FullMessageId{d->dialog_id, missing_pinned_message_id}}, std::move(promise)); + get_message_from_server({d->dialog_id, missing_pinned_message_id}, std::move(promise)); } return false; } @@ -21190,7 +21194,7 @@ MessagesManager::Message *MessagesManager::on_get_message_from_database(DialogId } // can succeed in private and group chats - get_messages_from_server({FullMessageId{dialog_id, m->message_id}}, Auto()); + get_message_from_server({dialog_id, m->message_id}, Auto()); force_create_dialog(dialog_id, source); d = get_dialog_force(dialog_id); @@ -21813,7 +21817,7 @@ MessagesManager::Message *MessagesManager::add_message_to_dialog(Dialog *d, uniq need_reget_message_content(m->content.get())) { FullMessageId full_message_id{dialog_id, message_id}; LOG(INFO) << "Reget from server " << full_message_id; - get_messages_from_server({full_message_id}, Auto()); + get_message_from_server(full_message_id, Auto()); } add_message_file_sources(dialog_id, m); @@ -23986,7 +23990,7 @@ void MessagesManager::after_get_channel_difference(DialogId dialog_id, bool succ // message will not be added to the dialog anyway, get channel difference didn't help request.second.set_value(Unit()); } else { - get_messages_from_server({FullMessageId{dialog_id, message_id}}, std::move(request.second)); + get_message_from_server({dialog_id, message_id}, std::move(request.second)); } } postponed_get_message_requests_.erase(it_get_message_requests); diff --git a/td/telegram/MessagesManager.h b/td/telegram/MessagesManager.h index c51209e2a..cb20668ae 100644 --- a/td/telegram/MessagesManager.h +++ b/td/telegram/MessagesManager.h @@ -471,6 +471,9 @@ class MessagesManager : public Actor { bool get_messages(DialogId dialog_id, const vector &message_ids, Promise &&promise); + void get_message_from_server(FullMessageId full_message_id, Promise &&promise, + tl_object_ptr input_message = nullptr); + void get_messages_from_server(vector &&message_ids, Promise &&promise, tl_object_ptr input_message = nullptr);