From 54dd015786ad9a36ee02e6b892fee0ba7de77f26 Mon Sep 17 00:00:00 2001 From: John Preston Date: Tue, 1 Sep 2026 21:27:23 +0400 Subject: [PATCH] Load correctly transactions after first page. --- .../info_statistics_list_controllers.cpp | 16 +++++++-- .../info_statistics_list_controllers.h | 3 +- .../settings/sections/settings_credits.cpp | 33 +++++++++++++++---- 3 files changed, 41 insertions(+), 11 deletions(-) diff --git a/Telegram/SourceFiles/info/statistics/info_statistics_list_controllers.cpp b/Telegram/SourceFiles/info/statistics/info_statistics_list_controllers.cpp index 041c38dda5..5a3f8e9296 100644 --- a/Telegram/SourceFiles/info/statistics/info_statistics_list_controllers.cpp +++ b/Telegram/SourceFiles/info/statistics/info_statistics_list_controllers.cpp @@ -140,6 +140,7 @@ struct CreditsDescriptor final { bool in = false; bool out = false; bool subscription = false; + bool currency = false; }; class PeerListRowWithFullId : public PeerListRow { @@ -1230,7 +1231,7 @@ CreditsController::CreditsController(CreditsDescriptor d) : _session(&d.peer->session()) , _subscription(d.subscription) , _entryClickedCallback(std::move(d.entryClickedCallback)) -, _api(d.peer, d.in, d.out) +, _api(d.peer, d.in, d.out, d.currency) , _firstSlice(std::move(d.firstSlice)) , _context([&]() -> Ui::Text::MarkedContext { const auto height = st::creditsHistoryRowRightStyle.font->height @@ -1534,7 +1535,8 @@ void AddCreditsHistoryList( not_null bot, bool in, bool out, - bool subs) { + bool subs, + bool currency) { struct State final { State(CreditsDescriptor d) : controller(std::move(d)) { } @@ -1543,7 +1545,15 @@ void AddCreditsHistoryList( CreditsController controller; }; const auto state = container->lifetime().make_state( - CreditsDescriptor{ firstSlice, callback, bot, in, out, subs }); + CreditsDescriptor{ + firstSlice, + callback, + bot, + in, + out, + subs, + currency, + }); if (subs) { state->subscriptionDelegate.emplace(); state->subscriptionDelegate->setUiShow(show); diff --git a/Telegram/SourceFiles/info/statistics/info_statistics_list_controllers.h b/Telegram/SourceFiles/info/statistics/info_statistics_list_controllers.h index 7ea36fcbc4..5d3b0e0c8f 100644 --- a/Telegram/SourceFiles/info/statistics/info_statistics_list_controllers.h +++ b/Telegram/SourceFiles/info/statistics/info_statistics_list_controllers.h @@ -65,7 +65,8 @@ void AddCreditsHistoryList( not_null peer, bool in, bool out, - bool subscription = false); + bool subscription = false, + bool currency = false); [[nodiscard]] not_null*> AddShowMoreButton( not_null container, diff --git a/Telegram/SourceFiles/settings/sections/settings_credits.cpp b/Telegram/SourceFiles/settings/sections/settings_credits.cpp index 3116c760dd..c126492757 100644 --- a/Telegram/SourceFiles/settings/sections/settings_credits.cpp +++ b/Telegram/SourceFiles/settings/sections/settings_credits.cpp @@ -282,6 +282,8 @@ void Credits::setupHistory(not_null container) { Ui::AddSkip(content, st::lineWidth * 6); + const auto currency = (_creditsType == CreditsType::Ton); + const auto fill = [=]( const Data::CreditsStatusSlice &fullSlice, const Data::CreditsStatusSlice &inSlice, @@ -381,7 +383,9 @@ void Credits::setupHistory(not_null container) { entryClicked, self, true, - true); + true, + false, + currency); Info::Statistics::AddCreditsHistoryList( window->uiShow(), inSlice, @@ -389,7 +393,9 @@ void Credits::setupHistory(not_null container) { entryClicked, self, true, - false); + false, + false, + currency); Info::Statistics::AddCreditsHistoryList( window->uiShow(), outSlice, @@ -397,7 +403,9 @@ void Credits::setupHistory(not_null container) { std::move(entryClicked), self, false, - true); + true, + false, + currency); Ui::AddSkip(inner); Ui::AddSkip(inner); @@ -409,10 +417,21 @@ void Credits::setupHistory(not_null container) { { using Api = Api::CreditsHistory; constexpr auto kFirstPageLimit = 20; - const auto c = (_creditsType == CreditsType::Ton); - const auto apiFull = apiLifetime->make_state(self, true, true, c); - const auto apiIn = apiLifetime->make_state(self, true, false, c); - const auto apiOut = apiLifetime->make_state(self, false, true, c); + const auto apiFull = apiLifetime->make_state( + self, + true, + true, + currency); + const auto apiIn = apiLifetime->make_state( + self, + true, + false, + currency); + const auto apiOut = apiLifetime->make_state( + self, + false, + true, + currency); apiFull->request({}, [=](Data::CreditsStatusSlice fullSlice) { apiIn->request({}, [=](Data::CreditsStatusSlice inSlice) { apiOut->request({}, [=](Data::CreditsStatusSlice outSlice) {