diff --git a/submodules/ReactionSelectionNode/Sources/ReactionContextNode.swift b/submodules/ReactionSelectionNode/Sources/ReactionContextNode.swift index 38cd2fdb84..368de29228 100644 --- a/submodules/ReactionSelectionNode/Sources/ReactionContextNode.swift +++ b/submodules/ReactionSelectionNode/Sources/ReactionContextNode.swift @@ -2028,14 +2028,17 @@ public final class ReactionContextNode: ASDisplayNode, ASScrollViewDelegate { )) return .single(resultGroups) } else { + let remoteSignal = context.engine.stickers.searchEmoji(emojiString: Array(allEmoticons.keys)) + return combineLatest( context.account.postbox.itemCollectionsView(orderedItemListCollectionIds: [], namespaces: [Namespaces.ItemCollection.CloudEmojiPacks], aroundIndex: nil, count: 10000000) |> take(1), context.engine.stickers.availableReactions() |> take(1), hasPremium |> take(1), remotePacksSignal, + remoteSignal, localPacksSignal ) - |> map { view, availableReactions, hasPremium, foundPacks, foundLocalPacks -> [EmojiPagerContentComponent.ItemGroup] in + |> map { view, availableReactions, hasPremium, foundPacks, foundEmoji, foundLocalPacks -> [EmojiPagerContentComponent.ItemGroup] in var result: [(String, TelegramMediaFile?, String)] = [] var allEmoticons: [String: String] = [:] @@ -2045,6 +2048,21 @@ public final class ReactionContextNode: ASDisplayNode, ASScrollViewDelegate { } } + for itemFile in foundEmoji.items { + for attribute in itemFile.attributes { + switch attribute { + case let .CustomEmoji(_, _, alt, _): + if !alt.isEmpty, let keyword = allEmoticons[alt] { + result.append((alt, itemFile, keyword)) + } else if alt == query { + result.append((alt, itemFile, alt)) + } + default: + break + } + } + } + for entry in view.entries { guard let item = entry.item as? StickerPackItem else { continue