Added api support of flag to view credits stats from full channel.

This commit is contained in:
23rd 2024-07-14 22:59:27 +03:00 committed by John Preston
parent 6818b8d8dc
commit 1d5e4040f4
4 changed files with 18 additions and 4 deletions

View file

@ -1089,7 +1089,8 @@ void ApplyChannelUpdate(
| Flag::CanGetStatistics
| Flag::ViewAsMessages
| Flag::CanViewRevenue
| Flag::PaidMediaAllowed;
| Flag::PaidMediaAllowed
| Flag::CanViewCreditsRevenue;
channel->setFlags((channel->flags() & ~mask)
| (update.is_can_set_username() ? Flag::CanSetUsername : Flag())
| (update.is_can_view_participants()
@ -1107,7 +1108,10 @@ void ApplyChannelUpdate(
? Flag::ViewAsMessages
: Flag())
| (update.is_paid_media_allowed() ? Flag::PaidMediaAllowed : Flag())
| (update.is_can_view_revenue() ? Flag::CanViewRevenue : Flag()));
| (update.is_can_view_revenue() ? Flag::CanViewRevenue : Flag())
| (update.is_can_view_stars_revenue()
? Flag::CanViewCreditsRevenue
: Flag()));
channel->setUserpicPhoto(update.vchat_photo());
if (const auto migratedFrom = update.vmigrated_from_chat_id()) {
channel->addFlags(Flag::Megagroup);

View file

@ -67,6 +67,7 @@ enum class ChannelDataFlag : uint64 {
SimilarExpanded = (1ULL << 31),
CanViewRevenue = (1ULL << 32),
PaidMediaAllowed = (1ULL << 33),
CanViewCreditsRevenue = (1ULL << 34),
};
inline constexpr bool is_flag_type(ChannelDataFlag) { return true; };
using ChannelDataFlags = base::flags<ChannelDataFlag>;

View file

@ -281,6 +281,9 @@ void InnerWidget::load() {
rpl::lifetime apiPremiumBotLifetime;
};
const auto state = lifetime().make_state<State>(_peer);
using ChannelFlag = ChannelDataFlag;
const auto canViewCredits = !_peer->isChannel()
|| (_peer->asChannel()->flags() & ChannelFlag::CanViewCreditsRevenue);
Info::Statistics::FillLoading(
this,
@ -363,7 +366,11 @@ void InnerWidget::load() {
_state.premiumBotId = bot->id;
state->apiCredits.request(
) | rpl::start_with_error_done([=](const QString &error) {
fail(error);
if (canViewCredits) {
fail(error);
} else {
_state.creditsEarn = {};
}
finish();
}, [=] {
_state.creditsEarn = state->apiCredits.data();

View file

@ -1090,6 +1090,8 @@ void Filler::addViewStatistics() {
using Flag = ChannelDataFlag;
const auto canGetStats = (channel->flags() & Flag::CanGetStatistics);
const auto canViewEarn = (channel->flags() & Flag::CanViewRevenue);
const auto canViewCreditsEarn
= (channel->flags() & Flag::CanViewCreditsRevenue);
if (canGetStats) {
_addAction(tr::lng_stats_title(tr::now), [=] {
if (const auto strong = weak.get()) {
@ -1107,7 +1109,7 @@ void Filler::addViewStatistics() {
}
}, &st::menuIconBoosts);
}
if (canViewEarn) {
if (canViewEarn || canViewCreditsEarn) {
_addAction(tr::lng_channel_earn_title(tr::now), [=] {
if (const auto strong = weak.get()) {
controller->showSection(Info::ChannelEarn::Make(peer));