mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-05 06:33:57 +02:00
Show real subscription price from the API.
This commit is contained in:
parent
6454f67e74
commit
499923b6d3
4 changed files with 33 additions and 5 deletions
|
@ -35,6 +35,14 @@ rpl::producer<TextWithEntities> Premium::statusTextValue() const {
|
||||||
_statusText.value_or(TextWithEntities()));
|
_statusText.value_or(TextWithEntities()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int64 Premium::monthlyAmount() const {
|
||||||
|
return _monthlyAmount;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString Premium::monthlyCurrency() const {
|
||||||
|
return _monthlyCurrency;
|
||||||
|
}
|
||||||
|
|
||||||
void Premium::reload() {
|
void Premium::reload() {
|
||||||
if (_statusRequestId) {
|
if (_statusRequestId) {
|
||||||
return;
|
return;
|
||||||
|
@ -43,6 +51,8 @@ void Premium::reload() {
|
||||||
)).done([=](const MTPhelp_PremiumPromo &result) {
|
)).done([=](const MTPhelp_PremiumPromo &result) {
|
||||||
_statusRequestId = 0;
|
_statusRequestId = 0;
|
||||||
result.match([&](const MTPDhelp_premiumPromo &data) {
|
result.match([&](const MTPDhelp_premiumPromo &data) {
|
||||||
|
_monthlyAmount = data.vmonthly_amount().v;
|
||||||
|
_monthlyCurrency = qs(data.vcurrency());
|
||||||
auto text = TextWithEntities{
|
auto text = TextWithEntities{
|
||||||
qs(data.vstatus_text()),
|
qs(data.vstatus_text()),
|
||||||
EntitiesFromMTP(_session, data.vstatus_entities().v),
|
EntitiesFromMTP(_session, data.vstatus_entities().v),
|
||||||
|
|
|
@ -24,6 +24,9 @@ public:
|
||||||
void reload();
|
void reload();
|
||||||
[[nodiscard]] rpl::producer<TextWithEntities> statusTextValue() const;
|
[[nodiscard]] rpl::producer<TextWithEntities> statusTextValue() const;
|
||||||
|
|
||||||
|
[[nodiscard]] int64 monthlyAmount() const;
|
||||||
|
[[nodiscard]] QString monthlyCurrency() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
const not_null<Main::Session*> _session;
|
const not_null<Main::Session*> _session;
|
||||||
MTP::Sender _api;
|
MTP::Sender _api;
|
||||||
|
@ -32,6 +35,9 @@ private:
|
||||||
std::optional<TextWithEntities> _statusText;
|
std::optional<TextWithEntities> _statusText;
|
||||||
rpl::event_stream<TextWithEntities> _statusTextUpdates;
|
rpl::event_stream<TextWithEntities> _statusTextUpdates;
|
||||||
|
|
||||||
|
int64 _monthlyAmount = 0;
|
||||||
|
QString _monthlyCurrency;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Api
|
} // namespace Api
|
||||||
|
|
|
@ -559,9 +559,7 @@ Main::Main(
|
||||||
: Section(parent)
|
: Section(parent)
|
||||||
, _controller(controller) {
|
, _controller(controller) {
|
||||||
setupContent(controller);
|
setupContent(controller);
|
||||||
if (_controller->session().premium()) {
|
_controller->session().api().premium().reload();
|
||||||
_controller->session().api().premium().reload();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
rpl::producer<QString> Main::title() {
|
rpl::producer<QString> Main::title() {
|
||||||
|
|
|
@ -22,6 +22,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
#include "ui/effects/gradient.h"
|
#include "ui/effects/gradient.h"
|
||||||
#include "ui/effects/premium_graphics.h"
|
#include "ui/effects/premium_graphics.h"
|
||||||
#include "ui/text/text_utilities.h"
|
#include "ui/text/text_utilities.h"
|
||||||
|
#include "ui/text/format_values.h"
|
||||||
#include "ui/widgets/gradient_round_button.h"
|
#include "ui/widgets/gradient_round_button.h"
|
||||||
#include "ui/widgets/labels.h"
|
#include "ui/widgets/labels.h"
|
||||||
#include "ui/wrap/fade_wrap.h"
|
#include "ui/wrap/fade_wrap.h"
|
||||||
|
@ -166,6 +167,7 @@ using Order = std::vector<QString>;
|
||||||
}
|
}
|
||||||
|
|
||||||
[[nodiscard]] not_null<Ui::RpWidget*> CreateSubscribeButton(
|
[[nodiscard]] not_null<Ui::RpWidget*> CreateSubscribeButton(
|
||||||
|
not_null<Window::SessionController*> controller,
|
||||||
not_null<Ui::RpWidget*> parent,
|
not_null<Ui::RpWidget*> parent,
|
||||||
Fn<void()> callback) {
|
Fn<void()> callback) {
|
||||||
const auto result = Ui::CreateChild<Ui::GradientButton>(
|
const auto result = Ui::CreateChild<Ui::GradientButton>(
|
||||||
|
@ -177,9 +179,21 @@ using Order = std::vector<QString>;
|
||||||
const auto &st = st::premiumPreviewBox.button;
|
const auto &st = st::premiumPreviewBox.button;
|
||||||
result->resize(parent->width(), st.height);
|
result->resize(parent->width(), st.height);
|
||||||
|
|
||||||
|
const auto premium = &controller->session().api().premium();
|
||||||
|
const auto computeCost = [=] {
|
||||||
|
const auto amount = premium->monthlyAmount();
|
||||||
|
const auto currency = premium->monthlyCurrency();
|
||||||
|
const auto valid = (amount > 0) && !currency.isEmpty();
|
||||||
|
return Ui::FillAmountAndCurrency(
|
||||||
|
valid ? amount : 500,
|
||||||
|
valid ? currency : "USD");
|
||||||
|
};
|
||||||
|
|
||||||
const auto label = Ui::CreateChild<Ui::FlatLabel>(
|
const auto label = Ui::CreateChild<Ui::FlatLabel>(
|
||||||
result,
|
result,
|
||||||
tr::lng_premium_summary_button(tr::now, lt_cost, "$5"),
|
tr::lng_premium_summary_button(
|
||||||
|
lt_cost,
|
||||||
|
premium->statusTextValue() | rpl::map(computeCost)),
|
||||||
st::premiumPreviewButtonLabel);
|
st::premiumPreviewButtonLabel);
|
||||||
label->setAttribute(Qt::WA_TransparentForMouseEvents);
|
label->setAttribute(Qt::WA_TransparentForMouseEvents);
|
||||||
rpl::combine(
|
rpl::combine(
|
||||||
|
@ -878,7 +892,7 @@ QPointer<Ui::RpWidget> Premium::createPinnedToBottom(
|
||||||
not_null<Ui::RpWidget*> parent) {
|
not_null<Ui::RpWidget*> parent) {
|
||||||
const auto content = Ui::CreateChild<Ui::RpWidget>(parent.get());
|
const auto content = Ui::CreateChild<Ui::RpWidget>(parent.get());
|
||||||
|
|
||||||
const auto button = CreateSubscribeButton(content, [=] {
|
const auto button = CreateSubscribeButton(_controller, content, [=] {
|
||||||
SendScreenAccept(_controller);
|
SendScreenAccept(_controller);
|
||||||
StartPremiumPayment(_controller, _ref);
|
StartPremiumPayment(_controller, _ref);
|
||||||
});
|
});
|
||||||
|
|
Loading…
Add table
Reference in a new issue