diff options
| author | levlam <levlam@telegram.org> | 2026-06-28 22:27:02 +0300 |
|---|---|---|
| committer | levlam <levlam@telegram.org> | 2026-06-28 22:27:02 +0300 |
| commit | 213f7141c60236c0fc2d8384f14e91701e3344a1 (patch) | |
| tree | adf6f11f13716f16a66e6c19b74842ae24e5e997 | |
| parent | e9e18e20cc87c6d197cdbf3405fa4e76c0ba6300 (diff) | |
Use process_file_reference_error in MessagesManager.
| -rw-r--r-- | td/telegram/MessagesManager.cpp | 109 |
1 files changed, 22 insertions, 87 deletions
diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp index 0216008a6..273239c65 100644 --- a/td/telegram/MessagesManager.cpp +++ b/td/telegram/MessagesManager.cpp @@ -1498,30 +1498,12 @@ class SendMultiMediaQuery final : public Td::ResultHandler { return; } LOG(INFO) << "Receive error for SendMultiMedia: " << status; - if (!td_->auth_manager_->is_bot() && FileReferenceManager::is_file_reference_error(status)) { - auto source = FileReferenceManager::get_file_reference_error_source(status); - auto pos = source.pos_; - if (source.is_cover_) { - if (1 <= pos && pos <= cover_file_ids_.size() && cover_file_ids_[pos - 1].is_valid()) { - VLOG(file_references) << "Receive " << status << " for cover " << cover_file_ids_[pos - 1]; - td_->file_manager_->delete_file_reference(cover_file_ids_[pos - 1], cover_file_references_[pos - 1]); - td_->messages_manager_->on_send_media_group_file_reference_error(dialog_id_, std::move(random_ids_)); - return; - } else { - LOG(ERROR) << "Receive file reference error " << status << ", but cover_file_ids = " << cover_file_ids_ - << ", message_count = " << cover_file_ids_.size(); - } - } else { - if (1 <= pos && pos <= file_upload_ids_.size() && file_upload_ids_[pos - 1].is_valid()) { - VLOG(file_references) << "Receive " << status << " for " << file_upload_ids_[pos - 1]; - td_->file_manager_->delete_file_reference(file_upload_ids_[pos - 1].get_file_id(), file_references_[pos - 1]); - td_->messages_manager_->on_send_media_group_file_reference_error(dialog_id_, std::move(random_ids_)); - return; - } else { - LOG(ERROR) << "Receive file reference error " << status << ", but file_upload_ids = " << file_upload_ids_ - << ", message_count = " << file_upload_ids_.size(); - } - } + if (td_->file_reference_manager_->process_file_reference_error( + status, false, file_upload_ids_, file_references_, cover_file_ids_, cover_file_references_, true, + [&](size_t pos) mutable { + td_->messages_manager_->on_send_media_group_file_reference_error(dialog_id_, std::move(random_ids_)); + })) { + return; } auto star_count = MessagesManager::get_required_paid_message_star_count(status.code(), status.message()); if (star_count > 0) { @@ -1660,34 +1642,10 @@ class SendMediaQuery final : public Td::ResultHandler { // do not send error, message will be re-sent after restart return; } - if (!td_->auth_manager_->is_bot() && FileReferenceManager::is_file_reference_error(status)) { - auto source = FileReferenceManager::get_file_reference_error_source(status); - auto pos = source.pos_; - if (pos > 0) { - pos--; - } - if (source.is_cover_) { - if (pos < cover_file_ids_.size() && pos < cover_file_references_.size()) { - VLOG(file_references) << "Receive " << status << " for cover " << cover_file_ids_[pos]; - td_->file_manager_->delete_file_reference(cover_file_ids_[pos], cover_file_references_[pos]); - td_->messages_manager_->on_send_message_file_error(random_id_, pos, {-1}); - return; - } else { - LOG(ERROR) << "Receive file reference error " << pos << ", but cover_file_ids = " << cover_file_ids_ - << ", file_references = " << cover_file_references_; - } - } else { - if (pos < file_upload_ids_.size() && pos < file_references_.size() && !was_uploaded_ && - file_upload_ids_[pos].is_valid()) { - VLOG(file_references) << "Receive " << status << " for " << file_upload_ids_[pos]; - td_->file_manager_->delete_file_reference(file_upload_ids_[pos].get_file_id(), file_references_[pos]); - td_->messages_manager_->on_send_message_file_error(random_id_, pos, {-1}); - return; - } else { - LOG(ERROR) << "Receive file reference error " << pos << ", but file_upload_ids = " << file_upload_ids_ - << ", was_uploaded = " << was_uploaded_ << ", file_references = " << file_references_; - } - } + if (td_->file_reference_manager_->process_file_reference_error( + status, was_uploaded_, file_upload_ids_, file_references_, cover_file_ids_, cover_file_references_, false, + [&](size_t pos) mutable { td_->messages_manager_->on_send_message_file_error(random_id_, pos, {-1}); })) { + return; } if (was_uploaded_) { if (was_thumbnail_uploaded_) { @@ -1778,17 +1736,12 @@ class UploadMediaQuery final : public Td::ResultHandler { return; } td_->dialog_manager_->on_get_dialog_error(dialog_id_, status, "UploadMediaQuery"); - if (!td_->auth_manager_->is_bot() && FileReferenceManager::is_file_reference_error(status)) { - auto source = FileReferenceManager::get_file_reference_error_source(status); - if (source.is_cover_ && source.pos_ <= 1 && cover_file_id_.is_valid()) { - VLOG(file_references) << "Receive " << status << " for cover " << cover_file_id_; - td_->file_manager_->delete_file_reference(cover_file_id_, cover_file_reference_); - td_->messages_manager_->on_upload_message_media_file_parts_missing(dialog_id_, message_id_, media_pos_, - edit_generation_, {-1}); - return; - } else { - LOG(ERROR) << "Receive file reference error for UploadMediaQuery"; - } + if (td_->file_reference_manager_->process_file_reference_error( + status, true, {}, {}, {cover_file_id_}, {cover_file_reference_}, false, [&](size_t pos) mutable { + td_->messages_manager_->on_upload_message_media_file_parts_missing(dialog_id_, message_id_, media_pos_, + edit_generation_, {-1}); + })) { + return; } if (was_uploaded_) { if (was_thumbnail_uploaded_) { @@ -23254,30 +23207,12 @@ void MessagesManager::on_message_media_edited( } else { const auto &error = result.error(); LOG(INFO) << "Failed to edit " << message_id << " in " << dialog_id << ": " << error; - if (!td_->auth_manager_->is_bot() && FileReferenceManager::is_file_reference_error(error)) { - auto source = FileReferenceManager::get_file_reference_error_source(error); - auto pos = source.pos_; - if (pos > 0) { - pos--; - } - if (source.is_cover_) { - if (pos < cover_file_ids.size() && pos < cover_file_references.size()) { - VLOG(file_references) << "Receive " << error << " for cover " << cover_file_ids[pos]; - td_->file_manager_->delete_file_reference(cover_file_ids[pos], cover_file_references[pos]); - return on_send_message_file_error(dialog_id, m, edited_message->content_.get(), file_upload_ids, pos, {-1}); - } else { - LOG(ERROR) << "Receive file reference error, but have no cover_file_id"; - } - } else { - if (pos < file_upload_ids.size() && pos < file_references.size() && !was_uploaded && - file_upload_ids[pos].is_valid()) { - VLOG(file_references) << "Receive " << error << " for " << file_upload_ids[pos]; - td_->file_manager_->delete_file_reference(file_upload_ids[pos].get_file_id(), file_references[pos]); - return on_send_message_file_error(dialog_id, m, edited_message->content_.get(), file_upload_ids, pos, {-1}); - } else { - LOG(ERROR) << "Receive file reference error, but have no file_id"; - } - } + if (td_->file_reference_manager_->process_file_reference_error( + error, was_uploaded, file_upload_ids, file_references, cover_file_ids, cover_file_references, false, + [&](size_t pos) mutable { + on_send_message_file_error(dialog_id, m, edited_message->content_.get(), file_upload_ids, pos, {-1}); + })) { + return; } if (was_uploaded) { CHECK(file_upload_ids.size() == 1u); |
