mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-04-27 03:28:19 +02:00
96 lines
2.6 KiB
C++
96 lines
2.6 KiB
C++
/*
|
|
This file is part of Telegram Desktop,
|
|
the official desktop application for the Telegram messaging service.
|
|
|
|
For license and copyright information please follow this link:
|
|
https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|
*/
|
|
#include "api/api_earn.h"
|
|
|
|
#include "api/api_cloud_password.h"
|
|
#include "apiwrap.h"
|
|
#include "boxes/passcode_box.h"
|
|
#include "data/data_channel.h"
|
|
#include "data/data_session.h"
|
|
#include "lang/lang_keys.h"
|
|
#include "main/main_session.h"
|
|
#include "ui/basic_click_handlers.h"
|
|
#include "ui/widgets/buttons.h"
|
|
|
|
namespace Api {
|
|
|
|
void RestrictSponsored(
|
|
not_null<ChannelData*> channel,
|
|
bool restricted,
|
|
Fn<void(QString)> failed) {
|
|
channel->session().api().request(MTPchannels_RestrictSponsoredMessages(
|
|
channel->inputChannel,
|
|
MTP_bool(restricted))
|
|
).done([=](const MTPUpdates &updates) {
|
|
channel->session().api().applyUpdates(updates);
|
|
}).fail([=](const MTP::Error &error) {
|
|
failed(error.type());
|
|
}).send();
|
|
}
|
|
|
|
void HandleWithdrawalButton(
|
|
not_null<ChannelData*> channel,
|
|
not_null<Ui::RippleButton*> button,
|
|
std::shared_ptr<Ui::Show> show) {
|
|
struct State {
|
|
rpl::lifetime lifetime;
|
|
bool loading = false;
|
|
};
|
|
|
|
const auto state = button->lifetime().make_state<State>();
|
|
const auto session = &channel->session();
|
|
|
|
session->api().cloudPassword().reload();
|
|
button->setClickedCallback([=] {
|
|
if (state->loading) {
|
|
return;
|
|
}
|
|
state->loading = true;
|
|
state->lifetime = session->api().cloudPassword().state(
|
|
) | rpl::take(
|
|
1
|
|
) | rpl::start_with_next([=](const Core::CloudPasswordState &pass) {
|
|
state->loading = false;
|
|
|
|
auto fields = PasscodeBox::CloudFields::From(pass);
|
|
fields.customTitle
|
|
= tr::lng_channel_earn_balance_password_title();
|
|
fields.customDescription
|
|
= tr::lng_channel_earn_balance_password_description(tr::now);
|
|
fields.customSubmitButton = tr::lng_passcode_submit();
|
|
fields.customCheckCallback = crl::guard(button, [=](
|
|
const Core::CloudPasswordResult &result,
|
|
QPointer<PasscodeBox> box) {
|
|
const auto done = [=](const QString &result) {
|
|
if (!result.isEmpty()) {
|
|
UrlClickHandler::Open(result);
|
|
if (box) {
|
|
box->closeBox();
|
|
}
|
|
}
|
|
};
|
|
const auto fail = [=](const QString &error) {
|
|
show->showToast(error);
|
|
};
|
|
session->api().request(
|
|
MTPstats_GetBroadcastRevenueWithdrawalUrl(
|
|
channel->inputChannel,
|
|
result.result
|
|
)).done([=](const MTPstats_BroadcastRevenueWithdrawalUrl &r) {
|
|
done(qs(r.data().vurl()));
|
|
}).fail([=](const MTP::Error &error) {
|
|
fail(error.type());
|
|
}).send();
|
|
});
|
|
show->show(Box<PasscodeBox>(session, fields));
|
|
});
|
|
|
|
});
|
|
}
|
|
|
|
} // namespace Api
|