diff --git a/Telegram/SourceFiles/info/channel_statistics/earn/info_earn_inner_widget.cpp b/Telegram/SourceFiles/info/channel_statistics/earn/info_earn_inner_widget.cpp index 4516135ae..ffa2c403d 100644 --- a/Telegram/SourceFiles/info/channel_statistics/earn/info_earn_inner_widget.cpp +++ b/Telegram/SourceFiles/info/channel_statistics/earn/info_earn_inner_widget.cpp @@ -7,6 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #include "info/channel_statistics/earn/info_earn_inner_widget.h" +#include "api/api_credits.h" #include "api/api_earn.h" #include "api/api_statistics.h" #include "base/unixtime.h" @@ -258,27 +259,37 @@ InnerWidget::InnerWidget( void InnerWidget::load() { const auto api = lifetime().make_state( _peer->asChannel()); + const auto apiCredits = lifetime().make_state( + _peer); Info::Statistics::FillLoading( this, _loaded.events_starting_with(false) | rpl::map(!rpl::mappers::_1), _showFinished.events()); + const auto fail = [show = _controller->uiShow()](const QString &error) { + show->showToast(error); + }; + _showFinished.events( ) | rpl::take(1) | rpl::start_with_next([=] { api->request( - ) | rpl::start_with_error_done([](const QString &error) { - }, [=] { - _state = api->data(); - _loaded.fire(true); - fill(); + ) | rpl::start_with_error_done(fail, [=] { + _state.currencyEarn = api->data(); + apiCredits->request( + ) | rpl::start_with_error_done(fail, [=] { + _state.creditsEarn = apiCredits->data(); + _loaded.fire(true); + fill(); + }, lifetime()); }, lifetime()); }, lifetime()); } void InnerWidget::fill() { const auto container = this; - const auto &data = _state; + const auto &data = _state.currencyEarn; + const auto &creditsData = _state.creditsEarn; constexpr auto kMinus = QChar(0x2212); //constexpr auto kApproximately = QChar(0x2248); @@ -1106,7 +1117,7 @@ void InnerWidget::saveState(not_null memento) { void InnerWidget::restoreState(not_null memento) { _state = memento->state(); - if (_state) { + if (_state.currencyEarn || _state.creditsEarn) { fill(); } else { load(); diff --git a/Telegram/SourceFiles/info/channel_statistics/earn/info_earn_inner_widget.h b/Telegram/SourceFiles/info/channel_statistics/earn/info_earn_inner_widget.h index 99e9511be..6034a231a 100644 --- a/Telegram/SourceFiles/info/channel_statistics/earn/info_earn_inner_widget.h +++ b/Telegram/SourceFiles/info/channel_statistics/earn/info_earn_inner_widget.h @@ -7,7 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #pragma once -#include "data/data_channel_earn.h" +#include "info/channel_statistics/earn/info_earn_widget.h" #include "ui/widgets/scroll_area.h" #include "ui/wrap/vertical_layout.h" @@ -56,7 +56,7 @@ private: not_null _peer; std::shared_ptr _show; - Data::EarnStatistics _state; + Memento::SavedState _state; rpl::event_stream _scrollToRequests; rpl::event_stream _showRequests; diff --git a/Telegram/SourceFiles/info/channel_statistics/earn/info_earn_widget.h b/Telegram/SourceFiles/info/channel_statistics/earn/info_earn_widget.h index 73b373769..40e0f3f2c 100644 --- a/Telegram/SourceFiles/info/channel_statistics/earn/info_earn_widget.h +++ b/Telegram/SourceFiles/info/channel_statistics/earn/info_earn_widget.h @@ -8,6 +8,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #pragma once #include "data/data_channel_earn.h" +#include "data/data_bot_earn.h" #include "info/info_content_widget.h" namespace Info::ChannelEarn { @@ -27,7 +28,10 @@ public: Section section() const override; - using SavedState = Data::EarnStatistics; + struct SavedState final { + Data::EarnStatistics currencyEarn; + Data::CreditsEarnStatistics creditsEarn; + }; void setState(SavedState states); [[nodiscard]] SavedState state();