From b0bfe55580cef363e1dab1fa9c14b8014851b3ca Mon Sep 17 00:00:00 2001 From: levlam Date: Fri, 14 Jun 2024 13:42:18 +0300 Subject: [PATCH] Add getStarTransactions.limit. --- td/generate/scheme/td_api.tl | 5 +++-- td/telegram/StarManager.cpp | 11 +++++++---- td/telegram/StarManager.h | 3 ++- td/telegram/Td.cpp | 3 ++- td/telegram/cli.cpp | 5 ++++- 5 files changed, 18 insertions(+), 9 deletions(-) diff --git a/td/generate/scheme/td_api.tl b/td/generate/scheme/td_api.tl index c986b9ca4..fdfbbeb41 100644 --- a/td/generate/scheme/td_api.tl +++ b/td/generate/scheme/td_api.tl @@ -10979,9 +10979,10 @@ getPremiumGiveawayInfo chat_id:int53 message_id:int53 = PremiumGiveawayInfo; getStarPaymentOptions = StarPaymentOptions; //@description Returns the list of Telegram star transactions for the current user -//@offset Offset of the first transaction to return as received from the previous request; use empty string to get the first chunk of results //@direction Direction of the transactions to receive; pass null to get all transactions -getStarTransactions offset:string direction:StarTransactionDirection = StarTransactions; +//@offset Offset of the first transaction to return as received from the previous request; use empty string to get the first chunk of results +//@limit The maximum number of transactions to return +getStarTransactions direction:StarTransactionDirection offset:string limit:int32 = StarTransactions; //@description Checks whether an in-store purchase is possible. Must be called before any in-store purchase @purpose Transaction purpose canPurchaseFromStore purpose:StorePaymentPurpose = Ok; diff --git a/td/telegram/StarManager.cpp b/td/telegram/StarManager.cpp index a08c745fb..31aab663e 100644 --- a/td/telegram/StarManager.cpp +++ b/td/telegram/StarManager.cpp @@ -64,7 +64,7 @@ class GetStarsTransactionsQuery final : public Td::ResultHandler { : promise_(std::move(promise)) { } - void send(const string &offset, td_api::object_ptr &&direction) { + void send(const string &offset, int32 limit, td_api::object_ptr &&direction) { int32 flags = 0; if (direction != nullptr) { switch (direction->get_id()) { @@ -80,7 +80,7 @@ class GetStarsTransactionsQuery final : public Td::ResultHandler { } send_query(G()->net_query_creator().create(telegram_api::payments_getStarsTransactions( flags, false /*ignored*/, false /*ignored*/, false /*ignored*/, - telegram_api::make_object(), offset, 100))); + telegram_api::make_object(), offset, limit))); } void on_result(BufferSlice packet) final { @@ -231,10 +231,13 @@ void StarManager::get_star_payment_options(Promisecreate_handler(std::move(promise))->send(); } -void StarManager::get_star_transactions(const string &offset, +void StarManager::get_star_transactions(const string &offset, int32 limit, td_api::object_ptr &&direction, Promise> &&promise) { - td_->create_handler(std::move(promise))->send(offset, std::move(direction)); + if (limit < 0) { + return promise.set_error(Status::Error(400, "Limit must be non-negative")); + } + td_->create_handler(std::move(promise))->send(offset, limit, std::move(direction)); } void StarManager::refund_star_payment(UserId user_id, const string &telegram_payment_charge_id, diff --git a/td/telegram/StarManager.h b/td/telegram/StarManager.h index 68b192f5a..d6568d274 100644 --- a/td/telegram/StarManager.h +++ b/td/telegram/StarManager.h @@ -26,7 +26,8 @@ class StarManager final : public Actor { void get_star_payment_options(Promise> &&promise); - void get_star_transactions(const string &offset, td_api::object_ptr &&direction, + void get_star_transactions(const string &offset, int32 limit, + td_api::object_ptr &&direction, Promise> &&promise); void refund_star_payment(UserId user_id, const string &telegram_payment_charge_id, Promise &&promise); diff --git a/td/telegram/Td.cpp b/td/telegram/Td.cpp index d63c366e6..4bd038a1a 100644 --- a/td/telegram/Td.cpp +++ b/td/telegram/Td.cpp @@ -9501,7 +9501,8 @@ void Td::on_request(uint64 id, td_api::getStarTransactions &request) { CHECK_IS_USER(); CLEAN_INPUT_STRING(request.offset_); CREATE_REQUEST_PROMISE(); - star_manager_->get_star_transactions(request.offset_, std::move(request.direction_), std::move(promise)); + star_manager_->get_star_transactions(request.offset_, request.limit_, std::move(request.direction_), + std::move(promise)); } void Td::on_request(uint64 id, td_api::canPurchaseFromStore &request) { diff --git a/td/telegram/cli.cpp b/td/telegram/cli.cpp index 246362f74..072556beb 100644 --- a/td/telegram/cli.cpp +++ b/td/telegram/cli.cpp @@ -3436,13 +3436,16 @@ class CliClient final : public Actor { } else if (op == "gspo") { send_request(td_api::make_object()); } else if (op == "gsta" || op == "gsti" || op == "gsto") { + string offset; + string limit; + get_args(args, offset, limit); td_api::object_ptr direction; if (op == "gsti") { direction = td_api::make_object(); } else if (op == "gsto") { direction = td_api::make_object(); } - send_request(td_api::make_object(args, std::move(direction))); + send_request(td_api::make_object(std::move(direction), offset, as_limit(limit))); } else if (op == "cpfs" || op == "cpfsb") { UserId user_id; string currency;