diff --git a/Telegram/SourceFiles/info/profile/info_profile_cover.cpp b/Telegram/SourceFiles/info/profile/info_profile_cover.cpp index bbd71fb24b..5ecdd5b473 100644 --- a/Telegram/SourceFiles/info/profile/info_profile_cover.cpp +++ b/Telegram/SourceFiles/info/profile/info_profile_cover.cpp @@ -87,10 +87,12 @@ BadgeView::BadgeView( const style::InfoPeerBadge &st, not_null peer, Fn animationPaused, + int customStatusLoopsLimit, base::flags allowed) : _parent(parent) , _st(st) , _peer(peer) +, _customStatusLoopsLimit(customStatusLoopsLimit) , _allowed(allowed) , _animationPaused(std::move(animationPaused)) { rpl::combine( @@ -144,6 +146,11 @@ void BadgeView::setBadge(Badge badge, DocumentId emojiStatusId) { _emojiStatusId, [raw = _view.data()] { raw->update(); }, tag); + if (_customStatusLoopsLimit > 0) { + _emojiStatus = std::make_unique( + std::move(_emojiStatus), + _customStatusLoopsLimit); + } _emojiStatusColored = std::make_unique< Ui::Text::CustomEmojiColored >(); diff --git a/Telegram/SourceFiles/info/profile/info_profile_cover.h b/Telegram/SourceFiles/info/profile/info_profile_cover.h index aa4ae0fdc4..63549f41b6 100644 --- a/Telegram/SourceFiles/info/profile/info_profile_cover.h +++ b/Telegram/SourceFiles/info/profile/info_profile_cover.h @@ -61,6 +61,7 @@ public: const style::InfoPeerBadge &st, not_null peer, Fn animationPaused, + int customStatusLoopsLimit = 0, base::flags allowed = base::flags::from_raw(-1)); [[nodiscard]] Ui::RpWidget *widget() const; @@ -75,6 +76,7 @@ private: const not_null _parent; const style::InfoPeerBadge &_st; const not_null _peer; + const int _customStatusLoopsLimit = 0; DocumentId _emojiStatusId = 0; std::unique_ptr _emojiStatus; std::unique_ptr _emojiStatusColored; diff --git a/Telegram/SourceFiles/settings/settings_information.cpp b/Telegram/SourceFiles/settings/settings_information.cpp index 387050202a..c35124a60d 100644 --- a/Telegram/SourceFiles/settings/settings_information.cpp +++ b/Telegram/SourceFiles/settings/settings_information.cpp @@ -64,6 +64,7 @@ namespace Settings { namespace { constexpr auto kSaveBioTimeout = 1000; +constexpr auto kPlayStatusLimit = 2; class ComposedBadge final : public Ui::RpWidget { public: @@ -99,6 +100,7 @@ ComposedBadge::ComposedBadge( st::settingsInfoPeerBadge, session->user(), std::move(animationPaused), + kPlayStatusLimit, Info::Profile::Badge::Premium) { if (hasUnread) { _unread = CreateUnread(this, rpl::single( diff --git a/Telegram/SourceFiles/settings/settings_main.cpp b/Telegram/SourceFiles/settings/settings_main.cpp index a83514ec6a..f4a73cfc35 100644 --- a/Telegram/SourceFiles/settings/settings_main.cpp +++ b/Telegram/SourceFiles/settings/settings_main.cpp @@ -114,6 +114,7 @@ Cover::Cover( return controller->isGifPausedAtLeastFor( Window::GifPauseReason::Layer); }, + 0, // customStatusLoopsLimit Info::Profile::Badge::Premium) , _userpic( this, diff --git a/Telegram/SourceFiles/window/window_main_menu.cpp b/Telegram/SourceFiles/window/window_main_menu.cpp index 2c9b245899..15ecb95831 100644 --- a/Telegram/SourceFiles/window/window_main_menu.cpp +++ b/Telegram/SourceFiles/window/window_main_menu.cpp @@ -73,6 +73,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL namespace Window { namespace { +constexpr auto kPlayStatusLimit = 2; + void ShowCallsBox(not_null window) { auto controller = std::make_unique(window); const auto initBox = [ @@ -341,6 +343,7 @@ MainMenu::MainMenu( st::settingsInfoPeerBadge, controller->session().user(), [=] { return controller->isGifPausedAtLeastFor(GifPauseReason::Layer); }, + kPlayStatusLimit, Info::Profile::Badge::Premium)) , _emojiStatusPanel(std::make_unique()) , _scroll(this, st::defaultSolidScroll)