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

View File

@ -1637,8 +1637,7 @@ InlineMessageContent create_inline_message_content(Td *td, FileId file_id,
case telegram_api::botInlineMessageMediaInvoice::ID: { case telegram_api::botInlineMessageMediaInvoice::ID: {
auto inline_message = move_tl_object_as<telegram_api::botInlineMessageMediaInvoice>(bot_inline_message); auto inline_message = move_tl_object_as<telegram_api::botInlineMessageMediaInvoice>(bot_inline_message);
reply_markup = std::move(inline_message->reply_markup_); reply_markup = std::move(inline_message->reply_markup_);
result.message_content = result.message_content = make_unique<MessageInvoice>(InputInvoice(std::move(inline_message), td, DialogId()));
make_unique<MessageInvoice>(get_input_invoice(std::move(inline_message), td, DialogId()));
break; break;
} }
case telegram_api::botInlineMessageMediaGeo::ID: { 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"); 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)); content = make_unique<MessageInvoice>(std::move(input_invoice));
break; break;
} }
@ -2358,7 +2357,7 @@ static tl_object_ptr<telegram_api::InputMedia> get_input_media_impl(
} }
case MessageContentType::Invoice: { case MessageContentType::Invoice: {
const auto *m = static_cast<const MessageInvoice *>(content); 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: { case MessageContentType::LiveLocation: {
const auto *m = static_cast<const MessageLiveLocation *>(content); const auto *m = static_cast<const MessageLiveLocation *>(content);
@ -2542,7 +2541,7 @@ void delete_message_content_thumbnail(MessageContent *content, Td *td) {
} }
case MessageContentType::Invoice: { case MessageContentType::Invoice: {
auto *m = static_cast<MessageInvoice *>(content); 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: { case MessageContentType::Photo: {
auto *m = static_cast<MessagePhoto *>(content); auto *m = static_cast<MessagePhoto *>(content);
@ -3036,7 +3035,7 @@ bool can_message_content_have_media_timestamp(const MessageContent *content) {
return true; return true;
case MessageContentType::Invoice: { case MessageContentType::Invoice: {
const auto *m = static_cast<const MessageInvoice *>(content); 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: default:
return has_message_content_web_page(content); 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); return std::move(m);
} }
case telegram_api::messageMediaInvoice::ID: 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))); move_tl_object_as<telegram_api::messageMediaInvoice>(media_ptr), td, owner_dialog_id, std::move(message)));
case telegram_api::messageMediaWebPage::ID: { case telegram_api::messageMediaWebPage::ID: {
auto media = move_tl_object_as<telegram_api::messageMediaWebPage>(media_ptr); 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: { case MessageContentType::Invoice: {
const auto *m = static_cast<const MessageInvoice *>(content); 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: { case MessageContentType::LiveLocation: {
const auto *m = static_cast<const MessageLiveLocation *>(content); const auto *m = static_cast<const MessageLiveLocation *>(content);
@ -5369,7 +5368,7 @@ const FormattedText *get_message_content_caption(const MessageContent *content)
case MessageContentType::Document: case MessageContentType::Document:
return &static_cast<const MessageDocument *>(content)->caption; return &static_cast<const MessageDocument *>(content)->caption;
case MessageContentType::Invoice: 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: case MessageContentType::Photo:
return &static_cast<const MessagePhoto *>(content)->caption; return &static_cast<const MessagePhoto *>(content)->caption;
case MessageContentType::Video: 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); return td->audios_manager_->get_audio_duration(audio_file_id);
} }
case MessageContentType::Invoice: 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: { case MessageContentType::Video: {
auto video_file_id = static_cast<const MessageVideo *>(content)->file_id; auto video_file_id = static_cast<const MessageVideo *>(content)->file_id;
return td->videos_manager_->get_video_duration(video_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); return td->audios_manager_->get_audio_duration(audio_file_id);
} }
case MessageContentType::Invoice: 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: { case MessageContentType::Text: {
auto web_page_id = static_cast<const MessageText *>(content)->web_page_id; 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); 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: case MessageContentType::Document:
return static_cast<const MessageDocument *>(content)->file_id; return static_cast<const MessageDocument *>(content)->file_id;
case MessageContentType::Invoice: 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: case MessageContentType::Photo:
return get_photo_upload_file_id(static_cast<const MessagePhoto *>(content)->photo); return get_photo_upload_file_id(static_cast<const MessagePhoto *>(content)->photo);
case MessageContentType::Sticker: case MessageContentType::Sticker:
@ -5473,7 +5472,7 @@ FileId get_message_content_any_file_id(const MessageContent *content) {
if (content->get_type() == MessageContentType::Photo) { if (content->get_type() == MessageContentType::Photo) {
result = get_photo_any_file_id(static_cast<const MessagePhoto *>(content)->photo); result = get_photo_any_file_id(static_cast<const MessagePhoto *>(content)->photo);
} else if (content->get_type() == MessageContentType::Invoice) { } 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; 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( return td->documents_manager_->get_document_thumbnail_file_id(
static_cast<const MessageDocument *>(content)->file_id); static_cast<const MessageDocument *>(content)->file_id);
case MessageContentType::Invoice: 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: case MessageContentType::Photo:
return get_photo_thumbnail_file_id(static_cast<const MessagePhoto *>(content)->photo); return get_photo_thumbnail_file_id(static_cast<const MessagePhoto *>(content)->photo);
case MessageContentType::Sticker: case MessageContentType::Sticker:
@ -5575,7 +5574,7 @@ vector<FileId> get_message_content_file_ids(const MessageContent *content, const
case MessageContentType::Game: case MessageContentType::Game:
return static_cast<const MessageGame *>(content)->game.get_file_ids(td); return static_cast<const MessageGame *>(content)->game.get_file_ids(td);
case MessageContentType::Invoice: 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: case MessageContentType::ChatChangePhoto:
return photo_get_file_ids(static_cast<const MessageChatChangePhoto *>(content)->photo); return photo_get_file_ids(static_cast<const MessageChatChangePhoto *>(content)->photo);
case MessageContentType::PassportDataReceived: { case MessageContentType::PassportDataReceived: {
@ -5628,7 +5627,7 @@ string get_message_content_search_text(const Td *td, const MessageContent *conte
} }
case MessageContentType::Invoice: { case MessageContentType::Invoice: {
const auto *invoice = static_cast<const MessageInvoice *>(content); 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: { case MessageContentType::Photo: {
const auto *photo = static_cast<const MessagePhoto *>(content); 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) { DialogId owner_dialog_id, Td *td) {
CHECK(content != nullptr); CHECK(content != nullptr);
CHECK(content->get_type() == MessageContentType::Invoice); CHECK(content->get_type() == MessageContentType::Invoice);
return update_input_invoice_extended_media(static_cast<MessageInvoice *>(content)->input_invoice, return static_cast<MessageInvoice *>(content)->input_invoice.update_extended_media(std::move(extended_media),
std::move(extended_media), owner_dialog_id, td); owner_dialog_id, td);
} }
void get_message_content_animated_emoji_click_sticker(const MessageContent *content, FullMessageId full_message_id, 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) { if (invoice == nullptr) {
return promise.set_error(Status::Error(400, "Invoice must be non-empty")); 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)); TRY_RESULT_PROMISE(promise, input_invoice, InputInvoice::process_input_message_invoice(std::move(invoice), td));
td->create_handler<ExportInvoiceQuery>(std::move(promise))->send(get_input_media_invoice(input_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, void get_bank_card_info(Td *td, const string &bank_card_number,