Don't allow gifting premium if can't buy.

This commit is contained in:
John Preston 2024-01-02 00:12:51 +04:00
parent a4d7309209
commit 5e255e56eb
4 changed files with 9 additions and 3 deletions

View file

@ -240,7 +240,7 @@ bool Session::premium() const {
} }
bool Session::premiumPossible() const { bool Session::premiumPossible() const {
return premium() || _premiumPossible.current(); return premium() || premiumCanBuy();
} }
bool Session::premiumBadgesShown() const { bool Session::premiumBadgesShown() const {
@ -262,6 +262,10 @@ rpl::producer<bool> Session::premiumPossibleValue() const {
_1 || _2); _1 || _2);
} }
bool Session::premiumCanBuy() const {
return _premiumPossible.current();
}
bool Session::isTestMode() const { bool Session::isTestMode() const {
return mtp().isTestMode(); return mtp().isTestMode();
} }

View file

@ -87,6 +87,7 @@ public:
[[nodiscard]] bool premiumPossible() const; [[nodiscard]] bool premiumPossible() const;
[[nodiscard]] rpl::producer<bool> premiumPossibleValue() const; [[nodiscard]] rpl::producer<bool> premiumPossibleValue() const;
[[nodiscard]] bool premiumBadgesShown() const; [[nodiscard]] bool premiumBadgesShown() const;
[[nodiscard]] bool premiumCanBuy() const;
[[nodiscard]] bool isTestMode() const; [[nodiscard]] bool isTestMode() const;
[[nodiscard]] uint64 uniqueId() const; // userId() with TestDC shift. [[nodiscard]] uint64 uniqueId() const; // userId() with TestDC shift.

View file

@ -419,7 +419,7 @@ void SetupPremium(
controller->setPremiumRef("settings"); controller->setPremiumRef("settings");
showOther(PremiumId()); showOther(PremiumId());
}); });
{ if (controller->session().premiumCanBuy()) {
const auto button = AddButtonWithIcon( const auto button = AddButtonWithIcon(
container, container,
tr::lng_settings_gift_premium(), tr::lng_settings_gift_premium(),

View file

@ -1124,7 +1124,8 @@ void Filler::addGiftPremium() {
|| user->isBot() || user->isBot()
|| user->isNotificationsUser() || user->isNotificationsUser()
|| !user->canReceiveGifts() || !user->canReceiveGifts()
|| user->isRepliesChat()) { || user->isRepliesChat()
|| !user->session().premiumCanBuy()) {
return; return;
} }