diff --git a/Telegram/SourceFiles/api/api_credits.h b/Telegram/SourceFiles/api/api_credits.h index d2e819e08..e178cb866 100644 --- a/Telegram/SourceFiles/api/api_credits.h +++ b/Telegram/SourceFiles/api/api_credits.h @@ -99,8 +99,8 @@ public: [[nodiscard]] Data::CreditsEarnStatistics data() const; private: + const bool _isUser = false; Data::CreditsEarnStatistics _data; - bool _isUser = false; mtpRequestId _requestId = 0; diff --git a/Telegram/SourceFiles/api/api_statistics.cpp b/Telegram/SourceFiles/api/api_statistics.cpp index a51c2c590..daed8f1ee 100644 --- a/Telegram/SourceFiles/api/api_statistics.cpp +++ b/Telegram/SourceFiles/api/api_statistics.cpp @@ -14,6 +14,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "data/data_session.h" #include "data/data_stories.h" #include "data/data_story.h" +#include "data/data_user.h" #include "history/history.h" #include "main/main_session.h" @@ -685,17 +686,18 @@ Data::BoostStatus Boosts::boostStatus() const { return _boostStatus; } -ChannelEarnStatistics::ChannelEarnStatistics(not_null channel) -: StatisticsRequestSender(channel) { +EarnStatistics::EarnStatistics(not_null peer) +: StatisticsRequestSender(peer) +, _isUser(peer->isUser()) { } -rpl::producer ChannelEarnStatistics::request() { +rpl::producer EarnStatistics::request() { return [=](auto consumer) { auto lifetime = rpl::lifetime(); makeRequest(MTPstats_GetBroadcastRevenueStats( MTP_flags(0), - channel()->input + (_isUser ? user()->input : channel()->input) )).done([=](const MTPstats_BroadcastRevenueStats &result) { const auto &data = result.data(); const auto &balances = data.vbalances().data(); @@ -712,18 +714,22 @@ rpl::producer ChannelEarnStatistics::request() { requestHistory({}, [=](Data::EarnHistorySlice &&slice) { _data.firstHistorySlice = std::move(slice); - api().request( - MTPchannels_GetFullChannel(channel()->inputChannel) - ).done([=](const MTPmessages_ChatFull &result) { - result.data().vfull_chat().match([&]( - const MTPDchannelFull &d) { - _data.switchedOff = d.is_restricted_sponsored(); - }, [](const auto &) { - }); + if (!_isUser) { + api().request( + MTPchannels_GetFullChannel(channel()->inputChannel) + ).done([=](const MTPmessages_ChatFull &result) { + result.data().vfull_chat().match([&]( + const MTPDchannelFull &d) { + _data.switchedOff = d.is_restricted_sponsored(); + }, [](const auto &) { + }); + consumer.put_done(); + }).fail([=](const MTP::Error &error) { + consumer.put_error_copy(error.type()); + }).send(); + } else { consumer.put_done(); - }).fail([=](const MTP::Error &error) { - consumer.put_error_copy(error.type()); - }).send(); + } }); }).fail([=](const MTP::Error &error) { consumer.put_error_copy(error.type()); @@ -733,7 +739,7 @@ rpl::producer ChannelEarnStatistics::request() { }; } -void ChannelEarnStatistics::requestHistory( +void EarnStatistics::requestHistory( const Data::EarnHistorySlice::OffsetToken &token, Fn done) { if (_requestId) { @@ -742,7 +748,7 @@ void ChannelEarnStatistics::requestHistory( constexpr auto kTlFirstSlice = tl::make_int(kFirstSlice); constexpr auto kTlLimit = tl::make_int(kLimit); _requestId = api().request(MTPstats_GetBroadcastRevenueTransactions( - channel()->input, + (_isUser ? user()->input : channel()->input), MTP_int(token), (!token) ? kTlFirstSlice : kTlLimit )).done([=](const MTPstats_BroadcastRevenueTransactions &result) { @@ -803,7 +809,7 @@ void ChannelEarnStatistics::requestHistory( }).send(); } -Data::EarnStatistics ChannelEarnStatistics::data() const { +Data::EarnStatistics EarnStatistics::data() const { return _data; } diff --git a/Telegram/SourceFiles/api/api_statistics.h b/Telegram/SourceFiles/api/api_statistics.h index 213ab9293..b419b8841 100644 --- a/Telegram/SourceFiles/api/api_statistics.h +++ b/Telegram/SourceFiles/api/api_statistics.h @@ -79,9 +79,9 @@ private: }; -class ChannelEarnStatistics final : public StatisticsRequestSender { +class EarnStatistics final : public StatisticsRequestSender { public: - explicit ChannelEarnStatistics(not_null channel); + explicit EarnStatistics(not_null peer); [[nodiscard]] rpl::producer request(); void requestHistory( @@ -94,6 +94,7 @@ public: static constexpr auto kLimit = int(10); private: + const bool _isUser = false; Data::EarnStatistics _data; mtpRequestId _requestId = 0; diff --git a/Telegram/SourceFiles/info/channel_statistics/earn/info_channel_earn_list.cpp b/Telegram/SourceFiles/info/channel_statistics/earn/info_channel_earn_list.cpp index 51cf9506a..91ed54be6 100644 --- a/Telegram/SourceFiles/info/channel_statistics/earn/info_channel_earn_list.cpp +++ b/Telegram/SourceFiles/info/channel_statistics/earn/info_channel_earn_list.cpp @@ -269,11 +269,11 @@ InnerWidget::InnerWidget( void InnerWidget::load() { struct State final { State(not_null peer) - : api(peer->asChannel()) + : api(peer) , apiCredits(peer) , apiCreditsHistory(peer, true, true) { } - Api::ChannelEarnStatistics api; + Api::EarnStatistics api; Api::CreditsEarnStatistics apiCredits; Api::CreditsHistory apiCreditsHistory; rpl::lifetime apiLifetime; @@ -1375,7 +1375,7 @@ void InnerWidget::fill() { ShowMoreState(not_null channel) : api(channel) { } - Api::ChannelEarnStatistics api; + Api::EarnStatistics api; bool loading = false; Data::EarnHistorySlice::OffsetToken token; rpl::variable showed = 0;