mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-05 06:33:57 +02:00
Correctly show commission in stars stats.
This commit is contained in:
parent
552dd318cd
commit
b401c37c39
11 changed files with 75 additions and 11 deletions
|
@ -75,6 +75,14 @@ constexpr auto kTransactionsLimit = 100;
|
||||||
const auto stargift = tl.data().vstargift();
|
const auto stargift = tl.data().vstargift();
|
||||||
const auto reaction = tl.data().is_reaction();
|
const auto reaction = tl.data().is_reaction();
|
||||||
const auto amount = Data::FromTL(tl.data().vstars());
|
const auto amount = Data::FromTL(tl.data().vstars());
|
||||||
|
const auto starrefAmount = tl.data().vstarref_amount()
|
||||||
|
? Data::FromTL(*tl.data().vstarref_amount())
|
||||||
|
: StarsAmount();
|
||||||
|
const auto starrefCommission
|
||||||
|
= tl.data().vstarref_commission_permille().value_or_empty();
|
||||||
|
const auto starrefBarePeerId = tl.data().vstarref_peer()
|
||||||
|
? peerFromMTP(*tl.data().vstarref_peer()).value
|
||||||
|
: 0;
|
||||||
const auto incoming = (amount >= StarsAmount());
|
const auto incoming = (amount >= StarsAmount());
|
||||||
const auto saveActorId = (reaction || !extended.empty()) && incoming;
|
const auto saveActorId = (reaction || !extended.empty()) && incoming;
|
||||||
return Data::CreditsHistoryEntry{
|
return Data::CreditsHistoryEntry{
|
||||||
|
@ -93,6 +101,9 @@ constexpr auto kTransactionsLimit = 100;
|
||||||
? owner->processDocument(stargift->data().vsticker())->id
|
? owner->processDocument(stargift->data().vsticker())->id
|
||||||
: 0),
|
: 0),
|
||||||
.bareActorId = saveActorId ? barePeerId : uint64(0),
|
.bareActorId = saveActorId ? barePeerId : uint64(0),
|
||||||
|
.starrefAmount = starrefAmount,
|
||||||
|
.starrefCommission = starrefCommission,
|
||||||
|
.starrefRecipientId = starrefBarePeerId,
|
||||||
.peerType = tl.data().vpeer().match([](const HistoryPeerTL &) {
|
.peerType = tl.data().vpeer().match([](const HistoryPeerTL &) {
|
||||||
return Data::CreditsHistoryEntry::PeerType::Peer;
|
return Data::CreditsHistoryEntry::PeerType::Peer;
|
||||||
}, [](const MTPDstarsTransactionPeerPlayMarket &) {
|
}, [](const MTPDstarsTransactionPeerPlayMarket &) {
|
||||||
|
|
|
@ -1146,9 +1146,43 @@ void AddCreditsHistoryEntryTable(
|
||||||
st::giveawayGiftCodeTableMargin);
|
st::giveawayGiftCodeTableMargin);
|
||||||
const auto peerId = PeerId(entry.barePeerId);
|
const auto peerId = PeerId(entry.barePeerId);
|
||||||
const auto actorId = PeerId(entry.bareActorId);
|
const auto actorId = PeerId(entry.bareActorId);
|
||||||
|
const auto starrefRecipientId = PeerId(entry.starrefRecipientId);
|
||||||
const auto session = &controller->session();
|
const auto session = &controller->session();
|
||||||
if (actorId || peerId) {
|
if (entry.starrefCommission) {
|
||||||
auto text = entry.in
|
if (entry.starrefAmount) {
|
||||||
|
AddTableRow(
|
||||||
|
table,
|
||||||
|
tr::lng_star_ref_commission_title(),
|
||||||
|
rpl::single(TextWithEntities{
|
||||||
|
QString::number(entry.starrefCommission / 10.) + '%' }));
|
||||||
|
} else {
|
||||||
|
AddTableRow(
|
||||||
|
table,
|
||||||
|
tr::lng_gift_link_label_reason(),
|
||||||
|
tr::lng_credits_box_history_entry_reason_star_ref(
|
||||||
|
Ui::Text::WithEntities));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (starrefRecipientId && entry.starrefAmount) {
|
||||||
|
AddTableRow(
|
||||||
|
table,
|
||||||
|
tr::lng_credits_box_history_entry_affiliate(),
|
||||||
|
controller,
|
||||||
|
starrefRecipientId);
|
||||||
|
}
|
||||||
|
if (peerId && entry.starrefCommission) {
|
||||||
|
AddTableRow(
|
||||||
|
table,
|
||||||
|
(entry.starrefAmount
|
||||||
|
? tr::lng_credits_box_history_entry_referred
|
||||||
|
: tr::lng_credits_box_history_entry_miniapp)(),
|
||||||
|
controller,
|
||||||
|
peerId);
|
||||||
|
}
|
||||||
|
if (actorId || (!entry.starrefCommission && peerId)) {
|
||||||
|
auto text = entry.starrefCommission
|
||||||
|
? tr::lng_credits_box_history_entry_referred()
|
||||||
|
: entry.in
|
||||||
? tr::lng_credits_box_history_entry_peer_in()
|
? tr::lng_credits_box_history_entry_peer_in()
|
||||||
: tr::lng_credits_box_history_entry_peer();
|
: tr::lng_credits_box_history_entry_peer();
|
||||||
AddTableRow(
|
AddTableRow(
|
||||||
|
|
|
@ -1745,7 +1745,7 @@ void Controller::fillBotAffiliateProgram() {
|
||||||
? user->botInfo->starRefProgram.commission
|
? user->botInfo->starRefProgram.commission
|
||||||
: 0;
|
: 0;
|
||||||
return commission
|
return commission
|
||||||
? u"%1%"_q.arg(commission / 10.)
|
? Info::BotStarRef::FormatCommission(commission)
|
||||||
: tr::lng_manage_peer_bot_star_ref_off(tr::now);
|
: tr::lng_manage_peer_bot_star_ref_off(tr::now);
|
||||||
});
|
});
|
||||||
AddButtonWithCount(
|
AddButtonWithCount(
|
||||||
|
|
|
@ -63,6 +63,9 @@ struct CreditsHistoryEntry final {
|
||||||
uint64 bareGiveawayMsgId = 0;
|
uint64 bareGiveawayMsgId = 0;
|
||||||
uint64 bareGiftStickerId = 0;
|
uint64 bareGiftStickerId = 0;
|
||||||
uint64 bareActorId = 0;
|
uint64 bareActorId = 0;
|
||||||
|
StarsAmount starrefAmount;
|
||||||
|
int starrefCommission = 0;
|
||||||
|
uint64 starrefRecipientId = 0;
|
||||||
PeerType peerType;
|
PeerType peerType;
|
||||||
QDateTime subscriptionUntil;
|
QDateTime subscriptionUntil;
|
||||||
QDateTime successDate;
|
QDateTime successDate;
|
||||||
|
|
|
@ -7,6 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
*/
|
*/
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include "core/stars_amount.h"
|
||||||
#include "data/data_statistics_chart.h"
|
#include "data/data_statistics_chart.h"
|
||||||
|
|
||||||
#include <QtCore/QDateTime>
|
#include <QtCore/QDateTime>
|
||||||
|
|
|
@ -53,7 +53,7 @@ void ConnectStarRef(
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
QString FormatStarRefCommission(ushort commission) {
|
QString FormatCommission(ushort commission) {
|
||||||
return QString::number(commission / 10.) + '%';
|
return QString::number(commission / 10.) + '%';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -248,7 +248,7 @@ object_ptr<Ui::BoxContent> StarRefLinkBox(
|
||||||
: tr::lng_star_ref_link_about_channel)(
|
: tr::lng_star_ref_link_about_channel)(
|
||||||
lt_amount,
|
lt_amount,
|
||||||
rpl::single(Ui::Text::Bold(
|
rpl::single(Ui::Text::Bold(
|
||||||
FormatStarRefCommission(program.commission))),
|
FormatCommission(program.commission))),
|
||||||
lt_app,
|
lt_app,
|
||||||
rpl::single(Ui::Text::Bold(bot->name())),
|
rpl::single(Ui::Text::Bold(bot->name())),
|
||||||
lt_duration,
|
lt_duration,
|
||||||
|
@ -341,7 +341,7 @@ object_ptr<Ui::BoxContent> StarRefLinkBox(
|
||||||
rpl::single(Ui::Text::Bold(bot->name())),
|
rpl::single(Ui::Text::Bold(bot->name())),
|
||||||
lt_amount,
|
lt_amount,
|
||||||
rpl::single(Ui::Text::Bold(
|
rpl::single(Ui::Text::Bold(
|
||||||
FormatStarRefCommission(program.commission))),
|
FormatCommission(program.commission))),
|
||||||
lt_duration,
|
lt_duration,
|
||||||
FormatProgramDuration(program),
|
FormatProgramDuration(program),
|
||||||
Ui::Text::WithEntities),
|
Ui::Text::WithEntities),
|
||||||
|
|
|
@ -38,7 +38,7 @@ struct ConnectedBot {
|
||||||
};
|
};
|
||||||
using ConnectedBots = std::vector<ConnectedBot>;
|
using ConnectedBots = std::vector<ConnectedBot>;
|
||||||
|
|
||||||
[[nodiscard]] QString FormatStarRefCommission(ushort commission);
|
[[nodiscard]] QString FormatCommission(ushort commission);
|
||||||
[[nodiscard]] rpl::producer<TextWithEntities> FormatProgramDuration(
|
[[nodiscard]] rpl::producer<TextWithEntities> FormatProgramDuration(
|
||||||
StarRefProgram program);
|
StarRefProgram program);
|
||||||
|
|
||||||
|
|
|
@ -156,8 +156,8 @@ std::unique_ptr<PeerListRow> ListController::createRow(ConnectedBot bot) {
|
||||||
if (bot.state.revoked) {
|
if (bot.state.revoked) {
|
||||||
result->setCustomStatus(u"Revoked"_q);
|
result->setCustomStatus(u"Revoked"_q);
|
||||||
} else {
|
} else {
|
||||||
result->setCustomStatus(u"+%1%, %2"_q.arg(
|
result->setCustomStatus(u"+%1, %2"_q.arg(
|
||||||
QString::number(program.commission / 10.),
|
FormatCommission(program.commission),
|
||||||
duration));
|
duration));
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
|
|
|
@ -645,7 +645,7 @@ void InnerWidget::setupCommission() {
|
||||||
commission,
|
commission,
|
||||||
setCommission,
|
setCommission,
|
||||||
setCommission,
|
setCommission,
|
||||||
[=](int value) { return FormatStarRefCommission(value); },
|
[=](int value) { return FormatCommission(value); },
|
||||||
_state.exists),
|
_state.exists),
|
||||||
st::boxRowPadding);
|
st::boxRowPadding);
|
||||||
_state.program.commission = commission;
|
_state.program.commission = commission;
|
||||||
|
|
|
@ -35,6 +35,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
#include "history/history.h"
|
#include "history/history.h"
|
||||||
#include "history/history_item.h"
|
#include "history/history_item.h"
|
||||||
#include "history/history_item_components.h" // HistoryServicePaymentRefund.
|
#include "history/history_item_components.h" // HistoryServicePaymentRefund.
|
||||||
|
#include "info/bot/starref/info_bot_starref_common.h"
|
||||||
#include "info/channel_statistics/boosts/giveaway/boost_badge.h" // InfiniteRadialAnimationWidget.
|
#include "info/channel_statistics/boosts/giveaway/boost_badge.h" // InfiniteRadialAnimationWidget.
|
||||||
#include "info/settings/info_settings_widget.h" // SectionCustomTopBarData.
|
#include "info/settings/info_settings_widget.h" // SectionCustomTopBarData.
|
||||||
#include "info/statistics/info_statistics_list_controllers.h"
|
#include "info/statistics/info_statistics_list_controllers.h"
|
||||||
|
@ -1012,6 +1013,11 @@ void ReceiptCreditsBox(
|
||||||
? tr::lng_credits_box_history_entry_subscription(tr::now)
|
? tr::lng_credits_box_history_entry_subscription(tr::now)
|
||||||
: !e.title.isEmpty()
|
: !e.title.isEmpty()
|
||||||
? e.title
|
? e.title
|
||||||
|
: e.starrefCommission
|
||||||
|
? tr::lng_credits_commission(
|
||||||
|
tr::now,
|
||||||
|
lt_amount,
|
||||||
|
Info::BotStarRef::FormatCommission(e.starrefCommission))
|
||||||
: e.soldOutInfo
|
: e.soldOutInfo
|
||||||
? tr::lng_credits_box_history_entry_gift_unavailable(tr::now)
|
? tr::lng_credits_box_history_entry_gift_unavailable(tr::now)
|
||||||
: sentStarGift
|
: sentStarGift
|
||||||
|
|
|
@ -17,6 +17,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
#include "data/data_photo_media.h"
|
#include "data/data_photo_media.h"
|
||||||
#include "data/data_session.h"
|
#include "data/data_session.h"
|
||||||
#include "history/view/media/history_view_sticker_player.h"
|
#include "history/view/media/history_view_sticker_player.h"
|
||||||
|
#include "info/bot/starref/info_bot_starref_common.h"
|
||||||
#include "info/userpic/info_userpic_emoji_builder_preview.h"
|
#include "info/userpic/info_userpic_emoji_builder_preview.h"
|
||||||
#include "lang/lang_keys.h"
|
#include "lang/lang_keys.h"
|
||||||
#include "main/main_session.h"
|
#include "main/main_session.h"
|
||||||
|
@ -545,7 +546,15 @@ Fn<PaintRoundImageCallback(Fn<void()>)> PaintPreviewCallback(
|
||||||
}
|
}
|
||||||
|
|
||||||
TextWithEntities GenerateEntryName(const Data::CreditsHistoryEntry &entry) {
|
TextWithEntities GenerateEntryName(const Data::CreditsHistoryEntry &entry) {
|
||||||
return (entry.floodSkip
|
return (entry.starrefCommission && !entry.starrefAmount)
|
||||||
|
? tr::lng_credits_commission(
|
||||||
|
tr::now,
|
||||||
|
lt_amount,
|
||||||
|
TextWithEntities{
|
||||||
|
Info::BotStarRef::FormatCommission(entry.starrefCommission)
|
||||||
|
},
|
||||||
|
TextWithEntities::Simple)
|
||||||
|
: (entry.floodSkip
|
||||||
? tr::lng_credits_box_history_entry_api
|
? tr::lng_credits_box_history_entry_api
|
||||||
: entry.reaction
|
: entry.reaction
|
||||||
? tr::lng_credits_box_history_entry_reaction_name
|
? tr::lng_credits_box_history_entry_reaction_name
|
||||||
|
|
Loading…
Add table
Reference in a new issue