diff options
| author | levlam <levlam@telegram.org> | 2025-02-13 15:55:32 +0300 |
|---|---|---|
| committer | levlam <levlam@telegram.org> | 2025-02-13 15:55:32 +0300 |
| commit | 0f6612d9305de8f8553cfb06fe7d5f59e3002c4f (patch) | |
| tree | 15e4db2629a775035a8a64df2d835e2d95deca86 | |
| parent | 76c0705760dd06c0410fe619e9517c042945ccfb (diff) | |
Upload business album covers.
| -rw-r--r-- | td/telegram/BusinessConnectionManager.cpp | 31 | ||||
| -rw-r--r-- | td/telegram/BusinessConnectionManager.h | 5 |
2 files changed, 36 insertions, 0 deletions
diff --git a/td/telegram/BusinessConnectionManager.cpp b/td/telegram/BusinessConnectionManager.cpp index f92c577f4..2f79197de 100644 --- a/td/telegram/BusinessConnectionManager.cpp +++ b/td/telegram/BusinessConnectionManager.cpp @@ -33,6 +33,7 @@ #include "td/telegram/UserId.h" #include "td/telegram/UserManager.h" +#include "td/utils/algorithm.h" #include "td/utils/buffer.h" #include "td/utils/format.h" #include "td/utils/logging.h" @@ -1138,6 +1139,36 @@ void BusinessConnectionManager::send_message_album( request.upload_results_.resize(message_contents.size()); request.promise_ = std::move(promise); + do_send_message_album(request_id, business_connection_id, dialog_id, std::move(input_reply_to), disable_notification, + protect_content, effect_id, std::move(message_contents), std::move(promise)); +} + +void BusinessConnectionManager::do_send_message_album(int64 request_id, BusinessConnectionId business_connection_id, + DialogId dialog_id, MessageInputReplyTo &&input_reply_to, + bool disable_notification, bool protect_content, + MessageEffectId effect_id, + vector<InputMessageContent> &&message_contents, + Promise<td_api::object_ptr<td_api::businessMessages>> &&promise) { + vector<const Photo *> covers; + for (auto &content : message_contents) { + append(covers, get_message_content_need_to_upload_covers(td_, content.content.get())); + } + if (!covers.empty()) { + return td_->message_query_manager_->upload_message_covers( + business_connection_id, dialog_id, std::move(covers), + PromiseCreator::lambda([actor_id = actor_id(this), request_id, business_connection_id, dialog_id, + input_reply_to = std::move(input_reply_to), disable_notification, protect_content, + effect_id, message_contents = std::move(message_contents), + promise = std::move(promise)](Result<Unit> result) mutable { + if (result.is_error()) { + return promise.set_error(result.move_as_error()); + } + send_closure(actor_id, &BusinessConnectionManager::do_send_message_album, request_id, business_connection_id, + dialog_id, std::move(input_reply_to), disable_notification, protect_content, effect_id, + std::move(message_contents), std::move(promise)); + })); + } + for (size_t media_pos = 0; media_pos < message_contents.size(); media_pos++) { auto &message_content = message_contents[media_pos]; auto message = diff --git a/td/telegram/BusinessConnectionManager.h b/td/telegram/BusinessConnectionManager.h index 5f1dab34e..b8b0ed7b2 100644 --- a/td/telegram/BusinessConnectionManager.h +++ b/td/telegram/BusinessConnectionManager.h @@ -185,6 +185,11 @@ class BusinessConnectionManager final : public Actor { int64 generate_new_media_album_id(); + void do_send_message_album(int64 request_id, BusinessConnectionId business_connection_id, DialogId dialog_id, + MessageInputReplyTo &&input_reply_to, bool disable_notification, bool protect_content, + MessageEffectId effect_id, vector<InputMessageContent> &&message_contents, + Promise<td_api::object_ptr<td_api::businessMessages>> &&promise); + void on_upload_message_album_media(int64 request_id, size_t media_pos, Result<UploadMediaResult> &&result); void process_sent_business_message_album(telegram_api::object_ptr<telegram_api::Updates> &&updates_ptr, |
