Remove payments proxy methods from MessagesManager.

This commit is contained in:
levlam 2021-03-31 04:15:02 +03:00
parent 3ac49bc8b1
commit 9700529085
5 changed files with 47 additions and 93 deletions

View File

@ -42,7 +42,6 @@
#include "td/telegram/NotificationManager.h"
#include "td/telegram/NotificationSettings.hpp"
#include "td/telegram/NotificationType.h"
#include "td/telegram/Payments.h"
#include "td/telegram/ReplyMarkup.h"
#include "td/telegram/ReplyMarkup.hpp"
#include "td/telegram/SecretChatActor.h"
@ -37359,59 +37358,22 @@ Result<ServerMessageId> MessagesManager::get_invoice_message_id(FullMessageId fu
return m->message_id.get_server_message_id();
}
void MessagesManager::get_payment_form(FullMessageId full_message_id,
Promise<tl_object_ptr<td_api::paymentForm>> &&promise) {
auto r_message_id = get_invoice_message_id(full_message_id);
if (r_message_id.is_error()) {
return promise.set_error(r_message_id.move_as_error());
}
::td::get_payment_form(td_, full_message_id.get_dialog_id(), r_message_id.ok(), std::move(promise));
}
void MessagesManager::validate_order_info(FullMessageId full_message_id, tl_object_ptr<td_api::orderInfo> order_info,
bool allow_save,
Promise<tl_object_ptr<td_api::validatedOrderInfo>> &&promise) {
auto r_message_id = get_invoice_message_id(full_message_id);
if (r_message_id.is_error()) {
return promise.set_error(r_message_id.move_as_error());
}
::td::validate_order_info(td_, full_message_id.get_dialog_id(), r_message_id.ok(), std::move(order_info), allow_save,
std::move(promise));
}
void MessagesManager::send_payment_form(FullMessageId full_message_id, int64 payment_form_id,
const string &order_info_id, const string &shipping_option_id,
const tl_object_ptr<td_api::InputCredentials> &credentials, int64 tip_amount,
Promise<tl_object_ptr<td_api::paymentResult>> &&promise) {
auto r_message_id = get_invoice_message_id(full_message_id);
if (r_message_id.is_error()) {
return promise.set_error(r_message_id.move_as_error());
}
::td::send_payment_form(td_, full_message_id.get_dialog_id(), r_message_id.ok(), payment_form_id, order_info_id,
shipping_option_id, credentials, tip_amount, std::move(promise));
}
void MessagesManager::get_payment_receipt(FullMessageId full_message_id,
Promise<tl_object_ptr<td_api::paymentReceipt>> &&promise) {
auto m = get_message_force(full_message_id, "get_payment_receipt");
Result<ServerMessageId> MessagesManager::get_payment_successful_message_id(FullMessageId full_message_id) {
auto m = get_message_force(full_message_id, "get_payment_successful_message_id");
if (m == nullptr) {
return promise.set_error(Status::Error(5, "Message not found"));
return Status::Error(5, "Message not found");
}
if (m->content->get_type() != MessageContentType::PaymentSuccessful) {
return promise.set_error(Status::Error(5, "Message has wrong type"));
return Status::Error(5, "Message has wrong type");
}
if (m->message_id.is_scheduled()) {
return promise.set_error(Status::Error(5, "Can't get payment receipt from scheduled messages"));
return Status::Error(5, "Wrong sheduled message identifier");
}
if (!m->message_id.is_server()) {
return promise.set_error(Status::Error(5, "Wrong message identifier"));
return Status::Error(5, "Wrong message identifier");
}
::td::get_payment_receipt(td_, full_message_id.get_dialog_id(), m->message_id.get_server_message_id(),
std::move(promise));
return m->message_id.get_server_message_id();
}
void MessagesManager::remove_sponsored_dialog() {

View File

@ -911,16 +911,9 @@ class MessagesManager : public Actor {
void stop_poll(FullMessageId full_message_id, td_api::object_ptr<td_api::ReplyMarkup> &&reply_markup,
Promise<Unit> &&promise);
void get_payment_form(FullMessageId full_message_id, Promise<tl_object_ptr<td_api::paymentForm>> &&promise);
Result<ServerMessageId> get_invoice_message_id(FullMessageId full_message_id);
void validate_order_info(FullMessageId full_message_id, tl_object_ptr<td_api::orderInfo> order_info, bool allow_save,
Promise<tl_object_ptr<td_api::validatedOrderInfo>> &&promise);
void send_payment_form(FullMessageId full_message_id, int64 payment_form_id, const string &order_info_id,
const string &shipping_option_id, const tl_object_ptr<td_api::InputCredentials> &credentials,
int64 tip_amount, Promise<tl_object_ptr<td_api::paymentResult>> &&promise);
void get_payment_receipt(FullMessageId full_message_id, Promise<tl_object_ptr<td_api::paymentReceipt>> &&promise);
Result<ServerMessageId> get_payment_successful_message_id(FullMessageId full_message_id);
void get_current_state(vector<td_api::object_ptr<td_api::Update>> &updates) const;
@ -2970,8 +2963,6 @@ class MessagesManager : public Actor {
Result<string> get_login_button_url(DialogId dialog_id, MessageId message_id, int32 button_id);
Result<ServerMessageId> get_invoice_message_id(FullMessageId full_message_id);
bool is_broadcast_channel(DialogId dialog_id) const;
bool is_deleted_secret_chat(const Dialog *d) const;

View File

@ -13,6 +13,7 @@
#include "td/telegram/MessagesManager.h"
#include "td/telegram/misc.h"
#include "td/telegram/PasswordManager.h"
#include "td/telegram/ServerMessageId.h"
#include "td/telegram/Td.h"
#include "td/telegram/UpdatesManager.h"
@ -1110,14 +1111,15 @@ void answer_pre_checkout_query(Td *td, int64 pre_checkout_query_id, const string
td->create_handler<SetBotPreCheckoutAnswerQuery>(std::move(promise))->send(pre_checkout_query_id, error_message);
}
void get_payment_form(Td *td, DialogId dialog_id, ServerMessageId server_message_id,
Promise<tl_object_ptr<td_api::paymentForm>> &&promise) {
td->create_handler<GetPaymentFormQuery>(std::move(promise))->send(dialog_id, server_message_id);
void get_payment_form(Td *td, FullMessageId full_message_id, Promise<tl_object_ptr<td_api::paymentForm>> &&promise) {
TRY_RESULT_PROMISE(promise, server_message_id, td->messages_manager_->get_invoice_message_id(full_message_id));
td->create_handler<GetPaymentFormQuery>(std::move(promise))->send(full_message_id.get_dialog_id(), server_message_id);
}
void validate_order_info(Td *td, DialogId dialog_id, ServerMessageId server_message_id,
tl_object_ptr<td_api::orderInfo> order_info, bool allow_save,
Promise<tl_object_ptr<td_api::validatedOrderInfo>> &&promise) {
void validate_order_info(Td *td, FullMessageId full_message_id, tl_object_ptr<td_api::orderInfo> order_info,
bool allow_save, Promise<tl_object_ptr<td_api::validatedOrderInfo>> &&promise) {
TRY_RESULT_PROMISE(promise, server_message_id, td->messages_manager_->get_invoice_message_id(full_message_id));
if (order_info != nullptr) {
if (!clean_input_string(order_info->name_)) {
return promise.set_error(Status::Error(400, "Name must be encoded in UTF-8"));
@ -1151,14 +1153,17 @@ void validate_order_info(Td *td, DialogId dialog_id, ServerMessageId server_mess
}
td->create_handler<ValidateRequestedInfoQuery>(std::move(promise))
->send(dialog_id, server_message_id, convert_order_info(std::move(order_info)), allow_save);
->send(full_message_id.get_dialog_id(), server_message_id, convert_order_info(std::move(order_info)), allow_save);
}
void send_payment_form(Td *td, DialogId dialog_id, ServerMessageId server_message_id, int64 payment_form_id,
const string &order_info_id, const string &shipping_option_id,
const tl_object_ptr<td_api::InputCredentials> &credentials, int64 tip_amount,
Promise<tl_object_ptr<td_api::paymentResult>> &&promise) {
CHECK(credentials != nullptr);
void send_payment_form(Td *td, FullMessageId full_message_id, int64 payment_form_id, const string &order_info_id,
const string &shipping_option_id, const tl_object_ptr<td_api::InputCredentials> &credentials,
int64 tip_amount, Promise<tl_object_ptr<td_api::paymentResult>> &&promise) {
TRY_RESULT_PROMISE(promise, server_message_id, td->messages_manager_->get_invoice_message_id(full_message_id));
if (credentials == nullptr) {
return promise.set_error(Status::Error(400, "Input payment credentials must be non-empty"));
}
tl_object_ptr<telegram_api::InputPaymentCredentials> input_credentials;
switch (credentials->get_id()) {
@ -1205,13 +1210,16 @@ void send_payment_form(Td *td, DialogId dialog_id, ServerMessageId server_messag
}
td->create_handler<SendPaymentFormQuery>(std::move(promise))
->send(dialog_id, server_message_id, payment_form_id, order_info_id, shipping_option_id,
->send(full_message_id.get_dialog_id(), server_message_id, payment_form_id, order_info_id, shipping_option_id,
std::move(input_credentials), tip_amount);
}
void get_payment_receipt(Td *td, DialogId dialog_id, ServerMessageId server_message_id,
void get_payment_receipt(Td *td, FullMessageId full_message_id,
Promise<tl_object_ptr<td_api::paymentReceipt>> &&promise) {
td->create_handler<GetPaymentReceiptQuery>(std::move(promise))->send(dialog_id, server_message_id);
TRY_RESULT_PROMISE(promise, server_message_id,
td->messages_manager_->get_payment_successful_message_id(full_message_id));
td->create_handler<GetPaymentReceiptQuery>(std::move(promise))
->send(full_message_id.get_dialog_id(), server_message_id);
}
void get_saved_order_info(Td *td, Promise<tl_object_ptr<td_api::orderInfo>> &&promise) {

View File

@ -9,9 +9,9 @@
#include "td/actor/PromiseFuture.h"
#include "td/telegram/DialogId.h"
#include "td/telegram/FullMessageId.h"
#include "td/telegram/MessageId.h"
#include "td/telegram/Photo.h"
#include "td/telegram/ServerMessageId.h"
#include "td/telegram/td_api.h"
#include "td/telegram/telegram_api.h"
@ -179,19 +179,16 @@ void answer_shipping_query(Td *td, int64 shipping_query_id,
void answer_pre_checkout_query(Td *td, int64 pre_checkout_query_id, const string &error_message,
Promise<Unit> &&promise);
void get_payment_form(Td *td, DialogId dialog_id, ServerMessageId server_message_id,
Promise<tl_object_ptr<td_api::paymentForm>> &&promise);
void get_payment_form(Td *td, FullMessageId full_message_id, Promise<tl_object_ptr<td_api::paymentForm>> &&promise);
void validate_order_info(Td *td, DialogId dialog_id, ServerMessageId server_message_id,
tl_object_ptr<td_api::orderInfo> order_info, bool allow_save,
Promise<tl_object_ptr<td_api::validatedOrderInfo>> &&promise);
void validate_order_info(Td *td, FullMessageId full_message_id, tl_object_ptr<td_api::orderInfo> order_info,
bool allow_save, Promise<tl_object_ptr<td_api::validatedOrderInfo>> &&promise);
void send_payment_form(Td *td, DialogId dialog_id, ServerMessageId server_message_id, int64 payment_form_id,
const string &order_info_id, const string &shipping_option_id,
const tl_object_ptr<td_api::InputCredentials> &credentials, int64 tip_amount,
Promise<tl_object_ptr<td_api::paymentResult>> &&promise);
void send_payment_form(Td *td, FullMessageId full_message_id, int64 payment_form_id, const string &order_info_id,
const string &shipping_option_id, const tl_object_ptr<td_api::InputCredentials> &credentials,
int64 tip_amount, Promise<tl_object_ptr<td_api::paymentResult>> &&promise);
void get_payment_receipt(Td *td, DialogId dialog_id, ServerMessageId server_message_id,
void get_payment_receipt(Td *td, FullMessageId full_message_id,
Promise<tl_object_ptr<td_api::paymentReceipt>> &&promise);
void get_saved_order_info(Td *td, Promise<tl_object_ptr<td_api::orderInfo>> &&promise);

View File

@ -7714,34 +7714,30 @@ void Td::on_request(uint64 id, td_api::getBankCardInfo &request) {
void Td::on_request(uint64 id, const td_api::getPaymentForm &request) {
CHECK_IS_USER();
CREATE_REQUEST_PROMISE();
messages_manager_->get_payment_form({DialogId(request.chat_id_), MessageId(request.message_id_)}, std::move(promise));
get_payment_form(this, {DialogId(request.chat_id_), MessageId(request.message_id_)}, std::move(promise));
}
void Td::on_request(uint64 id, td_api::validateOrderInfo &request) {
CHECK_IS_USER();
CREATE_REQUEST_PROMISE();
messages_manager_->validate_order_info({DialogId(request.chat_id_), MessageId(request.message_id_)},
std::move(request.order_info_), request.allow_save_, std::move(promise));
validate_order_info(this, {DialogId(request.chat_id_), MessageId(request.message_id_)},
std::move(request.order_info_), request.allow_save_, std::move(promise));
}
void Td::on_request(uint64 id, td_api::sendPaymentForm &request) {
CHECK_IS_USER();
CLEAN_INPUT_STRING(request.order_info_id_);
CLEAN_INPUT_STRING(request.shipping_option_id_);
if (request.credentials_ == nullptr) {
return send_error_raw(id, 400, "Input payments credentials must be non-empty");
}
CREATE_REQUEST_PROMISE();
messages_manager_->send_payment_form({DialogId(request.chat_id_), MessageId(request.message_id_)},
request.payment_form_id_, request.order_info_id_, request.shipping_option_id_,
request.credentials_, request.tip_amount_, std::move(promise));
send_payment_form(this, {DialogId(request.chat_id_), MessageId(request.message_id_)}, request.payment_form_id_,
request.order_info_id_, request.shipping_option_id_, request.credentials_, request.tip_amount_,
std::move(promise));
}
void Td::on_request(uint64 id, const td_api::getPaymentReceipt &request) {
CHECK_IS_USER();
CREATE_REQUEST_PROMISE();
messages_manager_->get_payment_receipt({DialogId(request.chat_id_), MessageId(request.message_id_)},
std::move(promise));
get_payment_receipt(this, {DialogId(request.chat_id_), MessageId(request.message_id_)}, std::move(promise));
}
void Td::on_request(uint64 id, const td_api::getSavedOrderInfo &request) {