Show premium page on limit increase decision.

This commit is contained in:
John Preston 2022-05-20 17:12:56 +04:00
parent dc444ec22b
commit 5cd065ef6b
10 changed files with 42 additions and 24 deletions

View file

@ -82,6 +82,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "ui/chat/attach/attach_prepare.h" #include "ui/chat/attach/attach_prepare.h"
#include "ui/toasts/common_toasts.h" #include "ui/toasts/common_toasts.h"
#include "support/support_helper.h" #include "support/support_helper.h"
#include "settings/settings_premium.h"
#include "storage/localimageloader.h" #include "storage/localimageloader.h"
#include "storage/download_manager_mtproto.h" #include "storage/download_manager_mtproto.h"
#include "storage/file_upload.h" #include "storage/file_upload.h"
@ -452,10 +453,7 @@ void ApiWrap::sendMessageFail(
: tr::lng_error_noforwards_group(tr::now) : tr::lng_error_noforwards_group(tr::now)
}, .duration = kJoinErrorDuration }); }, .duration = kJoinErrorDuration });
} else if (error.type() == qstr("PREMIUM_ACCOUNT_REQUIRED")) { } else if (error.type() == qstr("PREMIUM_ACCOUNT_REQUIRED")) {
Ui::ShowMultilineToast({ Settings::ShowPremium(&session());
.text = { u"Premium sticker."_q },
.duration = kJoinErrorDuration,
});
} }
if (const auto item = _session->data().message(itemId)) { if (const auto item = _session->data().message(itemId)) {
Assert(randomId != 0); Assert(randomId != 0);

View file

@ -1082,7 +1082,7 @@ premiumBubblePadding: margins(14px, 0px, 14px, 0px);
premiumBubbleHeight: 40px; premiumBubbleHeight: 40px;
premiumBubbleSkip: 5px; premiumBubbleSkip: 5px;
premiumBubbleTextSkip: 3px; premiumBubbleTextSkip: 3px;
premiumBubbleSlideDuration: 500; premiumBubbleSlideDuration: 1000;
premiumBubbleTailSize: size(21px, 7px); premiumBubbleTailSize: size(21px, 7px);
premiumBubbleFont: font(19px); premiumBubbleFont: font(19px);
premiumLineTextSkip: 11px; premiumLineTextSkip: 11px;

View file

@ -25,6 +25,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "data/data_session.h" #include "data/data_session.h"
#include "lang/lang_keys.h" #include "lang/lang_keys.h"
#include "settings/settings_common.h" #include "settings/settings_common.h"
#include "settings/settings_premium.h"
#include "base/unixtime.h" #include "base/unixtime.h"
#include "apiwrap.h" #include "apiwrap.h"
#include "styles/style_boxes.h" #include "styles/style_boxes.h"
@ -432,9 +433,7 @@ void SimpleLimitBox(
}); });
} else { } else {
box->addButton(tr::lng_limits_increase(), [=] { box->addButton(tr::lng_limits_increase(), [=] {
Ui::ShowMultilineToast({ Settings::ShowPremium(session);
.text = { u"Premium!"_q },
});
}); });
} }
@ -565,9 +564,7 @@ void ChannelsLimitBox(
}); });
} else { } else {
box->addButton(tr::lng_limits_increase(), [=] { box->addButton(tr::lng_limits_increase(), [=] {
Ui::ShowMultilineToast({ Settings::ShowPremium(session);
.text = { u"Premium!"_q },
});
}); });
} }
}, box->lifetime()); }, box->lifetime());

View file

@ -22,6 +22,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "lottie/lottie_icon.h" #include "lottie/lottie_icon.h"
#include "main/main_session.h" #include "main/main_session.h"
#include "settings/settings_common.h" #include "settings/settings_common.h"
#include "settings/settings_premium.h"
#include "ui/chat/chat_style.h" #include "ui/chat/chat_style.h"
#include "ui/chat/chat_theme.h" #include "ui/chat/chat_theme.h"
#include "ui/effects/scroll_content_shadow.h" #include "ui/effects/scroll_content_shadow.h"
@ -447,9 +448,7 @@ void ReactionsSettingsBox(
button->setClickedCallback([=, emoji = r.emoji] { button->setClickedCallback([=, emoji = r.emoji] {
if (premium && !controller->session().user()->isPremium()) { if (premium && !controller->session().user()->isPremium()) {
Ui::ShowMultilineToast({ Settings::ShowPremium(&controller->session());
.text = { u"Premium reaction."_q },
});
return; return;
} }
checkButton(button); checkButton(button);

View file

@ -19,6 +19,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "ui/widgets/buttons.h" #include "ui/widgets/buttons.h"
#include "ui/widgets/gradient_round_button.h" #include "ui/widgets/gradient_round_button.h"
#include "ui/wrap/padding_wrap.h" #include "ui/wrap/padding_wrap.h"
#include "settings/settings_premium.h"
#include "lottie/lottie_single_player.h" #include "lottie/lottie_single_player.h"
#include "history/view/media/history_view_sticker.h" #include "history/view/media/history_view_sticker.h"
#include "window/window_session_controller.h" #include "window/window_session_controller.h"
@ -204,7 +205,7 @@ void StickerBox(
const auto width = size - buttonPadding.left() - buttonPadding.right(); const auto width = size - buttonPadding.left() - buttonPadding.right();
auto button = CreateUnlockButton(box, width); auto button = CreateUnlockButton(box, width);
button->setClickedCallback([=] { button->setClickedCallback([=] {
controller->showSettings(); controller->showSettings(Settings::PremiumId());
}); });
box->addButton(std::move(button)); box->addButton(std::move(button));
} }

View file

@ -20,6 +20,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "history/history_item_components.h" #include "history/history_item_components.h"
#include "apiwrap.h" #include "apiwrap.h"
#include "storage/storage_account.h" #include "storage/storage_account.h"
#include "settings/settings_premium.h"
#include "core/application.h" #include "core/application.h"
#include "core/core_settings.h" #include "core/core_settings.h"
#include "main/main_session.h" #include "main/main_session.h"
@ -98,10 +99,7 @@ void MaybeShowPremiumToast(
const auto widget = QPointer<Ui::RpWidget>( const auto widget = QPointer<Ui::RpWidget>(
controller->window().widget()->bodyWidget()); controller->window().widget()->bodyWidget());
const auto filter = [=](const auto ...) { const auto filter = [=](const auto ...) {
Ui::ShowMultilineToast({ controller->showSettings(Settings::PremiumId());
.parentOverride = widget,
.text = { u"Premium!"_q },
});
return false; return false;
}; };
Ui::ShowMultilineToast({ Ui::ShowMultilineToast({

View file

@ -9,6 +9,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "lang/lang_keys.h" #include "lang/lang_keys.h"
#include "settings/settings_common.h" #include "settings/settings_common.h"
#include "settings/settings_premium.h"
#include "core/application.h"
#include "ui/abstract_button.h" #include "ui/abstract_button.h"
#include "ui/effects/gradient.h" #include "ui/effects/gradient.h"
#include "ui/text/text_utilities.h" #include "ui/text/text_utilities.h"
@ -17,6 +19,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "ui/wrap/padding_wrap.h" #include "ui/wrap/padding_wrap.h"
#include "ui/wrap/vertical_layout.h" #include "ui/wrap/vertical_layout.h"
#include "window/window_session_controller.h" #include "window/window_session_controller.h"
#include "window/window_controller.h"
#include "main/main_session.h"
#include "styles/style_boxes.h" #include "styles/style_boxes.h"
#include "styles/style_chat_helpers.h" #include "styles/style_chat_helpers.h"
#include "styles/style_layers.h" #include "styles/style_layers.h"
@ -251,4 +255,20 @@ Type PremiumId() {
return Premium::Id(); return Premium::Id();
} }
void ShowPremium(not_null<Main::Session*> session) {
const auto active = Core::App().activeWindow();
const auto controller = (active && active->isPrimary())
? active->sessionController()
: nullptr;
if (controller && session == &controller->session()) {
controller->showSettings(Settings::PremiumId());
} else {
for (const auto &controller : session->windows()) {
if (controller->window().isPrimary()) {
controller->showSettings(Settings::PremiumId());
}
}
}
}
} // namespace Settings } // namespace Settings

View file

@ -9,9 +9,15 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "settings/settings_type.h" #include "settings/settings_type.h"
namespace Main {
class Session;
} // namespace Main
namespace Settings { namespace Settings {
Type PremiumId(); [[nodiscard]] Type PremiumId();
void ShowPremium(not_null<::Main::Session*> session);
} // namespace Settings } // namespace Settings

View file

@ -303,7 +303,7 @@ BubbleWidget::BubbleWidget(
0., 0.,
1., 1.,
st::premiumBubbleSlideDuration, st::premiumBubbleSlideDuration,
anim::easeOutCubic); anim::easeOutCirc);
}, lifetime()); }, lifetime());
} }

View file

@ -20,6 +20,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "data/data_cloud_themes.h" #include "data/data_cloud_themes.h"
#include "data/data_message_reactions.h" #include "data/data_message_reactions.h"
#include "history/history_item.h" #include "history/history_item.h"
#include "settings/settings_premium.h"
#include "main/main_session.h" #include "main/main_session.h"
#include "window/section_memento.h" #include "window/section_memento.h"
#include "window/window_slide_animation.h" #include "window/window_slide_animation.h"
@ -353,9 +354,7 @@ bool ShowReactPremiumError(
if (i == end(list) || !i->premium) { if (i == end(list) || !i->premium) {
return false; return false;
} }
Ui::ShowMultilineToast({ Settings::ShowPremium(&controller->session());
.text = { u"Premium reaction."_q },
});
return true; return true;
} }