Move InputInvoice methods inside the class.

This commit is contained in:
levlam 2022-09-23 12:52:54 +03:00
parent 87e2e107bb
commit e5d1fd0dfa
5 changed files with 131 additions and 139 deletions

View File

@ -376,8 +376,8 @@ Result<tl_object_ptr<telegram_api::InputBotInlineMessage>> InlineQueriesManager:
return contact.get_input_bot_inline_message_media_contact(std::move(input_reply_markup));
}
if (constructor_id == td_api::inputMessageInvoice::ID) {
TRY_RESULT(input_invoice, process_input_message_invoice(std::move(input_message_content), td_));
return get_input_bot_inline_message_media_invoice(input_invoice, std::move(input_reply_markup), td_);
TRY_RESULT(input_invoice, InputInvoice::process_input_message_invoice(std::move(input_message_content), td_));
return input_invoice.get_input_bot_inline_message_media_invoice(std::move(input_reply_markup), td_);
}
if (constructor_id == td_api::inputMessageLocation::ID) {
TRY_RESULT(location, process_input_message_location(std::move(input_message_content)));

View File

@ -65,60 +65,56 @@ bool operator!=(const InputInvoice &lhs, const InputInvoice &rhs) {
return !(lhs == rhs);
}
InputInvoice get_input_invoice(tl_object_ptr<telegram_api::messageMediaInvoice> &&message_invoice, Td *td,
DialogId owner_dialog_id, FormattedText &&message) {
InputInvoice result;
result.title_ = std::move(message_invoice->title_);
result.description_ = std::move(message_invoice->description_);
result.photo_ = get_web_document_photo(td->file_manager_.get(), std::move(message_invoice->photo_), owner_dialog_id);
result.start_parameter_ = std::move(message_invoice->start_param_);
result.invoice_.currency_ = std::move(message_invoice->currency_);
result.invoice_.is_test_ = message_invoice->test_;
result.invoice_.need_shipping_address_ = message_invoice->shipping_address_requested_;
// result.payload_ = string();
// result.provider_token_ = string();
// result.provider_data_ = string();
result.extended_media_ =
InputInvoice::InputInvoice(tl_object_ptr<telegram_api::messageMediaInvoice> &&message_invoice, Td *td,
DialogId owner_dialog_id, FormattedText &&message) {
title_ = std::move(message_invoice->title_);
description_ = std::move(message_invoice->description_);
photo_ = get_web_document_photo(td->file_manager_.get(), std::move(message_invoice->photo_), owner_dialog_id);
start_parameter_ = std::move(message_invoice->start_param_);
invoice_.currency_ = std::move(message_invoice->currency_);
invoice_.is_test_ = message_invoice->test_;
invoice_.need_shipping_address_ = message_invoice->shipping_address_requested_;
// payload_ = string();
// provider_token_ = string();
// provider_data_ = string();
extended_media_ =
MessageExtendedMedia(td, std::move(message_invoice->extended_media_), std::move(message), owner_dialog_id);
if (message_invoice->total_amount_ <= 0 || !check_currency_amount(message_invoice->total_amount_)) {
LOG(ERROR) << "Receive invalid total amount " << message_invoice->total_amount_;
message_invoice->total_amount_ = 0;
}
result.total_amount_ = message_invoice->total_amount_;
total_amount_ = message_invoice->total_amount_;
if ((message_invoice->flags_ & telegram_api::messageMediaInvoice::RECEIPT_MSG_ID_MASK) != 0) {
result.receipt_message_id_ = MessageId(ServerMessageId(message_invoice->receipt_msg_id_));
if (!result.receipt_message_id_.is_valid()) {
LOG(ERROR) << "Receive as receipt message " << result.receipt_message_id_ << " in " << owner_dialog_id;
result.receipt_message_id_ = MessageId();
receipt_message_id_ = MessageId(ServerMessageId(message_invoice->receipt_msg_id_));
if (!receipt_message_id_.is_valid()) {
LOG(ERROR) << "Receive as receipt message " << receipt_message_id_ << " in " << owner_dialog_id;
receipt_message_id_ = MessageId();
}
}
return result;
}
InputInvoice get_input_invoice(tl_object_ptr<telegram_api::botInlineMessageMediaInvoice> &&message_invoice, Td *td,
DialogId owner_dialog_id) {
InputInvoice result;
result.title_ = std::move(message_invoice->title_);
result.description_ = std::move(message_invoice->description_);
result.photo_ = get_web_document_photo(td->file_manager_.get(), std::move(message_invoice->photo_), owner_dialog_id);
// result.start_parameter_ = string();
result.invoice_.currency_ = std::move(message_invoice->currency_);
result.invoice_.is_test_ = message_invoice->test_;
result.invoice_.need_shipping_address_ = message_invoice->shipping_address_requested_;
// result.payload_ = string();
// result.provider_token_ = string();
// result.provider_data_ = string();
// result.extended_media_ = MessageExtendedMedia();
InputInvoice::InputInvoice(tl_object_ptr<telegram_api::botInlineMessageMediaInvoice> &&message_invoice, Td *td,
DialogId owner_dialog_id) {
title_ = std::move(message_invoice->title_);
description_ = std::move(message_invoice->description_);
photo_ = get_web_document_photo(td->file_manager_.get(), std::move(message_invoice->photo_), owner_dialog_id);
// start_parameter_ = string();
invoice_.currency_ = std::move(message_invoice->currency_);
invoice_.is_test_ = message_invoice->test_;
invoice_.need_shipping_address_ = message_invoice->shipping_address_requested_;
// payload_ = string();
// provider_token_ = string();
// provider_data_ = string();
// extended_media_ = MessageExtendedMedia();
if (message_invoice->total_amount_ <= 0 || !check_currency_amount(message_invoice->total_amount_)) {
LOG(ERROR) << "Receive invalid total amount " << message_invoice->total_amount_;
message_invoice->total_amount_ = 0;
}
result.total_amount_ = message_invoice->total_amount_;
// result.receipt_message_id_ = MessageId();
return result;
total_amount_ = message_invoice->total_amount_;
// receipt_message_id_ = MessageId();
}
Result<InputInvoice> process_input_message_invoice(
Result<InputInvoice> InputInvoice::process_input_message_invoice(
td_api::object_ptr<td_api::InputMessageContent> &&input_message_content, Td *td) {
CHECK(input_message_content != nullptr);
CHECK(input_message_content->get_id() == td_api::inputMessageInvoice::ID);
@ -247,14 +243,13 @@ Result<InputInvoice> process_input_message_invoice(
return result;
}
tl_object_ptr<td_api::messageInvoice> get_message_invoice_object(const InputInvoice &input_invoice, Td *td,
bool skip_bot_commands, int32 max_media_timestamp) {
tl_object_ptr<td_api::messageInvoice> InputInvoice::get_message_invoice_object(Td *td, bool skip_bot_commands,
int32 max_media_timestamp) const {
return make_tl_object<td_api::messageInvoice>(
input_invoice.title_, get_product_description_object(input_invoice.description_),
get_photo_object(td->file_manager_.get(), input_invoice.photo_), input_invoice.invoice_.currency_,
input_invoice.total_amount_, input_invoice.start_parameter_, input_invoice.invoice_.is_test_,
input_invoice.invoice_.need_shipping_address_, input_invoice.receipt_message_id_.get(),
input_invoice.extended_media_.get_message_extended_media_object(td, skip_bot_commands, max_media_timestamp));
title_, get_product_description_object(description_), get_photo_object(td->file_manager_.get(), photo_),
invoice_.currency_, total_amount_, start_parameter_, invoice_.is_test_, invoice_.need_shipping_address_,
receipt_message_id_.get(),
extended_media_.get_message_extended_media_object(td, skip_bot_commands, max_media_timestamp));
}
static tl_object_ptr<telegram_api::invoice> get_input_invoice(const Invoice &invoice) {
@ -325,80 +320,77 @@ static tl_object_ptr<telegram_api::inputWebDocument> get_input_web_document(cons
std::move(attributes));
}
tl_object_ptr<telegram_api::inputMediaInvoice> get_input_media_invoice(const InputInvoice &input_invoice, Td *td) {
tl_object_ptr<telegram_api::inputMediaInvoice> InputInvoice::get_input_media_invoice(Td *td) const {
int32 flags = 0;
if (!input_invoice.start_parameter_.empty()) {
if (!start_parameter_.empty()) {
flags |= telegram_api::inputMediaInvoice::START_PARAM_MASK;
}
auto input_web_document = get_input_web_document(td->file_manager_.get(), input_invoice.photo_);
auto input_web_document = get_input_web_document(td->file_manager_.get(), photo_);
if (input_web_document != nullptr) {
flags |= telegram_api::inputMediaInvoice::PHOTO_MASK;
}
return make_tl_object<telegram_api::inputMediaInvoice>(
flags, input_invoice.title_, input_invoice.description_, std::move(input_web_document),
get_input_invoice(input_invoice.invoice_), BufferSlice(input_invoice.payload_), input_invoice.provider_token_,
telegram_api::make_object<telegram_api::dataJSON>(
input_invoice.provider_data_.empty() ? "null" : input_invoice.provider_data_),
input_invoice.start_parameter_, nullptr);
flags, title_, description_, std::move(input_web_document), get_input_invoice(invoice_), BufferSlice(payload_),
provider_token_,
telegram_api::make_object<telegram_api::dataJSON>(provider_data_.empty() ? "null" : provider_data_),
start_parameter_, nullptr);
}
tl_object_ptr<telegram_api::inputBotInlineMessageMediaInvoice> get_input_bot_inline_message_media_invoice(
const InputInvoice &input_invoice, tl_object_ptr<telegram_api::ReplyMarkup> &&reply_markup, Td *td) {
tl_object_ptr<telegram_api::inputBotInlineMessageMediaInvoice> InputInvoice::get_input_bot_inline_message_media_invoice(
tl_object_ptr<telegram_api::ReplyMarkup> &&reply_markup, Td *td) const {
int32 flags = 0;
if (reply_markup != nullptr) {
flags |= telegram_api::inputBotInlineMessageMediaInvoice::REPLY_MARKUP_MASK;
}
auto input_web_document = get_input_web_document(td->file_manager_.get(), input_invoice.photo_);
auto input_web_document = get_input_web_document(td->file_manager_.get(), photo_);
if (input_web_document != nullptr) {
flags |= telegram_api::inputBotInlineMessageMediaInvoice::PHOTO_MASK;
}
return make_tl_object<telegram_api::inputBotInlineMessageMediaInvoice>(
flags, input_invoice.title_, input_invoice.description_, std::move(input_web_document),
get_input_invoice(input_invoice.invoice_), BufferSlice(input_invoice.payload_), input_invoice.provider_token_,
telegram_api::make_object<telegram_api::dataJSON>(
input_invoice.provider_data_.empty() ? "null" : input_invoice.provider_data_),
flags, title_, description_, std::move(input_web_document), get_input_invoice(invoice_), BufferSlice(payload_),
provider_token_,
telegram_api::make_object<telegram_api::dataJSON>(provider_data_.empty() ? "null" : provider_data_),
std::move(reply_markup));
}
vector<FileId> get_input_invoice_file_ids(const Td *td, const InputInvoice &input_invoice) {
auto file_ids = photo_get_file_ids(input_invoice.photo_);
input_invoice.extended_media_.append_file_ids(td, file_ids);
vector<FileId> InputInvoice::get_file_ids(const Td *td) const {
auto file_ids = photo_get_file_ids(photo_);
extended_media_.append_file_ids(td, file_ids);
return file_ids;
}
void input_invoice_delete_thumbnail(Td *td, InputInvoice &input_invoice) {
input_invoice.extended_media_.delete_thumbnail(td);
void InputInvoice::delete_thumbnail(Td *td) {
extended_media_.delete_thumbnail(td);
}
bool has_input_invoice_media_timestamp(const InputInvoice &input_invoice) {
return input_invoice.extended_media_.has_media_timestamp();
bool InputInvoice::has_media_timestamp() const {
return extended_media_.has_media_timestamp();
}
const FormattedText *get_input_invoice_caption(const InputInvoice &input_invoice) {
return input_invoice.extended_media_.get_caption();
const FormattedText *InputInvoice::get_caption() const {
return extended_media_.get_caption();
}
int32 get_input_invoice_duration(const Td *td, const InputInvoice &input_invoice) {
return input_invoice.extended_media_.get_duration(td);
int32 InputInvoice::get_duration(const Td *td) const {
return extended_media_.get_duration(td);
}
FileId get_input_invoice_upload_file_id(const InputInvoice &input_invoice) {
return input_invoice.extended_media_.get_upload_file_id();
FileId InputInvoice::get_upload_file_id() const {
return extended_media_.get_upload_file_id();
}
FileId get_input_invoice_any_file_id(const InputInvoice &input_invoice) {
return input_invoice.extended_media_.get_any_file_id();
FileId InputInvoice::get_any_file_id() const {
return extended_media_.get_any_file_id();
}
FileId get_input_invoice_thumbnail_file_id(const Td *td, const InputInvoice &input_invoice) {
return input_invoice.extended_media_.get_thumbnail_file_id(td);
FileId InputInvoice::get_thumbnail_file_id(const Td *td) const {
return extended_media_.get_thumbnail_file_id(td);
}
bool update_input_invoice_extended_media(InputInvoice &input_invoice,
telegram_api::object_ptr<telegram_api::MessageExtendedMedia> extended_media,
bool InputInvoice::update_extended_media(telegram_api::object_ptr<telegram_api::MessageExtendedMedia> extended_media,
DialogId owner_dialog_id, Td *td) {
return input_invoice.extended_media_.update_to(td, std::move(extended_media), owner_dialog_id);
return extended_media_.update_to(td, std::move(extended_media), owner_dialog_id);
}
tl_object_ptr<td_api::formattedText> get_product_description_object(const string &description) {

View File

@ -56,6 +56,44 @@ struct InputInvoice {
int64 total_amount_ = 0;
MessageId receipt_message_id_;
InputInvoice() = default;
InputInvoice(tl_object_ptr<telegram_api::messageMediaInvoice> &&message_invoice, Td *td, DialogId owner_dialog_id,
FormattedText &&message);
InputInvoice(tl_object_ptr<telegram_api::botInlineMessageMediaInvoice> &&message_invoice, Td *td,
DialogId owner_dialog_id);
static Result<InputInvoice> process_input_message_invoice(
td_api::object_ptr<td_api::InputMessageContent> &&input_message_content, Td *td);
tl_object_ptr<td_api::messageInvoice> get_message_invoice_object(Td *td, bool skip_bot_commands,
int32 max_media_timestamp) const;
tl_object_ptr<telegram_api::inputMediaInvoice> get_input_media_invoice(Td *td) const;
tl_object_ptr<telegram_api::inputBotInlineMessageMediaInvoice> get_input_bot_inline_message_media_invoice(
tl_object_ptr<telegram_api::ReplyMarkup> &&reply_markup, Td *td) const;
vector<FileId> get_file_ids(const Td *td) const;
void delete_thumbnail(Td *td);
bool has_media_timestamp() const;
const FormattedText *get_caption() const;
int32 get_duration(const Td *td) const;
FileId get_upload_file_id() const;
FileId get_any_file_id() const;
FileId get_thumbnail_file_id(const Td *td) const;
bool update_extended_media(telegram_api::object_ptr<telegram_api::MessageExtendedMedia> extended_media,
DialogId owner_dialog_id, Td *td);
};
bool operator==(const Invoice &lhs, const Invoice &rhs);
@ -66,43 +104,6 @@ StringBuilder &operator<<(StringBuilder &string_builder, const Invoice &invoice)
bool operator==(const InputInvoice &lhs, const InputInvoice &rhs);
bool operator!=(const InputInvoice &lhs, const InputInvoice &rhs);
InputInvoice get_input_invoice(tl_object_ptr<telegram_api::messageMediaInvoice> &&message_invoice, Td *td,
DialogId owner_dialog_id, FormattedText &&message);
InputInvoice get_input_invoice(tl_object_ptr<telegram_api::botInlineMessageMediaInvoice> &&message_invoice, Td *td,
DialogId owner_dialog_id);
Result<InputInvoice> process_input_message_invoice(
td_api::object_ptr<td_api::InputMessageContent> &&input_message_content, Td *td);
tl_object_ptr<td_api::messageInvoice> get_message_invoice_object(const InputInvoice &input_invoice, Td *td,
bool skip_bot_commands, int32 max_media_timestamp);
tl_object_ptr<telegram_api::inputMediaInvoice> get_input_media_invoice(const InputInvoice &input_invoice, Td *td);
tl_object_ptr<telegram_api::inputBotInlineMessageMediaInvoice> get_input_bot_inline_message_media_invoice(
const InputInvoice &input_invoice, tl_object_ptr<telegram_api::ReplyMarkup> &&reply_markup, Td *td);
vector<FileId> get_input_invoice_file_ids(const Td *td, const InputInvoice &input_invoice);
void input_invoice_delete_thumbnail(Td *td, InputInvoice &input_invoice);
bool has_input_invoice_media_timestamp(const InputInvoice &input_invoice);
const FormattedText *get_input_invoice_caption(const InputInvoice &input_invoice);
int32 get_input_invoice_duration(const Td *td, const InputInvoice &input_invoice);
FileId get_input_invoice_upload_file_id(const InputInvoice &input_invoice);
FileId get_input_invoice_any_file_id(const InputInvoice &input_invoice);
FileId get_input_invoice_thumbnail_file_id(const Td *td, const InputInvoice &input_invoice);
bool update_input_invoice_extended_media(InputInvoice &input_invoice,
telegram_api::object_ptr<telegram_api::MessageExtendedMedia> extended_media,
DialogId owner_dialog_id, Td *td);
tl_object_ptr<td_api::formattedText> get_product_description_object(const string &description);
} // namespace td

View File

@ -1637,8 +1637,7 @@ InlineMessageContent create_inline_message_content(Td *td, FileId file_id,
case telegram_api::botInlineMessageMediaInvoice::ID: {
auto inline_message = move_tl_object_as<telegram_api::botInlineMessageMediaInvoice>(bot_inline_message);
reply_markup = std::move(inline_message->reply_markup_);
result.message_content =
make_unique<MessageInvoice>(get_input_invoice(std::move(inline_message), td, DialogId()));
result.message_content = make_unique<MessageInvoice>(InputInvoice(std::move(inline_message), td, DialogId()));
break;
}
case telegram_api::botInlineMessageMediaGeo::ID: {
@ -1955,7 +1954,7 @@ static Result<InputMessageContent> create_input_message_content(
return Status::Error(400, "Invoices can be sent only by bots");
}
TRY_RESULT(input_invoice, process_input_message_invoice(std::move(input_message_content), td));
TRY_RESULT(input_invoice, InputInvoice::process_input_message_invoice(std::move(input_message_content), td));
content = make_unique<MessageInvoice>(std::move(input_invoice));
break;
}
@ -2358,7 +2357,7 @@ static tl_object_ptr<telegram_api::InputMedia> get_input_media_impl(
}
case MessageContentType::Invoice: {
const auto *m = static_cast<const MessageInvoice *>(content);
return get_input_media_invoice(m->input_invoice, td);
return m->input_invoice.get_input_media_invoice(td);
}
case MessageContentType::LiveLocation: {
const auto *m = static_cast<const MessageLiveLocation *>(content);
@ -2542,7 +2541,7 @@ void delete_message_content_thumbnail(MessageContent *content, Td *td) {
}
case MessageContentType::Invoice: {
auto *m = static_cast<MessageInvoice *>(content);
return input_invoice_delete_thumbnail(td, m->input_invoice);
return m->input_invoice.delete_thumbnail(td);
}
case MessageContentType::Photo: {
auto *m = static_cast<MessagePhoto *>(content);
@ -3036,7 +3035,7 @@ bool can_message_content_have_media_timestamp(const MessageContent *content) {
return true;
case MessageContentType::Invoice: {
const auto *m = static_cast<const MessageInvoice *>(content);
return has_input_invoice_media_timestamp(m->input_invoice);
return m->input_invoice.has_media_timestamp();
}
default:
return has_message_content_web_page(content);
@ -4481,7 +4480,7 @@ unique_ptr<MessageContent> get_message_content(Td *td, FormattedText message,
return std::move(m);
}
case telegram_api::messageMediaInvoice::ID:
return td::make_unique<MessageInvoice>(get_input_invoice(
return td::make_unique<MessageInvoice>(InputInvoice(
move_tl_object_as<telegram_api::messageMediaInvoice>(media_ptr), td, owner_dialog_id, std::move(message)));
case telegram_api::messageMediaWebPage::ID: {
auto media = move_tl_object_as<telegram_api::messageMediaWebPage>(media_ptr);
@ -5102,7 +5101,7 @@ tl_object_ptr<td_api::MessageContent> get_message_content_object(const MessageCo
}
case MessageContentType::Invoice: {
const auto *m = static_cast<const MessageInvoice *>(content);
return get_message_invoice_object(m->input_invoice, td, skip_bot_commands, max_media_timestamp);
return m->input_invoice.get_message_invoice_object(td, skip_bot_commands, max_media_timestamp);
}
case MessageContentType::LiveLocation: {
const auto *m = static_cast<const MessageLiveLocation *>(content);
@ -5369,7 +5368,7 @@ const FormattedText *get_message_content_caption(const MessageContent *content)
case MessageContentType::Document:
return &static_cast<const MessageDocument *>(content)->caption;
case MessageContentType::Invoice:
return get_input_invoice_caption(static_cast<const MessageInvoice *>(content)->input_invoice);
return static_cast<const MessageInvoice *>(content)->input_invoice.get_caption();
case MessageContentType::Photo:
return &static_cast<const MessagePhoto *>(content)->caption;
case MessageContentType::Video:
@ -5393,7 +5392,7 @@ int32 get_message_content_duration(const MessageContent *content, const Td *td)
return td->audios_manager_->get_audio_duration(audio_file_id);
}
case MessageContentType::Invoice:
return get_input_invoice_duration(td, static_cast<const MessageInvoice *>(content)->input_invoice);
return static_cast<const MessageInvoice *>(content)->input_invoice.get_duration(td);
case MessageContentType::Video: {
auto video_file_id = static_cast<const MessageVideo *>(content)->file_id;
return td->videos_manager_->get_video_duration(video_file_id);
@ -5419,7 +5418,7 @@ int32 get_message_content_media_duration(const MessageContent *content, const Td
return td->audios_manager_->get_audio_duration(audio_file_id);
}
case MessageContentType::Invoice:
return get_input_invoice_duration(td, static_cast<const MessageInvoice *>(content)->input_invoice);
return static_cast<const MessageInvoice *>(content)->input_invoice.get_duration(td);
case MessageContentType::Text: {
auto web_page_id = static_cast<const MessageText *>(content)->web_page_id;
return td->web_pages_manager_->get_web_page_media_duration(web_page_id);
@ -5450,7 +5449,7 @@ FileId get_message_content_upload_file_id(const MessageContent *content) {
case MessageContentType::Document:
return static_cast<const MessageDocument *>(content)->file_id;
case MessageContentType::Invoice:
return get_input_invoice_upload_file_id(static_cast<const MessageInvoice *>(content)->input_invoice);
return static_cast<const MessageInvoice *>(content)->input_invoice.get_upload_file_id();
case MessageContentType::Photo:
return get_photo_upload_file_id(static_cast<const MessagePhoto *>(content)->photo);
case MessageContentType::Sticker:
@ -5473,7 +5472,7 @@ FileId get_message_content_any_file_id(const MessageContent *content) {
if (content->get_type() == MessageContentType::Photo) {
result = get_photo_any_file_id(static_cast<const MessagePhoto *>(content)->photo);
} else if (content->get_type() == MessageContentType::Invoice) {
result = get_input_invoice_any_file_id(static_cast<const MessageInvoice *>(content)->input_invoice);
result = static_cast<const MessageInvoice *>(content)->input_invoice.get_any_file_id();
}
}
return result;
@ -5519,7 +5518,7 @@ FileId get_message_content_thumbnail_file_id(const MessageContent *content, cons
return td->documents_manager_->get_document_thumbnail_file_id(
static_cast<const MessageDocument *>(content)->file_id);
case MessageContentType::Invoice:
return get_input_invoice_thumbnail_file_id(td, static_cast<const MessageInvoice *>(content)->input_invoice);
return static_cast<const MessageInvoice *>(content)->input_invoice.get_thumbnail_file_id(td);
case MessageContentType::Photo:
return get_photo_thumbnail_file_id(static_cast<const MessagePhoto *>(content)->photo);
case MessageContentType::Sticker:
@ -5575,7 +5574,7 @@ vector<FileId> get_message_content_file_ids(const MessageContent *content, const
case MessageContentType::Game:
return static_cast<const MessageGame *>(content)->game.get_file_ids(td);
case MessageContentType::Invoice:
return get_input_invoice_file_ids(td, static_cast<const MessageInvoice *>(content)->input_invoice);
return static_cast<const MessageInvoice *>(content)->input_invoice.get_file_ids(td);
case MessageContentType::ChatChangePhoto:
return photo_get_file_ids(static_cast<const MessageChatChangePhoto *>(content)->photo);
case MessageContentType::PassportDataReceived: {
@ -5628,7 +5627,7 @@ string get_message_content_search_text(const Td *td, const MessageContent *conte
}
case MessageContentType::Invoice: {
const auto *invoice = static_cast<const MessageInvoice *>(content);
return get_input_invoice_caption(invoice->input_invoice)->text;
return invoice->input_invoice.get_caption()->text;
}
case MessageContentType::Photo: {
const auto *photo = static_cast<const MessagePhoto *>(content);
@ -5695,8 +5694,8 @@ bool update_message_content_extended_media(MessageContent *content,
DialogId owner_dialog_id, Td *td) {
CHECK(content != nullptr);
CHECK(content->get_type() == MessageContentType::Invoice);
return update_input_invoice_extended_media(static_cast<MessageInvoice *>(content)->input_invoice,
std::move(extended_media), owner_dialog_id, td);
return static_cast<MessageInvoice *>(content)->input_invoice.update_extended_media(std::move(extended_media),
owner_dialog_id, td);
}
void get_message_content_animated_emoji_click_sticker(const MessageContent *content, FullMessageId full_message_id,

View File

@ -876,8 +876,8 @@ void export_invoice(Td *td, td_api::object_ptr<td_api::InputMessageContent> &&in
if (invoice == nullptr) {
return promise.set_error(Status::Error(400, "Invoice must be non-empty"));
}
TRY_RESULT_PROMISE(promise, input_invoice, process_input_message_invoice(std::move(invoice), td));
td->create_handler<ExportInvoiceQuery>(std::move(promise))->send(get_input_media_invoice(input_invoice, td));
TRY_RESULT_PROMISE(promise, input_invoice, InputInvoice::process_input_message_invoice(std::move(invoice), td));
td->create_handler<ExportInvoiceQuery>(std::move(promise))->send(input_invoice.get_input_media_invoice(td));
}
void get_bank_card_info(Td *td, const string &bank_card_number,