Added initial api support of bot earn statistics.
This commit is contained in:
parent
cb65c50c19
commit
049cde48ee
2 changed files with 59 additions and 1 deletions
|
@ -7,8 +7,9 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
*/
|
*/
|
||||||
#include "api/api_credits.h"
|
#include "api/api_credits.h"
|
||||||
|
|
||||||
#include "apiwrap.h"
|
#include "api/api_statistics_data_deserialize.h"
|
||||||
#include "api/api_updates.h"
|
#include "api/api_updates.h"
|
||||||
|
#include "apiwrap.h"
|
||||||
#include "base/unixtime.h"
|
#include "base/unixtime.h"
|
||||||
#include "data/data_peer.h"
|
#include "data/data_peer.h"
|
||||||
#include "data/data_photo.h"
|
#include "data/data_photo.h"
|
||||||
|
@ -202,4 +203,43 @@ rpl::producer<not_null<PeerData*>> PremiumPeerBot(
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BotEarnStatistics::BotEarnStatistics(not_null<UserData*> user)
|
||||||
|
: StatisticsRequestSender(user) {
|
||||||
|
}
|
||||||
|
|
||||||
|
rpl::producer<rpl::no_value, QString> BotEarnStatistics::request() {
|
||||||
|
return [=](auto consumer) {
|
||||||
|
auto lifetime = rpl::lifetime();
|
||||||
|
|
||||||
|
makeRequest(MTPpayments_GetStarsRevenueStats(
|
||||||
|
MTP_flags(0),
|
||||||
|
user()->input
|
||||||
|
)).done([=](const MTPpayments_StarsRevenueStats &result) {
|
||||||
|
const auto &data = result.data();
|
||||||
|
const auto &status = data.vstatus().data();
|
||||||
|
_data = Data::BotEarnStatistics{
|
||||||
|
.revenueGraph = StatisticalGraphFromTL(data.vrevenue_graph()),
|
||||||
|
.currentBalance = status.vcurrent_balance().v,
|
||||||
|
.availableBalance = status.vavailable_balance().v,
|
||||||
|
.overallRevenue = status.voverall_revenue().v,
|
||||||
|
.usdRate = data.vusd_rate().v,
|
||||||
|
.isWithdrawalEnabled = status.is_withdrawal_enabled(),
|
||||||
|
.nextWithdrawalAt = status.vnext_withdrawal_at()
|
||||||
|
? base::unixtime::parse(status.vnext_withdrawal_at()->v)
|
||||||
|
: QDateTime(),
|
||||||
|
};
|
||||||
|
|
||||||
|
consumer.put_done();
|
||||||
|
}).fail([=](const MTP::Error &error) {
|
||||||
|
consumer.put_error_copy(error.type());
|
||||||
|
}).send();
|
||||||
|
|
||||||
|
return lifetime;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
Data::BotEarnStatistics BotEarnStatistics::data() const {
|
||||||
|
return _data;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace Api
|
} // namespace Api
|
||||||
|
|
|
@ -7,6 +7,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
*/
|
*/
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include "api/api_statistics_sender.h"
|
||||||
|
#include "data/data_bot_earn.h"
|
||||||
#include "data/data_credits.h"
|
#include "data/data_credits.h"
|
||||||
#include "mtproto/sender.h"
|
#include "mtproto/sender.h"
|
||||||
|
|
||||||
|
@ -14,6 +16,8 @@ namespace Main {
|
||||||
class Session;
|
class Session;
|
||||||
} // namespace Main
|
} // namespace Main
|
||||||
|
|
||||||
|
class UserData;
|
||||||
|
|
||||||
namespace Api {
|
namespace Api {
|
||||||
|
|
||||||
class CreditsTopupOptions final {
|
class CreditsTopupOptions final {
|
||||||
|
@ -68,6 +72,20 @@ private:
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class BotEarnStatistics final : public StatisticsRequestSender {
|
||||||
|
public:
|
||||||
|
explicit BotEarnStatistics(not_null<UserData*>);
|
||||||
|
|
||||||
|
[[nodiscard]] rpl::producer<rpl::no_value, QString> request();
|
||||||
|
[[nodiscard]] Data::BotEarnStatistics data() const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
Data::BotEarnStatistics _data;
|
||||||
|
|
||||||
|
mtpRequestId _requestId = 0;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
[[nodiscard]] rpl::producer<not_null<PeerData*>> PremiumPeerBot(
|
[[nodiscard]] rpl::producer<not_null<PeerData*>> PremiumPeerBot(
|
||||||
not_null<Main::Session*> session);
|
not_null<Main::Session*> session);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue