diff --git a/Telegram/SourceFiles/history/view/media/history_view_sticker.cpp b/Telegram/SourceFiles/history/view/media/history_view_sticker.cpp index e1668a29c..b4000725b 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_sticker.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_sticker.cpp @@ -85,11 +85,7 @@ Sticker::Sticker( , _data(data) , _replacements(replacements) , _cachingTag(ChatHelpers::StickerLottieSize::MessageHistory) -, _oncePlayed(false) -, _premiumEffectPlayed(false) -, _nextLastDiceFrame(false) -, _skipPremiumEffect(skipPremiumEffect) -, _giftBoxSticker(false) { +, _skipPremiumEffect(skipPremiumEffect) { if ((_dataMedia = _data->activeMediaView())) { dataMediaCreated(); } else { @@ -103,7 +99,14 @@ Sticker::Sticker( if (_player) { if (hasPremiumEffect() && !_premiumEffectPlayed) { _premiumEffectPlayed = true; - _parent->delegate()->elementStartPremium(_parent, replacing); + if (On(PowerSaving::kStickersChat) + && !_premiumEffectSkipped) { + _premiumEffectSkipped = true; + } else { + _parent->delegate()->elementStartPremium( + _parent, + replacing); + } } playerCreated(); } @@ -237,6 +240,7 @@ DocumentData *Sticker::document() { void Sticker::stickerClearLoopPlayed() { _oncePlayed = false; _premiumEffectPlayed = false; + _premiumEffectSkipped = false; } void Sticker::paintAnimationFrame( @@ -463,6 +467,10 @@ void Sticker::emojiStickerClicked() { void Sticker::premiumStickerClicked() { _premiumEffectPlayed = false; + + // Remove when we start playing sticker itself on click. + _premiumEffectSkipped = false; + _parent->history()->owner().requestViewRepaint(_parent); } @@ -528,7 +536,12 @@ void Sticker::setupPlayer() { void Sticker::checkPremiumEffectStart() { if (!_premiumEffectPlayed && hasPremiumEffect()) { _premiumEffectPlayed = true; - _parent->delegate()->elementStartPremium(_parent, nullptr); + if (On(PowerSaving::kStickersChat) + && !_premiumEffectSkipped) { + _premiumEffectSkipped = true; + } else { + _parent->delegate()->elementStartPremium(_parent, nullptr); + } } } diff --git a/Telegram/SourceFiles/history/view/media/history_view_sticker.h b/Telegram/SourceFiles/history/view/media/history_view_sticker.h index ba31304ea..86c637390 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_sticker.h +++ b/Telegram/SourceFiles/history/view/media/history_view_sticker.h @@ -129,11 +129,12 @@ private: mutable int _frameIndex = -1; mutable int _framesCount = -1; ChatHelpers::StickerLottieSize _cachingTag = {}; - mutable bool _oncePlayed : 1; - mutable bool _premiumEffectPlayed : 1; - mutable bool _nextLastDiceFrame : 1; - bool _skipPremiumEffect : 1; - bool _giftBoxSticker : 1; + mutable bool _oncePlayed : 1 = false; + mutable bool _premiumEffectPlayed : 1 = false; + mutable bool _premiumEffectSkipped : 1 = false; + mutable bool _nextLastDiceFrame : 1 = false; + bool _skipPremiumEffect : 1 = false; + bool _giftBoxSticker : 1 = false; };