diff --git a/Telegram/SourceFiles/boxes/premium_limits_box.cpp b/Telegram/SourceFiles/boxes/premium_limits_box.cpp index 60eb5ecde..ad8d313df 100644 --- a/Telegram/SourceFiles/boxes/premium_limits_box.cpp +++ b/Telegram/SourceFiles/boxes/premium_limits_box.cpp @@ -68,6 +68,8 @@ public: void prepare() override; void rowClicked(not_null row) override; + [[nodiscard]] rpl::producer countValue() const; + private: void appendRow(not_null peer, TimeId date); [[nodiscard]] std::unique_ptr createRow( @@ -75,6 +77,7 @@ private: TimeId date) const; const not_null _session; + rpl::variable _count; mtpRequestId _requestId = 0; }; @@ -91,12 +94,15 @@ public: void rowClicked(not_null row) override; void rowRightActionClicked(not_null row) override; + [[nodiscard]] rpl::producer countValue() const; + private: void appendRow(not_null peer); [[nodiscard]] std::unique_ptr createRow( not_null peer) const; const not_null _navigation; + rpl::variable _count; Fn _closeBox; mtpRequestId _requestId = 0; @@ -210,17 +216,17 @@ void InactiveController::prepare() { _requestId = _session->api().request(MTPchannels_GetInactiveChannels( )).done([=](const MTPmessages_InactiveChats &result) { _requestId = 0; - result.match([&](const MTPDmessages_inactiveChats &data) { - _session->data().processUsers(data.vusers()); - const auto &list = data.vchats().v; - const auto &dates = data.vdates().v; - for (auto i = 0, count = int(list.size()); i != count; ++i) { - const auto peer = _session->data().processChat(list[i]); - const auto date = (i < dates.size()) ? dates[i].v : TimeId(); - appendRow(peer, date); - } - delegate()->peerListRefreshRows(); - }); + const auto &data = result.data(); + _session->data().processUsers(data.vusers()); + const auto &list = data.vchats().v; + const auto &dates = data.vdates().v; + for (auto i = 0, count = int(list.size()); i != count; ++i) { + const auto peer = _session->data().processChat(list[i]); + const auto date = (i < dates.size()) ? dates[i].v : TimeId(); + appendRow(peer, date); + } + delegate()->peerListRefreshRows(); + _count = delegate()->peerListFullRowsCount(); }).send(); } @@ -228,6 +234,10 @@ void InactiveController::rowClicked(not_null row) { delegate()->peerListSetRowChecked(row, !row->checked()); } +rpl::producer InactiveController::countValue() const { + return _count.value(); +} + void InactiveController::appendRow( not_null participant, TimeId date) { @@ -296,6 +306,10 @@ Main::Session &PublicsController::session() const { return _navigation->session(); } +rpl::producer PublicsController::countValue() const { + return _count.value(); +} + void PublicsController::prepare() { _requestId = _navigation->session().api().request( MTPchannels_GetAdminedPublicChannels(MTP_flags(0)) @@ -315,6 +329,7 @@ void PublicsController::prepare() { } delegate()->peerListRefreshRows(); } + _count = delegate()->peerListFullRowsCount(); }).send(); } @@ -571,7 +586,7 @@ void ChannelsLimitBox( {}); using namespace rpl::mappers; - content->heightValue( + controller->countValue( ) | rpl::filter(_1 > 0) | rpl::start_with_next([=] { delete placeholder; }, placeholder->lifetime()); @@ -662,7 +677,7 @@ void PublicLinksLimitBox( {}); using namespace rpl::mappers; - content->heightValue( + controller->countValue( ) | rpl::filter(_1 > 0) | rpl::start_with_next([=] { delete placeholder; }, placeholder->lifetime());