mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-04-15 21:57:10 +02:00
Add affiliate program point to bot info.
This commit is contained in:
parent
6539d14852
commit
1e14667006
3 changed files with 65 additions and 2 deletions
|
@ -524,7 +524,9 @@ object_ptr<Ui::BoxContent> StarRefLinkBox(
|
|||
}
|
||||
state->sent = true;
|
||||
ConnectStarRef(bot->asUser(), peer, [=](ConnectedBot info) {
|
||||
done(info.state);
|
||||
if (const auto onstack = done) {
|
||||
onstack(info.state);
|
||||
}
|
||||
show->show(StarRefLinkBox(info, peer));
|
||||
if (const auto strong = state->weak.data()) {
|
||||
strong->closeBox();
|
||||
|
|
|
@ -66,7 +66,7 @@ void AddFullWidthButtonFooter(
|
|||
[[nodiscard]] object_ptr<Ui::BoxContent> JoinStarRefBox(
|
||||
ConnectedBot row,
|
||||
not_null<PeerData*> peer,
|
||||
Fn<void(ConnectedBotState)> done);
|
||||
Fn<void(ConnectedBotState)> done = nullptr);
|
||||
[[nodiscard]] object_ptr<Ui::BoxContent> ConfirmEndBox(Fn<void()> finish);
|
||||
|
||||
std::unique_ptr<Ui::AbstractButton> MakePeerBubbleButton(
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue