diff --git a/Telegram/SourceFiles/info/boosts/info_boosts_inner_widget.cpp b/Telegram/SourceFiles/info/boosts/info_boosts_inner_widget.cpp index 05b57cdf82..36c90fef0c 100644 --- a/Telegram/SourceFiles/info/boosts/info_boosts_inner_widget.cpp +++ b/Telegram/SourceFiles/info/boosts/info_boosts_inner_widget.cpp @@ -18,6 +18,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "info/boosts/info_boosts_widget.h" #include "info/info_controller.h" #include "info/profile/info_profile_icon.h" +#include "info/statistics/info_statistics_inner_widget.h" // FillLoading. #include "info/statistics/info_statistics_list_controllers.h" #include "lang/lang_keys.h" #include "settings/settings_common.h" @@ -229,12 +230,18 @@ InnerWidget::InnerWidget( void InnerWidget::load() { const auto api = lifetime().make_state(_peer); + Info::Statistics::FillLoading( + this, + _loaded.events_starting_with(false) | rpl::map(!rpl::mappers::_1), + _showFinished.events()); + _showFinished.events( ) | rpl::take(1) | rpl::start_with_next([=] { api->request( ) | rpl::start_with_error_done([](const QString &error) { }, [=] { _state = api->boostStatus(); + _loaded.fire(true); fill(); }, lifetime()); }, lifetime()); diff --git a/Telegram/SourceFiles/info/statistics/info_statistics_inner_widget.cpp b/Telegram/SourceFiles/info/statistics/info_statistics_inner_widget.cpp index baa569ab35..b5b2ae8b09 100644 --- a/Telegram/SourceFiles/info/statistics/info_statistics_inner_widget.cpp +++ b/Telegram/SourceFiles/info/statistics/info_statistics_inner_widget.cpp @@ -247,50 +247,6 @@ void FillStatistic( } } -void FillLoading( - not_null container, - rpl::producer toggleOn, - rpl::producer<> showFinished) { - const auto emptyWrap = container->add( - object_ptr>( - container, - object_ptr(container))); - emptyWrap->toggleOn(std::move(toggleOn), anim::type::instant); - - const auto content = emptyWrap->entity(); - auto icon = ::Settings::CreateLottieIcon( - content, - { .name = u"stats"_q, .sizeOverride = Size(st::changePhoneIconSize) }, - st::settingsBlockedListIconPadding); - - ( - std::move(showFinished) | rpl::take(1) - ) | rpl::start_with_next([animate = std::move(icon.animate)] { - animate(anim::repeat::loop); - }, icon.widget->lifetime()); - content->add(std::move(icon.widget)); - - content->add( - object_ptr>( - content, - object_ptr( - content, - tr::lng_stats_loading(), - st::changePhoneTitle)), - st::changePhoneTitlePadding + st::boxRowPadding); - - content->add( - object_ptr>( - content, - object_ptr( - content, - tr::lng_stats_loading_subtext(), - st::statisticsLoadingSubtext)), - st::changePhoneDescriptionPadding + st::boxRowPadding); - - ::Settings::AddSkip(content, st::settingsBlockedListIconPadding.top()); -} - void AddHeader( not_null content, tr::phrase<> text, @@ -507,6 +463,50 @@ void FillOverview( } // namespace +void FillLoading( + not_null container, + rpl::producer toggleOn, + rpl::producer<> showFinished) { + const auto emptyWrap = container->add( + object_ptr>( + container, + object_ptr(container))); + emptyWrap->toggleOn(std::move(toggleOn), anim::type::instant); + + const auto content = emptyWrap->entity(); + auto icon = ::Settings::CreateLottieIcon( + content, + { .name = u"stats"_q, .sizeOverride = Size(st::changePhoneIconSize) }, + st::settingsBlockedListIconPadding); + + ( + std::move(showFinished) | rpl::take(1) + ) | rpl::start_with_next([animate = std::move(icon.animate)] { + animate(anim::repeat::loop); + }, icon.widget->lifetime()); + content->add(std::move(icon.widget)); + + content->add( + object_ptr>( + content, + object_ptr( + content, + tr::lng_stats_loading(), + st::changePhoneTitle)), + st::changePhoneTitlePadding + st::boxRowPadding); + + content->add( + object_ptr>( + content, + object_ptr( + content, + tr::lng_stats_loading_subtext(), + st::statisticsLoadingSubtext)), + st::changePhoneDescriptionPadding + st::boxRowPadding); + + ::Settings::AddSkip(content, st::settingsBlockedListIconPadding.top()); +} + InnerWidget::InnerWidget( QWidget *parent, not_null controller, diff --git a/Telegram/SourceFiles/info/statistics/info_statistics_inner_widget.h b/Telegram/SourceFiles/info/statistics/info_statistics_inner_widget.h index cd3aa93480..f2e21a6c1e 100644 --- a/Telegram/SourceFiles/info/statistics/info_statistics_inner_widget.h +++ b/Telegram/SourceFiles/info/statistics/info_statistics_inner_widget.h @@ -21,6 +21,11 @@ namespace Info::Statistics { class Memento; class MessagePreview; +void FillLoading( + not_null container, + rpl::producer toggleOn, + rpl::producer<> showFinished); + class InnerWidget final : public Ui::VerticalLayout { public: struct ShowRequest final {