From f77f2f0dbf307a45c4f6efebaf844e104850e7a6 Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Thu, 20 Jun 2019 19:08:10 +0200 Subject: [PATCH] Fixed recent search for Heart emoji --- .../TelegramUI/ChatInterfaceStateContextQueries.swift | 2 +- submodules/TelegramUI/TelegramUI/EmojiUtils.swift | 8 ++++++++ .../TelegramUI/StickerPaneSearchContentNode.swift | 4 ++-- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/submodules/TelegramUI/TelegramUI/ChatInterfaceStateContextQueries.swift b/submodules/TelegramUI/TelegramUI/ChatInterfaceStateContextQueries.swift index 290f7aad6c..b357ecfa26 100644 --- a/submodules/TelegramUI/TelegramUI/ChatInterfaceStateContextQueries.swift +++ b/submodules/TelegramUI/TelegramUI/ChatInterfaceStateContextQueries.swift @@ -83,7 +83,7 @@ private func updatedContextQueryResultStateForQuery(context: AccountContext, pee case .installed: scope = [.installed] } - return searchStickers(account: context.account, query: query, scope: scope) + return searchStickers(account: context.account, query: query.trimmedEmoji, scope: scope) } |> map { stickers -> (ChatPresentationInputQueryResult?) -> ChatPresentationInputQueryResult? in return { _ in diff --git a/submodules/TelegramUI/TelegramUI/EmojiUtils.swift b/submodules/TelegramUI/TelegramUI/EmojiUtils.swift index 628ae1fed9..6cd4d4144a 100644 --- a/submodules/TelegramUI/TelegramUI/EmojiUtils.swift +++ b/submodules/TelegramUI/TelegramUI/EmojiUtils.swift @@ -135,4 +135,12 @@ extension String { } return string } + + var trimmedEmoji: String { + if self.unicodeScalars.count > 1, self.unicodeScalars.first?.value == 0x2764 { + return String(self.unicodeScalars.prefix(self.unicodeScalars.count - 1)) + } else { + return self + } + } } diff --git a/submodules/TelegramUI/TelegramUI/StickerPaneSearchContentNode.swift b/submodules/TelegramUI/TelegramUI/StickerPaneSearchContentNode.swift index c038c59c41..d36a8ff2da 100644 --- a/submodules/TelegramUI/TelegramUI/StickerPaneSearchContentNode.swift +++ b/submodules/TelegramUI/TelegramUI/StickerPaneSearchContentNode.swift @@ -267,7 +267,7 @@ final class StickerPaneSearchContentNode: ASDisplayNode, PaneSearchContentNode { let query = text.trimmingCharacters(in: .whitespacesAndNewlines) if query.isSingleEmoji { - signals = .single([searchStickers(account: account, query: text) + signals = .single([searchStickers(account: account, query: text.trimmedEmoji) |> take(1) |> map { (nil, $0) }]) } else if query.count > 1, let languageCode = languageCode, !languageCode.isEmpty && languageCode != "emoji" { @@ -290,7 +290,7 @@ final class StickerPaneSearchContentNode: ASDisplayNode, PaneSearchContentNode { var signals: [Signal<(String?, [FoundStickerItem]), NoError>] = [] let emoticons = keywords.flatMap { $0.emoticons } for emoji in emoticons { - signals.append(searchStickers(account: self.context.account, query: emoji) + signals.append(searchStickers(account: self.context.account, query: emoji.trimmedEmoji) |> take(1) |> map { (emoji, $0) }) }