mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2026-07-25 06:54:43 +00:00
Add affiliate program point to bot info.
This commit is contained in:
@@ -46,6 +46,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
#include "history/history_item_helpers.h"
|
||||
#include "history/view/history_view_item_preview.h"
|
||||
#include "info/bot/earn/info_bot_earn_widget.h"
|
||||
#include "info/bot/starref/info_bot_starref_common.h"
|
||||
#include "info/channel_statistics/earn/earn_format.h"
|
||||
#include "info/channel_statistics/earn/earn_icons.h"
|
||||
#include "info/channel_statistics/earn/info_channel_earn_list.h"
|
||||
@@ -61,6 +62,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
#include "lang/lang_keys.h"
|
||||
#include "main/main_session.h"
|
||||
#include "menu/menu_mute.h"
|
||||
#include "settings/settings_common.h"
|
||||
#include "support/support_helper.h"
|
||||
#include "ui/boxes/peer_qr_box.h"
|
||||
#include "ui/boxes/report_box_graphics.h"
|
||||
@@ -1003,6 +1005,7 @@ public:
|
||||
object_ptr<Ui::RpWidget> fill();
|
||||
|
||||
private:
|
||||
void addAffiliateProgram(not_null<UserData*> user);
|
||||
void addBalanceActions(not_null<UserData*> user);
|
||||
void addInviteToGroupAction(not_null<UserData*> user);
|
||||
void addShareContactAction(not_null<UserData*> user);
|
||||
@@ -2114,6 +2117,63 @@ ActionsFiller::ActionsFiller(
|
||||
, _peer(peer) {
|
||||
}
|
||||
|
||||
void ActionsFiller::addAffiliateProgram(not_null<UserData*> user) {
|
||||
if (!user->isBot()) {
|
||||
return;
|
||||
}
|
||||
|
||||
const auto wrap = _wrap->add(
|
||||
object_ptr<Ui::SlideWrap<Ui::VerticalLayout>>(
|
||||
_wrap.data(),
|
||||
object_ptr<Ui::VerticalLayout>(_wrap.data())));
|
||||
const auto inner = wrap->entity();
|
||||
auto program = user->session().changes().peerFlagsValue(
|
||||
user,
|
||||
Data::PeerUpdate::Flag::StarRefProgram
|
||||
) | rpl::map([=] {
|
||||
return user->botInfo->starRefProgram;
|
||||
}) | rpl::start_spawning(inner->lifetime());
|
||||
auto commission = rpl::duplicate(
|
||||
program
|
||||
) | rpl::filter([=](StarRefProgram program) {
|
||||
return program.commission > 0;
|
||||
}) | rpl::map([=](StarRefProgram program) {
|
||||
return Info::BotStarRef::FormatCommission(program.commission);
|
||||
});
|
||||
const auto show = _controller->uiShow();
|
||||
|
||||
Ui::AddSkip(inner);
|
||||
::Settings::AddButtonWithLabel(
|
||||
inner,
|
||||
tr::lng_manage_peer_bot_star_ref(),
|
||||
rpl::duplicate(commission),
|
||||
st::infoSharedMediaButton,
|
||||
{ &st::menuIconSharing }
|
||||
)->setClickedCallback([=] {
|
||||
const auto program = user->botInfo->starRefProgram;
|
||||
show->show(Info::BotStarRef::JoinStarRefBox(
|
||||
{ user, { program } },
|
||||
user->session().user()));
|
||||
});
|
||||
Ui::AddSkip(inner);
|
||||
Ui::AddDividerText(
|
||||
inner,
|
||||
tr::lng_manage_peer_bot_star_ref_about(
|
||||
lt_bot,
|
||||
rpl::single(TextWithEntities{ user->name() }),
|
||||
lt_amount,
|
||||
rpl::duplicate(commission) | Ui::Text::ToWithEntities(),
|
||||
Ui::Text::RichLangValue));
|
||||
Ui::AddSkip(inner);
|
||||
|
||||
wrap->toggleOn(std::move(
|
||||
program
|
||||
) | rpl::map([](StarRefProgram program) {
|
||||
return program.commission > 0;
|
||||
}));
|
||||
wrap->finishAnimating();
|
||||
}
|
||||
|
||||
void ActionsFiller::addBalanceActions(not_null<UserData*> user) {
|
||||
const auto wrap = _wrap->add(
|
||||
object_ptr<Ui::SlideWrap<Ui::VerticalLayout>>(
|
||||
@@ -2379,6 +2439,7 @@ void ActionsFiller::addJoinChannelAction(
|
||||
|
||||
void ActionsFiller::fillUserActions(not_null<UserData*> user) {
|
||||
if (user->isBot()) {
|
||||
addAffiliateProgram(user);
|
||||
addBalanceActions(user);
|
||||
addInviteToGroupAction(user);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user