diff --git a/Telegram/SourceFiles/chat_helpers/emoji_list_widget.cpp b/Telegram/SourceFiles/chat_helpers/emoji_list_widget.cpp index 931b84382..9735a6367 100644 --- a/Telegram/SourceFiles/chat_helpers/emoji_list_widget.cpp +++ b/Telegram/SourceFiles/chat_helpers/emoji_list_widget.cpp @@ -505,10 +505,12 @@ void EmojiListWidget::applyNextSearchQuery() { } _searchResults.clear(); _searchCustomIds.clear(); - if (_mode == Mode::EmojiStatus || session().premium()) { + if ((_mode == Mode::EmojiStatus) + || (_mode == Mode::UserpicBuilder) + || session().premium()) { appendPremiumSearchResults(); } - if (_mode != Mode::EmojiStatus) { + if (_mode != Mode::EmojiStatus && _mode != Mode::UserpicBuilder) { for (const auto emoji : plain) { _searchResults.push_back({ .id = { emoji }, diff --git a/Telegram/SourceFiles/info/userpic/info_userpic_emoji_builder_widget.cpp b/Telegram/SourceFiles/info/userpic/info_userpic_emoji_builder_widget.cpp index 8e1abf6ae..42a16aa82 100644 --- a/Telegram/SourceFiles/info/userpic/info_userpic_emoji_builder_widget.cpp +++ b/Telegram/SourceFiles/info/userpic/info_userpic_emoji_builder_widget.cpp @@ -157,14 +157,15 @@ private: not_null footer; }; [[nodiscard]] Selector createEmojiList( - not_null scroll) const; + not_null scroll); [[nodiscard]] Selector createStickersList( not_null scroll) const; const not_null _controller; base::unique_qptr _container; - rpl::variable> _recent; + rpl::event_stream<> _recentChanges; + std::vector _lastRecent; rpl::event_stream> _chosen; }; @@ -174,8 +175,13 @@ EmojiSelector::EmojiSelector( not_null controller, rpl::producer> recent) : RpWidget(parent) -, _controller(controller) -, _recent(std::move(recent)) { +, _controller(controller) { + std::move( + recent + ) | rpl::start_with_next([=](std::vector ids) { + _lastRecent = std::move(ids); + _recentChanges.fire({}); + }, lifetime()); createSelector(Type::Emoji); } @@ -184,7 +190,7 @@ rpl::producer> EmojiSelector::chosen() const { } EmojiSelector::Selector EmojiSelector::createEmojiList( - not_null scroll) const { + not_null scroll) { const auto session = &_controller->session(); const auto manager = &session->data().customEmojiManager(); const auto tag = Data::CustomEmojiManager::SizeTag::Large; @@ -193,7 +199,7 @@ EmojiSelector::Selector EmojiSelector::createEmojiList( .mode = ChatHelpers::EmojiListMode::UserpicBuilder, .controller = _controller, .paused = [=] { return true; }, - .customRecentList = _recent.current(), + .customRecentList = _lastRecent, .customRecentFactory = [=](DocumentId id, Fn repaint) { return manager->create(id, std::move(repaint), tag); }, @@ -207,6 +213,10 @@ EmojiSelector::Selector EmojiSelector::createEmojiList( ) | rpl::start_with_next([=](const ChatHelpers::FileChosen &chosen) { _chosen.fire_copy(chosen.document); }, list->lifetime()); + _recentChanges.events( + ) | rpl::start_with_next([=] { + createSelector(Type::Emoji); + }, list->lifetime()); return { list, footer }; }