diff options
Diffstat (limited to 'td')
| -rw-r--r-- | td/telegram/BusinessConnectionManager.cpp | 19 | ||||
| -rw-r--r-- | td/telegram/BusinessConnectionManager.h | 10 | ||||
| -rw-r--r-- | td/telegram/MessageContent.cpp | 6 | ||||
| -rw-r--r-- | td/telegram/MessageContent.h | 2 | ||||
| -rw-r--r-- | td/telegram/MessageQueryManager.cpp | 2 | ||||
| -rw-r--r-- | td/telegram/MessagesManager.cpp | 2 | ||||
| -rw-r--r-- | td/telegram/QuickReplyManager.cpp | 2 |
7 files changed, 23 insertions, 20 deletions
diff --git a/td/telegram/BusinessConnectionManager.cpp b/td/telegram/BusinessConnectionManager.cpp index 231f6cbf7..52f816aae 100644 --- a/td/telegram/BusinessConnectionManager.cpp +++ b/td/telegram/BusinessConnectionManager.cpp @@ -133,6 +133,7 @@ struct BusinessConnectionManager::PendingMessage { bool disable_notification_ = false; bool invert_media_ = false; bool disable_web_page_preview_ = false; + bool is_in_album_ = false; void init_file_upload_ids(Td *td) { CHECK(file_upload_id_ == FileUploadId()); @@ -1226,7 +1227,7 @@ Result<InputMessageContent> BusinessConnectionManager::process_input_message_con unique_ptr<BusinessConnectionManager::PendingMessage> BusinessConnectionManager::create_business_message_to_send( BusinessConnectionId business_connection_id, DialogId dialog_id, MessageInputReplyTo &&input_reply_to, bool disable_notification, bool protect_content, MessageEffectId effect_id, unique_ptr<ReplyMarkup> &&reply_markup, - InputMessageContent &&input_content) const { + InputMessageContent &&input_content, bool is_in_album) const { auto content = dup_message_content(td_, td_->dialog_manager_->get_my_dialog_id(), input_content.content.get(), MessageContentDupType::Send, MessageCopyOptions()); auto message = make_unique<PendingMessage>(); @@ -1243,6 +1244,7 @@ unique_ptr<BusinessConnectionManager::PendingMessage> BusinessConnectionManager: message->ttl_ = input_content.ttl; message->send_emoji_ = std::move(input_content.emoji); message->random_id_ = Random::secure_int64(); + message->is_in_album_ = is_in_album; message->init_file_upload_ids(td_); return message; } @@ -1259,9 +1261,9 @@ void BusinessConnectionManager::send_message(BusinessConnectionId business_conne TRY_RESULT_PROMISE(promise, message_reply_markup, get_reply_markup(std::move(reply_markup), DialogType::User, false, true, false)); - auto message = create_business_message_to_send(std::move(business_connection_id), dialog_id, - std::move(input_reply_to), disable_notification, protect_content, - effect_id, std::move(message_reply_markup), std::move(input_content)); + auto message = create_business_message_to_send( + std::move(business_connection_id), dialog_id, std::move(input_reply_to), disable_notification, protect_content, + effect_id, std::move(message_reply_markup), std::move(input_content), false); do_send_message(std::move(message), std::move(promise)); } @@ -1519,7 +1521,7 @@ void BusinessConnectionManager::do_upload_media(BeingUploadedMedia &&being_uploa file_upload_id, thumbnail_file_upload_id, message->ttl_, message->send_emoji_, true) .media_); CHECK(input_media != nullptr); - if (is_uploaded_input_media(input_media)) { + if (is_uploaded_input_media(input_media, message->is_in_album_)) { UploadMediaResult result; result.message_ = std::move(being_uploaded_media.message_); result.input_media_ = std::move(input_media); @@ -1617,7 +1619,7 @@ void BusinessConnectionManager::do_send_message_album(int64 request_id, Business auto &message_content = message_contents[media_pos]; auto message = create_business_message_to_send(business_connection_id, dialog_id, input_reply_to.clone(), disable_notification, - protect_content, effect_id, nullptr, std::move(message_content)); + protect_content, effect_id, nullptr, std::move(message_content), true); auto input_media = std::move(get_message_content_input_media(message->content_.get(), td_, message->ttl_, message->send_emoji_, td_->auth_manager_->is_bot(), -1) .media_); @@ -1804,7 +1806,7 @@ void BusinessConnectionManager::edit_business_message_text( get_input_message_content(DialogId(), std::move(input_message_content), td_, true)); auto message = create_business_message_to_send(business_connection_id, dialog_id, MessageInputReplyTo(), false, false, - MessageEffectId(), std::move(new_reply_markup), std::move(content)); + MessageEffectId(), std::move(new_reply_markup), std::move(content), false); message->message_id_ = message_id; return do_send_message(std::move(message), std::move(promise)); @@ -1880,7 +1882,8 @@ void BusinessConnectionManager::edit_business_message_media( get_inline_reply_markup(std::move(reply_markup), td_->auth_manager_->is_bot(), true)); auto message = create_business_message_to_send(business_connection_id, dialog_id, MessageInputReplyTo(), false, false, - MessageEffectId(), std::move(new_reply_markup), std::move(content)); + MessageEffectId(), std::move(new_reply_markup), std::move(content), + new_message_content_type != td_api::inputMessageAnimation::ID); message->message_id_ = message_id; do_send_message(std::move(message), std::move(promise)); diff --git a/td/telegram/BusinessConnectionManager.h b/td/telegram/BusinessConnectionManager.h index f86964e84..77d86bc66 100644 --- a/td/telegram/BusinessConnectionManager.h +++ b/td/telegram/BusinessConnectionManager.h @@ -189,12 +189,10 @@ class BusinessConnectionManager final : public Actor { Result<InputMessageContent> process_input_message_content( td_api::object_ptr<td_api::InputMessageContent> &&input_message_content); - unique_ptr<PendingMessage> create_business_message_to_send(BusinessConnectionId business_connection_id, - DialogId dialog_id, MessageInputReplyTo &&input_reply_to, - bool disable_notification, bool protect_content, - MessageEffectId effect_id, - unique_ptr<ReplyMarkup> &&reply_markup, - InputMessageContent &&input_content) const; + unique_ptr<PendingMessage> create_business_message_to_send( + BusinessConnectionId business_connection_id, DialogId dialog_id, MessageInputReplyTo &&input_reply_to, + bool disable_notification, bool protect_content, MessageEffectId effect_id, + unique_ptr<ReplyMarkup> &&reply_markup, InputMessageContent &&input_content, bool is_in_album) const; void do_send_message(unique_ptr<PendingMessage> &&message, Promise<td_api::object_ptr<td_api::businessMessage>> &&promise); diff --git a/td/telegram/MessageContent.cpp b/td/telegram/MessageContent.cpp index a1afdec3d..29fd349fd 100644 --- a/td/telegram/MessageContent.cpp +++ b/td/telegram/MessageContent.cpp @@ -5934,12 +5934,14 @@ telegram_api::object_ptr<telegram_api::InputMedia> get_message_content_input_med is_optional, text->web_page_url); } -bool is_uploaded_input_media(telegram_api::object_ptr<telegram_api::InputMedia> &input_media) { +bool is_uploaded_input_media(telegram_api::object_ptr<telegram_api::InputMedia> &input_media, bool disallow_animation) { CHECK(input_media != nullptr); LOG(DEBUG) << "Have " << to_string(input_media); switch (input_media->get_id()) { case telegram_api::inputMediaUploadedDocument::ID: - static_cast<telegram_api::inputMediaUploadedDocument *>(input_media.get())->nosound_video_ = true; + if (disallow_animation) { + static_cast<telegram_api::inputMediaUploadedDocument *>(input_media.get())->nosound_video_ = true; + } // fallthrough case telegram_api::inputMediaUploadedPhoto::ID: case telegram_api::inputMediaDocumentExternal::ID: diff --git a/td/telegram/MessageContent.h b/td/telegram/MessageContent.h index 1a54efbd8..0ba471207 100644 --- a/td/telegram/MessageContent.h +++ b/td/telegram/MessageContent.h @@ -166,7 +166,7 @@ InputMedia get_message_content_input_media(const MessageContent *content, Td *td telegram_api::object_ptr<telegram_api::InputMedia> get_message_content_input_media_web_page( const Td *td, const MessageContent *content); -bool is_uploaded_input_media(telegram_api::object_ptr<telegram_api::InputMedia> &input_media); +bool is_uploaded_input_media(telegram_api::object_ptr<telegram_api::InputMedia> &input_media, bool disallow_animation); void delete_message_content_thumbnail(Td *td, MessageContent *content, int32 media_pos); diff --git a/td/telegram/MessageQueryManager.cpp b/td/telegram/MessageQueryManager.cpp index 40a098acd..8c954cc4a 100644 --- a/td/telegram/MessageQueryManager.cpp +++ b/td/telegram/MessageQueryManager.cpp @@ -2331,7 +2331,7 @@ void MessageQueryManager::do_upload_cover(FileUploadId file_upload_id, BeingUplo auto input_media = being_uploaded_cover.cover_.get_input_media(td_, std::move(input_file)); CHECK(input_media != nullptr); - if (is_uploaded_input_media(input_media)) { + if (is_uploaded_input_media(input_media, true)) { return being_uploaded_cover.promise_.set_value(Unit()); } else { td_->create_handler<UploadCoverQuery>(std::move(being_uploaded_cover.promise_)) diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp index 75222e7d7..81e0c9418 100644 --- a/td/telegram/MessagesManager.cpp +++ b/td/telegram/MessagesManager.cpp @@ -22039,7 +22039,7 @@ void MessagesManager::on_message_media_uploaded(DialogId dialog_id, const Messag auto is_edit = message_id.is_any_server(); if ((!is_edit && m->media_album_id != 0) || media_pos != -1) { CHECK(input_media.rich_message_ == nullptr); - if (!is_uploaded_input_media(input_media.media_)) { + if (!is_uploaded_input_media(input_media.media_, m->media_album_id != 0)) { auto file_upload_id = get_message_send_file_upload_id(dialog_id, m, media_pos); auto thumbnail_file_upload_id = get_message_send_thumbnail_file_upload_id(dialog_id, m, media_pos); auto cover_file_ids = get_message_content_cover_any_file_ids(td_, m->content.get()); diff --git a/td/telegram/QuickReplyManager.cpp b/td/telegram/QuickReplyManager.cpp index d3381183d..d877b8009 100644 --- a/td/telegram/QuickReplyManager.cpp +++ b/td/telegram/QuickReplyManager.cpp @@ -2545,7 +2545,7 @@ void QuickReplyManager::on_message_media_uploaded(const QuickReplyMessage *m, in auto is_edit = message_id.is_any_server(); if ((!is_edit && m->media_album_id != 0) || media_pos != -1) { CHECK(input_media.media_ != nullptr); - if (!is_uploaded_input_media(input_media.media_)) { + if (!is_uploaded_input_media(input_media.media_, m->media_album_id != 0)) { td_->create_handler<UploadQuickReplyMediaQuery>()->send(m, media_pos, m->edit_generation, std::move(input_media.media_)); } else { |
