diff --git a/CHANGES.md b/CHANGES.md index 1c35e70cd8..bae15ca0c0 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -44,6 +44,7 @@ Bugfix 🐛: - Fix issue with media path (#1227) - Add user to direct chat by user id (#1065) - Use correct URL for SSO connection (#1178) + - Emoji completion :tada: does not completes to 🎉 like on web (#1285) Translations 🗣: - diff --git a/vector/src/androidTest/java/im/vector/riotx/features/reactions/data/EmojiDataSourceTest.kt b/vector/src/androidTest/java/im/vector/riotx/features/reactions/data/EmojiDataSourceTest.kt index 88ca1eb01a..a3e45c3cf2 100644 --- a/vector/src/androidTest/java/im/vector/riotx/features/reactions/data/EmojiDataSourceTest.kt +++ b/vector/src/androidTest/java/im/vector/riotx/features/reactions/data/EmojiDataSourceTest.kt @@ -77,7 +77,17 @@ class EmojiDataSourceTest : InstrumentedTest { } @Test - fun testQuickReaction() { + fun testTada() { + val emojiDataSource = EmojiDataSource(context().resources) + + val result = emojiDataSource.filterWith("tada") + + assertEquals("Should find tada emoji", 1, result.size) + assertEquals("Should find tada emoji", "🎉", result[0].emoji) + } + + @Test + fun testQuickReactions() { val emojiDataSource = EmojiDataSource(context().resources) assertEquals("Should have 8 quick reactions", 8, emojiDataSource.getQuickReactions().size) diff --git a/vector/src/main/java/im/vector/riotx/features/reactions/data/EmojiDataSource.kt b/vector/src/main/java/im/vector/riotx/features/reactions/data/EmojiDataSource.kt index 1d7338e2a4..4acb8ed79e 100644 --- a/vector/src/main/java/im/vector/riotx/features/reactions/data/EmojiDataSource.kt +++ b/vector/src/main/java/im/vector/riotx/features/reactions/data/EmojiDataSource.kt @@ -32,6 +32,23 @@ class EmojiDataSource @Inject constructor( .adapter(EmojiData::class.java) .fromJson(input.bufferedReader().use { it.readText() }) } + ?.let { parsedRawData -> + // Add key as a keyword, it will solve the issue that ":tada" is not available in completion + parsedRawData.copy( + emojis = mutableMapOf().apply { + parsedRawData.emojis.keys.forEach { key -> + val origin = parsedRawData.emojis[key] ?: return@forEach + + // Do not add keys containing '_' + if (origin.keywords.contains(key) || key.contains("_")) { + put(key, origin) + } else { + put(key, origin.copy(keywords = origin.keywords + key)) + } + } + } + ) + } ?: EmojiData(emptyList(), emptyMap(), emptyMap()) private val quickReactions = mutableListOf()