aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorlevlam <levlam@telegram.org>2025-02-13 15:55:32 +0300
committerlevlam <levlam@telegram.org>2025-02-13 15:55:32 +0300
commit0f6612d9305de8f8553cfb06fe7d5f59e3002c4f (patch)
tree15e4db2629a775035a8a64df2d835e2d95deca86
parent76c0705760dd06c0410fe619e9517c042945ccfb (diff)
Upload business album covers.
-rw-r--r--td/telegram/BusinessConnectionManager.cpp31
-rw-r--r--td/telegram/BusinessConnectionManager.h5
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,