mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-21 09:20:19 +01:00
Allow variation selection in emoji search results.
This commit is contained in:
@@ -25,25 +25,9 @@ class EmojiSearchRepository(private val context: Context) {
|
||||
SignalExecutors.SERIAL.execute {
|
||||
val emoji: List<String> = emojiSearchDatabase.query(query, EMOJI_SEARCH_LIMIT)
|
||||
|
||||
val variationMap: Map<String, String> = EmojiSource.latest.variationMap
|
||||
val emojiVariationSets: MutableMap<String, LinkedHashSet<String>> = mutableMapOf()
|
||||
|
||||
variationMap
|
||||
.filterKeys { emoji.contains(it) }
|
||||
.forEach { (variation, canonical) ->
|
||||
val set: LinkedHashSet<String> = emojiVariationSets.getOrDefault(canonical, linkedSetOf())
|
||||
|
||||
set.add(variation)
|
||||
emojiVariationSets[canonical] = set
|
||||
}
|
||||
|
||||
val displayEmoji: List<Emoji> = emoji.map { canonical ->
|
||||
val variationSet: LinkedHashSet<String> = linkedSetOf(canonical).apply {
|
||||
addAll(emojiVariationSets.getOrDefault(canonical, linkedSetOf()))
|
||||
}
|
||||
|
||||
Emoji(variationSet.toList())
|
||||
}
|
||||
val displayEmoji: List<Emoji> = emoji
|
||||
.mapNotNull { canonical -> EmojiSource.latest.canonicalToVariations[canonical] }
|
||||
.map { Emoji(it) }
|
||||
|
||||
consumer(EmojiSearchResultsPageModel(emoji, displayEmoji))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user