mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-05 06:33:57 +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;
|
state->sent = true;
|
||||||
ConnectStarRef(bot->asUser(), peer, [=](ConnectedBot info) {
|
ConnectStarRef(bot->asUser(), peer, [=](ConnectedBot info) {
|
||||||
done(info.state);
|
if (const auto onstack = done) {
|
||||||
|
onstack(info.state);
|
||||||
|
}
|
||||||
show->show(StarRefLinkBox(info, peer));
|
show->show(StarRefLinkBox(info, peer));
|
||||||
if (const auto strong = state->weak.data()) {
|
if (const auto strong = state->weak.data()) {
|
||||||
strong->closeBox();
|
strong->closeBox();
|
||||||
|
|
|
@ -66,7 +66,7 @@ void AddFullWidthButtonFooter(
|
||||||
[[nodiscard]] object_ptr<Ui::BoxContent> JoinStarRefBox(
|
[[nodiscard]] object_ptr<Ui::BoxContent> JoinStarRefBox(
|
||||||
ConnectedBot row,
|
ConnectedBot row,
|
||||||
not_null<PeerData*> peer,
|
not_null<PeerData*> peer,
|
||||||
Fn<void(ConnectedBotState)> done);
|
Fn<void(ConnectedBotState)> done = nullptr);
|
||||||
[[nodiscard]] object_ptr<Ui::BoxContent> ConfirmEndBox(Fn<void()> finish);
|
[[nodiscard]] object_ptr<Ui::BoxContent> ConfirmEndBox(Fn<void()> finish);
|
||||||
|
|
||||||
std::unique_ptr<Ui::AbstractButton> MakePeerBubbleButton(
|
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/history_item_helpers.h"
|
||||||
#include "history/view/history_view_item_preview.h"
|
#include "history/view/history_view_item_preview.h"
|
||||||
#include "info/bot/earn/info_bot_earn_widget.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_format.h"
|
||||||
#include "info/channel_statistics/earn/earn_icons.h"
|
#include "info/channel_statistics/earn/earn_icons.h"
|
||||||
#include "info/channel_statistics/earn/info_channel_earn_list.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 "lang/lang_keys.h"
|
||||||
#include "main/main_session.h"
|
#include "main/main_session.h"
|
||||||
#include "menu/menu_mute.h"
|
#include "menu/menu_mute.h"
|
||||||
|
#include "settings/settings_common.h"
|
||||||
#include "support/support_helper.h"
|
#include "support/support_helper.h"
|
||||||
#include "ui/boxes/peer_qr_box.h"
|
#include "ui/boxes/peer_qr_box.h"
|
||||||
#include "ui/boxes/report_box_graphics.h"
|
#include "ui/boxes/report_box_graphics.h"
|
||||||
|
@ -1003,6 +1005,7 @@ public:
|
||||||
object_ptr<Ui::RpWidget> fill();
|
object_ptr<Ui::RpWidget> fill();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void addAffiliateProgram(not_null<UserData*> user);
|
||||||
void addBalanceActions(not_null<UserData*> user);
|
void addBalanceActions(not_null<UserData*> user);
|
||||||
void addInviteToGroupAction(not_null<UserData*> user);
|
void addInviteToGroupAction(not_null<UserData*> user);
|
||||||
void addShareContactAction(not_null<UserData*> user);
|
void addShareContactAction(not_null<UserData*> user);
|
||||||
|
@ -2114,6 +2117,63 @@ ActionsFiller::ActionsFiller(
|
||||||
, _peer(peer) {
|
, _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) {
|
void ActionsFiller::addBalanceActions(not_null<UserData*> user) {
|
||||||
const auto wrap = _wrap->add(
|
const auto wrap = _wrap->add(
|
||||||
object_ptr<Ui::SlideWrap<Ui::VerticalLayout>>(
|
object_ptr<Ui::SlideWrap<Ui::VerticalLayout>>(
|
||||||
|
@ -2379,6 +2439,7 @@ void ActionsFiller::addJoinChannelAction(
|
||||||
|
|
||||||
void ActionsFiller::fillUserActions(not_null<UserData*> user) {
|
void ActionsFiller::fillUserActions(not_null<UserData*> user) {
|
||||||
if (user->isBot()) {
|
if (user->isBot()) {
|
||||||
|
addAffiliateProgram(user);
|
||||||
addBalanceActions(user);
|
addBalanceActions(user);
|
||||||
addInviteToGroupAction(user);
|
addInviteToGroupAction(user);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue