From 568640f83057f067abd7178c6e75db7c1e84ce9d Mon Sep 17 00:00:00 2001 From: John Preston Date: Tue, 31 May 2022 21:11:44 +0400 Subject: [PATCH] Hide subscribe button if premium. --- .../SourceFiles/settings/settings_premium.cpp | 31 ++++++++++++++----- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/Telegram/SourceFiles/settings/settings_premium.cpp b/Telegram/SourceFiles/settings/settings_premium.cpp index 3236bf446..569cd7fa4 100644 --- a/Telegram/SourceFiles/settings/settings_premium.cpp +++ b/Telegram/SourceFiles/settings/settings_premium.cpp @@ -833,28 +833,28 @@ QPointer Premium::createPinnedToTop( QPointer Premium::createPinnedToBottom( not_null parent) { - - const auto content = Ui::CreateChild(parent.get()); + const auto content = Ui::CreateChild(parent.get()); auto result = object_ptr( content, Ui::Premium::ButtonGradientStops()); + const auto raw = result.data(); - result->setClickedCallback([=] { + raw->setClickedCallback([=] { SendScreenAccept(_controller); StartPremiumPayment(_controller, _ref); }); const auto &st = st::premiumPreviewBox.button; - result->resize(content->width(), st.height); + raw->resize(content->width(), st.height); const auto label = Ui::CreateChild( - result.data(), + raw, tr::lng_premium_summary_button(tr::now, lt_cost, "$5"), st::premiumPreviewButtonLabel); label->setAttribute(Qt::WA_TransparentForMouseEvents); rpl::combine( - result->widthValue(), + raw->widthValue(), label->widthValue() ) | rpl::start_with_next([=](int outer, int width) { label->moveToLeft( @@ -862,7 +862,24 @@ QPointer Premium::createPinnedToBottom( st::premiumPreviewBox.button.textTop, outer); }, label->lifetime()); - content->add(std::move(result), st::settingsPremiumButtonPadding); + + content->widthValue( + ) | rpl::start_with_next([=](int width) { + const auto padding = st::settingsPremiumButtonPadding; + raw->resizeToWidth(width - padding.left() - padding.right()); + }, raw->lifetime()); + + rpl::combine( + raw->heightValue(), + Data::AmPremiumValue(&_controller->session()) + ) | rpl::start_with_next([=](int height, bool premium) { + const auto padding = st::settingsPremiumButtonPadding; + const auto finalHeight = premium + ? 0 + : (padding.top() + height + padding.bottom()); + content->resize(content->width(), finalHeight); + raw->moveToLeft(padding.left(), padding.top()); + }, raw->lifetime()); return Ui::MakeWeak(not_null{ content }); }