From fb66c85567aefe1f6df2cce3ce2f94d162bef77a Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Fri, 9 Aug 2024 12:33:59 +0300 Subject: [PATCH] Added initial ability to request rate of credits from Credits component. --- .../SourceFiles/data/components/credits.cpp | 24 +++++++++++++++++++ .../SourceFiles/data/components/credits.h | 3 +++ 2 files changed, 27 insertions(+) diff --git a/Telegram/SourceFiles/data/components/credits.cpp b/Telegram/SourceFiles/data/components/credits.cpp index e62b56ca2..3ada4a1fb 100644 --- a/Telegram/SourceFiles/data/components/credits.cpp +++ b/Telegram/SourceFiles/data/components/credits.cpp @@ -29,6 +29,30 @@ void Credits::apply(const MTPDupdateStarsBalance &data) { apply(data.vbalance().v); } +rpl::producer Credits::rateValue( + not_null ownedBotOrChannel) { + // Should be replaced in the future. + if (_rate > 0) { + return rpl::single(_rate); + } + return [=](auto consumer) { + auto lifetime = rpl::lifetime(); + + const auto api = lifetime.make_state( + ownedBotOrChannel); + api->request( + ) | rpl::start_with_done([=] { + _rate = api->data().usdRate; + if (_rate > 0) { + consumer.put_next_copy(_rate); + consumer.put_done(); + } + }, lifetime); + + return lifetime; + }; +} + void Credits::load(bool force) { if (_loader || (!force diff --git a/Telegram/SourceFiles/data/components/credits.h b/Telegram/SourceFiles/data/components/credits.h index ff65f48f6..312d80ba5 100644 --- a/Telegram/SourceFiles/data/components/credits.h +++ b/Telegram/SourceFiles/data/components/credits.h @@ -30,6 +30,8 @@ public: [[nodiscard]] uint64 balance() const; [[nodiscard]] rpl::producer balanceValue() const; + [[nodiscard]] rpl::producer rateValue( + not_null ownedBotOrChannel); void lock(int count); void unlock(int count); @@ -47,6 +49,7 @@ private: rpl::variable _locked; rpl::event_stream<> _loadedChanges; crl::time _lastLoaded = 0; + float64 _rate = 0.; SingleQueuedInvokation _reload;