aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorlevlam <levlam@telegram.org>2026-06-29 00:44:00 +0300
committerlevlam <levlam@telegram.org>2026-06-29 00:44:00 +0300
commit8f5d91f0be7ad92ee390ca6dc2d26249f7816cc5 (patch)
treedbc764a686c9009b887f0aef92056aa2e8a48d8f
parent213f7141c60236c0fc2d8384f14e91701e3344a1 (diff)
Use process_file_reference_error in QuickReplyManager.
-rw-r--r--td/telegram/QuickReplyManager.cpp114
1 files changed, 25 insertions, 89 deletions
diff --git a/td/telegram/QuickReplyManager.cpp b/td/telegram/QuickReplyManager.cpp
index 26469eb00..de90c5452 100644
--- a/td/telegram/QuickReplyManager.cpp
+++ b/td/telegram/QuickReplyManager.cpp
@@ -430,34 +430,13 @@ class QuickReplyManager::SendQuickReplyMediaQuery final : public Td::ResultHandl
return;
}
LOG(INFO) << "Receive error for SendQuickReplyMediaQuery: " << status;
- if (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_->quick_reply_manager_->on_send_message_file_error(shortcut_id_, message_id_, random_id_, pos, 0, {-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_->quick_reply_manager_->on_send_message_file_error(shortcut_id_, message_id_, random_id_, pos, 0, {-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_->quick_reply_manager_->on_send_message_file_error(shortcut_id_, message_id_, random_id_, pos, 0,
+ {-1});
+ })) {
+ return;
}
if (was_uploaded_) {
if (was_thumbnail_uploaded_) {
@@ -551,17 +530,12 @@ class QuickReplyManager::UploadQuickReplyMediaQuery final : public Td::ResultHan
return;
}
LOG(INFO) << "Receive error for UploadQuickReplyMediaQuery: " << status;
- if (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_->quick_reply_manager_->on_send_message_file_error(shortcut_id_, message_id_, random_id_, media_pos_,
- edit_generation_, {-1});
- return;
- } else {
- LOG(ERROR) << "Receive file reference error for UploadQuickReplyMediaQuery";
- }
+ if (td_->file_reference_manager_->process_file_reference_error(
+ status, true, {}, {}, {cover_file_id_}, {cover_file_reference_}, false, [&](size_t pos) mutable {
+ td_->quick_reply_manager_->on_send_message_file_error(shortcut_id_, message_id_, random_id_, media_pos_,
+ edit_generation_, {-1});
+ })) {
+ return;
}
if (was_uploaded_) {
if (was_thumbnail_uploaded_) {
@@ -642,30 +616,12 @@ class QuickReplyManager::SendQuickReplyMultiMediaQuery final : public Td::Result
return;
}
LOG(INFO) << "Receive error for SendQuickReplyMultiMediaQuery: " << status;
- if (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_->quick_reply_manager_->on_send_media_group_file_reference_error(shortcut_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_ids_.size() && file_ids_[pos - 1].is_valid()) {
- VLOG(file_references) << "Receive " << status << " for " << file_ids_[pos - 1];
- td_->file_manager_->delete_file_reference(file_ids_[pos - 1], file_references_[pos - 1]);
- td_->quick_reply_manager_->on_send_media_group_file_reference_error(shortcut_id_, std::move(random_ids_));
- return;
- } else {
- LOG(ERROR) << "Receive file reference error " << status << ", but file_ids = " << file_ids_
- << ", message_count = " << file_ids_.size();
- }
- }
+ if (td_->file_reference_manager_->process_file_reference_error(
+ status, file_ids_, file_references_, cover_file_ids_, cover_file_references_, true,
+ [&](size_t pos) mutable {
+ td_->quick_reply_manager_->on_send_media_group_file_reference_error(shortcut_id_, std::move(random_ids_));
+ })) {
+ return;
}
td_->quick_reply_manager_->on_failed_send_quick_reply_messages(shortcut_id_, std::move(random_ids_),
std::move(status));
@@ -3217,32 +3173,12 @@ void QuickReplyManager::fail_edit_quick_reply_message(QuickReplyShortcutId short
}
return;
}
- if (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]);
- return on_send_message_file_error(shortcut_id, message_id, 0, pos, edit_generation, {-1});
- } 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]);
- return on_send_message_file_error(shortcut_id, message_id, 0, pos, edit_generation, {-1});
- } 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 {
+ on_send_message_file_error(shortcut_id, message_id, 0, pos, edit_generation, {-1});
+ })) {
+ return;
}
if (was_uploaded) {
if (was_thumbnail_uploaded) {