From b325d60fda0912f1baa285ef3501ba8a22b48784 Mon Sep 17 00:00:00 2001 From: sowjanyakch Date: Mon, 5 May 2025 17:54:45 +0200 Subject: [PATCH 1/9] use recently used emojis Signed-off-by: sowjanyakch --- .../talk/ui/dialog/MessageActionsDialog.kt | 50 +++++++++++-------- 1 file changed, 28 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt b/app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt index f9a3c475e..b591a3faf 100644 --- a/app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt +++ b/app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt @@ -45,6 +45,7 @@ import com.vanniktech.emoji.EmojiPopup import com.vanniktech.emoji.EmojiTextView import com.vanniktech.emoji.installDisableKeyboardInput import com.vanniktech.emoji.installForceSingleEmoji +import com.vanniktech.emoji.recent.RecentEmojiManager import io.reactivex.Observer import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.Disposable @@ -246,29 +247,34 @@ class MessageActionsDialog( isPermitted(hasChatPermission) && isReactableMessageType(message) ) { - checkAndSetEmojiSelfReaction(dialogMessageActionsBinding.emojiThumbsUp) - dialogMessageActionsBinding.emojiThumbsUp.setOnClickListener { - clickOnEmoji(message, dialogMessageActionsBinding.emojiThumbsUp.text.toString()) + val recentEmojiManager = RecentEmojiManager(context, 6) + val topEmojis = recentEmojiManager.getRecentEmojis() + + val emojiTextViews = listOf( + dialogMessageActionsBinding.emojiThumbsUp, + dialogMessageActionsBinding.emojiThumbsDown, + dialogMessageActionsBinding.emojiHeart, + dialogMessageActionsBinding.emojiLaugh, + dialogMessageActionsBinding.emojiConfused, + dialogMessageActionsBinding.emojiSad + ) + + val fallbackEmojis = listOf("👍", "👎", "❤️", "😂", "😕", "😢") + val emojisToDisplay = if (topEmojis.isNotEmpty()) { + topEmojis.map { it.unicode } + } else { + fallbackEmojis } - checkAndSetEmojiSelfReaction(dialogMessageActionsBinding.emojiThumbsDown) - dialogMessageActionsBinding.emojiThumbsDown.setOnClickListener { - clickOnEmoji(message, dialogMessageActionsBinding.emojiThumbsDown.text.toString()) - } - checkAndSetEmojiSelfReaction(dialogMessageActionsBinding.emojiLaugh) - dialogMessageActionsBinding.emojiLaugh.setOnClickListener { - clickOnEmoji(message, dialogMessageActionsBinding.emojiLaugh.text.toString()) - } - checkAndSetEmojiSelfReaction(dialogMessageActionsBinding.emojiHeart) - dialogMessageActionsBinding.emojiHeart.setOnClickListener { - clickOnEmoji(message, dialogMessageActionsBinding.emojiHeart.text.toString()) - } - checkAndSetEmojiSelfReaction(dialogMessageActionsBinding.emojiConfused) - dialogMessageActionsBinding.emojiConfused.setOnClickListener { - clickOnEmoji(message, dialogMessageActionsBinding.emojiConfused.text.toString()) - } - checkAndSetEmojiSelfReaction(dialogMessageActionsBinding.emojiSad) - dialogMessageActionsBinding.emojiSad.setOnClickListener { - clickOnEmoji(message, dialogMessageActionsBinding.emojiSad.text.toString()) + + emojiTextViews.forEachIndexed { index, textView -> + val emoji = emojisToDisplay.getOrNull(index) + if (emoji != null) { + textView.text = emoji + checkAndSetEmojiSelfReaction(textView) + textView.setOnClickListener { + clickOnEmoji(message, emoji) + } + } } dialogMessageActionsBinding.emojiMore.setOnClickListener { From 44cbb020a87e4c9d6c346c183e9168a4b7ef6dae Mon Sep 17 00:00:00 2001 From: sowjanyakch Date: Tue, 6 May 2025 20:47:09 +0200 Subject: [PATCH 2/9] make emojis clickable Signed-off-by: sowjanyakch --- .../talk/ui/dialog/MessageActionsDialog.kt | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt b/app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt index b591a3faf..af135c107 100644 --- a/app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt +++ b/app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt @@ -41,6 +41,8 @@ import com.nextcloud.talk.utils.ConversationUtils import com.nextcloud.talk.utils.DateConstants import com.nextcloud.talk.utils.DateUtils import com.nextcloud.talk.utils.SpreedFeatures +import com.vanniktech.emoji.Emoji +import com.vanniktech.emoji.EmojiManager import com.vanniktech.emoji.EmojiPopup import com.vanniktech.emoji.EmojiTextView import com.vanniktech.emoji.installDisableKeyboardInput @@ -248,7 +250,12 @@ class MessageActionsDialog( isReactableMessageType(message) ) { val recentEmojiManager = RecentEmojiManager(context, 6) - val topEmojis = recentEmojiManager.getRecentEmojis() + val recentEmojis = recentEmojiManager.getRecentEmojis().map { it.unicode } + val fallbackEmojis = listOf("👍", "👎", "❤️", "😂", "😕", "😢") + + val combinedEmojis = (recentEmojis + fallbackEmojis) + .distinct() + .take(6) val emojiTextViews = listOf( dialogMessageActionsBinding.emojiThumbsUp, @@ -259,21 +266,17 @@ class MessageActionsDialog( dialogMessageActionsBinding.emojiSad ) - val fallbackEmojis = listOf("👍", "👎", "❤️", "😂", "😕", "😢") - val emojisToDisplay = if (topEmojis.isNotEmpty()) { - topEmojis.map { it.unicode } - } else { - fallbackEmojis - } - emojiTextViews.forEachIndexed { index, textView -> - val emoji = emojisToDisplay.getOrNull(index) + val emoji = combinedEmojis.getOrNull(index) if (emoji != null) { textView.text = emoji checkAndSetEmojiSelfReaction(textView) textView.setOnClickListener { clickOnEmoji(message, emoji) } + textView.visibility = View.VISIBLE + } else { + textView.visibility = View.INVISIBLE } } From 544b8efea3d2aa7907f8c21c651ff052de39d202 Mon Sep 17 00:00:00 2001 From: sowjanyakch Date: Wed, 7 May 2025 09:46:38 +0200 Subject: [PATCH 3/9] refactor Signed-off-by: sowjanyakch --- .../java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt b/app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt index af135c107..cb1070afc 100644 --- a/app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt +++ b/app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt @@ -41,8 +41,6 @@ import com.nextcloud.talk.utils.ConversationUtils import com.nextcloud.talk.utils.DateConstants import com.nextcloud.talk.utils.DateUtils import com.nextcloud.talk.utils.SpreedFeatures -import com.vanniktech.emoji.Emoji -import com.vanniktech.emoji.EmojiManager import com.vanniktech.emoji.EmojiPopup import com.vanniktech.emoji.EmojiTextView import com.vanniktech.emoji.installDisableKeyboardInput @@ -276,7 +274,7 @@ class MessageActionsDialog( } textView.visibility = View.VISIBLE } else { - textView.visibility = View.INVISIBLE + textView.visibility = View.GONE } } From e63e1de7bc1694e736fc167c124fc2060aa9af8c Mon Sep 17 00:00:00 2001 From: sowjanyakch Date: Wed, 7 May 2025 12:36:43 +0200 Subject: [PATCH 4/9] avoid duplications Signed-off-by: sowjanyakch --- .../talk/ui/dialog/MessageActionsDialog.kt | 42 +++++++++++++++---- .../res/layout/dialog_message_actions.xml | 2 +- 2 files changed, 35 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt b/app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt index cb1070afc..460dee143 100644 --- a/app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt +++ b/app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt @@ -41,11 +41,13 @@ import com.nextcloud.talk.utils.ConversationUtils import com.nextcloud.talk.utils.DateConstants import com.nextcloud.talk.utils.DateUtils import com.nextcloud.talk.utils.SpreedFeatures +import com.vanniktech.emoji.Emoji import com.vanniktech.emoji.EmojiPopup import com.vanniktech.emoji.EmojiTextView import com.vanniktech.emoji.installDisableKeyboardInput import com.vanniktech.emoji.installForceSingleEmoji import com.vanniktech.emoji.recent.RecentEmojiManager +import com.vanniktech.emoji.search.SearchEmojiManager import io.reactivex.Observer import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.Disposable @@ -247,13 +249,32 @@ class MessageActionsDialog( isPermitted(hasChatPermission) && isReactableMessageType(message) ) { - val recentEmojiManager = RecentEmojiManager(context, 6) - val recentEmojis = recentEmojiManager.getRecentEmojis().map { it.unicode } - val fallbackEmojis = listOf("👍", "👎", "❤️", "😂", "😕", "😢") + val recentEmojiManager = RecentEmojiManager(context,6) + val recentEmojis = recentEmojiManager.getRecentEmojis() + val searchEmojiManager = SearchEmojiManager() - val combinedEmojis = (recentEmojis + fallbackEmojis) - .distinct() - .take(6) + val initialSearchKeywords = listOf("thumbsup", "thumbsdown", "heart", "joy", "confused", "cry") + val initialEmojisFromSearch = mutableSetOf() + + initialSearchKeywords.forEach { keyword -> + val searchResults = searchEmojiManager.search(keyword) + if (searchResults.isNotEmpty()) { + initialEmojisFromSearch.add(searchResults[0].component1()) + } + if (initialEmojisFromSearch.size >= 6) { + return@forEach + } + } + val combinedEmojis = (recentEmojis + initialEmojisFromSearch).toList().distinct().take(6) + + val emojiSearchKeywords = mapOf( + "👍" to "thumbsup", + "👎" to "thumbsdown", + "❤️" to "heart", + "😂" to "joy", + "😕" to "confused", + "😢" to "cry" + ) val emojiTextViews = listOf( dialogMessageActionsBinding.emojiThumbsUp, @@ -261,16 +282,21 @@ class MessageActionsDialog( dialogMessageActionsBinding.emojiHeart, dialogMessageActionsBinding.emojiLaugh, dialogMessageActionsBinding.emojiConfused, - dialogMessageActionsBinding.emojiSad + dialogMessageActionsBinding.emojiCry ) emojiTextViews.forEachIndexed { index, textView -> - val emoji = combinedEmojis.getOrNull(index) + val emoji = combinedEmojis.getOrNull(index)?.unicode if (emoji != null) { textView.text = emoji checkAndSetEmojiSelfReaction(textView) textView.setOnClickListener { clickOnEmoji(message, emoji) + val keyword = emojiSearchKeywords[emoji] ?: "" + val result = SearchEmojiManager().search(keyword) + if (result.isNotEmpty()) { + recentEmojiManager.addEmoji(result[0].component1()) + } } textView.visibility = View.VISIBLE } else { diff --git a/app/src/main/res/layout/dialog_message_actions.xml b/app/src/main/res/layout/dialog_message_actions.xml index dda9cea8f..a9027197e 100644 --- a/app/src/main/res/layout/dialog_message_actions.xml +++ b/app/src/main/res/layout/dialog_message_actions.xml @@ -84,7 +84,7 @@ android:textSize="20sp" /> Date: Wed, 7 May 2025 12:40:07 +0200 Subject: [PATCH 5/9] ktlintFormat Signed-off-by: sowjanyakch --- .../java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt b/app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt index 460dee143..c45339a0a 100644 --- a/app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt +++ b/app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt @@ -249,7 +249,7 @@ class MessageActionsDialog( isPermitted(hasChatPermission) && isReactableMessageType(message) ) { - val recentEmojiManager = RecentEmojiManager(context,6) + val recentEmojiManager = RecentEmojiManager(context, 6) val recentEmojis = recentEmojiManager.getRecentEmojis() val searchEmojiManager = SearchEmojiManager() From 245280615c9fb0130b883a9ab094483fc352a826 Mon Sep 17 00:00:00 2001 From: sowjanyakch Date: Wed, 7 May 2025 17:06:05 +0200 Subject: [PATCH 6/9] add more emojis Signed-off-by: sowjanyakch --- .../talk/ui/dialog/MessageActionsDialog.kt | 17 ++++++---- .../res/layout/dialog_message_actions.xml | 31 ++++++++++++++++++- app/src/main/res/values/strings.xml | 2 ++ 3 files changed, 43 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt b/app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt index c45339a0a..f3135f6c6 100644 --- a/app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt +++ b/app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt @@ -249,11 +249,12 @@ class MessageActionsDialog( isPermitted(hasChatPermission) && isReactableMessageType(message) ) { - val recentEmojiManager = RecentEmojiManager(context, 6) + val recentEmojiManager = RecentEmojiManager(context, 8) val recentEmojis = recentEmojiManager.getRecentEmojis() val searchEmojiManager = SearchEmojiManager() - val initialSearchKeywords = listOf("thumbsup", "thumbsdown", "heart", "joy", "confused", "cry") + val initialSearchKeywords = listOf("thumbsup", "thumbsdown", "heart", "joy", "confused", "cry","pray", + "fire") val initialEmojisFromSearch = mutableSetOf() initialSearchKeywords.forEach { keyword -> @@ -261,11 +262,11 @@ class MessageActionsDialog( if (searchResults.isNotEmpty()) { initialEmojisFromSearch.add(searchResults[0].component1()) } - if (initialEmojisFromSearch.size >= 6) { + if (initialEmojisFromSearch.size >= 8) { return@forEach } } - val combinedEmojis = (recentEmojis + initialEmojisFromSearch).toList().distinct().take(6) + val combinedEmojis = (recentEmojis + initialEmojisFromSearch).toList().distinct().take(8) val emojiSearchKeywords = mapOf( "👍" to "thumbsup", @@ -273,7 +274,9 @@ class MessageActionsDialog( "❤️" to "heart", "😂" to "joy", "😕" to "confused", - "😢" to "cry" + "😢" to "cry", + "🙏" to "pray", + "🔥" to "fire" ) val emojiTextViews = listOf( @@ -282,7 +285,9 @@ class MessageActionsDialog( dialogMessageActionsBinding.emojiHeart, dialogMessageActionsBinding.emojiLaugh, dialogMessageActionsBinding.emojiConfused, - dialogMessageActionsBinding.emojiCry + dialogMessageActionsBinding.emojiCry, + dialogMessageActionsBinding.emojiPray, + dialogMessageActionsBinding.emojiFire ) emojiTextViews.forEachIndexed { index, textView -> diff --git a/app/src/main/res/layout/dialog_message_actions.xml b/app/src/main/res/layout/dialog_message_actions.xml index a9027197e..9500c1d1a 100644 --- a/app/src/main/res/layout/dialog_message_actions.xml +++ b/app/src/main/res/layout/dialog_message_actions.xml @@ -17,9 +17,15 @@ android:layout_width="match_parent" android:layout_height="wrap_content" /> + + + + + + + ❤️ 😯 😢 + 🙏 + 🔥 More emojis Don\'t clear Today From 5a4d09da5c84f566101467bc79db9dda9db752fa Mon Sep 17 00:00:00 2001 From: sowjanyakch Date: Wed, 7 May 2025 18:17:37 +0200 Subject: [PATCH 7/9] add some default recents Signed-off-by: sowjanyakch --- .../com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt b/app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt index f3135f6c6..0ee8a04b2 100644 --- a/app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt +++ b/app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt @@ -261,6 +261,7 @@ class MessageActionsDialog( val searchResults = searchEmojiManager.search(keyword) if (searchResults.isNotEmpty()) { initialEmojisFromSearch.add(searchResults[0].component1()) + recentEmojiManager.addEmoji(searchResults[0].component1()) } if (initialEmojisFromSearch.size >= 8) { return@forEach @@ -301,9 +302,12 @@ class MessageActionsDialog( val result = SearchEmojiManager().search(keyword) if (result.isNotEmpty()) { recentEmojiManager.addEmoji(result[0].component1()) + recentEmojiManager.persist() } } + textView.visibility = View.VISIBLE + } else { textView.visibility = View.GONE } @@ -508,6 +512,7 @@ class MessageActionsDialog( .subscribeOn(Schedulers.io()) ?.observeOn(AndroidSchedulers.mainThread()) ?.subscribe(ReactionDeletedObserver()) + } else { reactionsRepository.addReaction(currentConversation!!.token!!, message, emoji) .subscribeOn(Schedulers.io()) From eb0e205090997f40e11e63770acd5bda1860ba86 Mon Sep 17 00:00:00 2001 From: sowjanyakch Date: Wed, 7 May 2025 18:20:56 +0200 Subject: [PATCH 8/9] add constants Signed-off-by: sowjanyakch --- .../talk/ui/dialog/MessageActionsDialog.kt | 29 ++++++++++++------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt b/app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt index 0ee8a04b2..a540cc7f9 100644 --- a/app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt +++ b/app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt @@ -249,25 +249,33 @@ class MessageActionsDialog( isPermitted(hasChatPermission) && isReactableMessageType(message) ) { - val recentEmojiManager = RecentEmojiManager(context, 8) + val recentEmojiManager = RecentEmojiManager(context, MAX_RECENTS) val recentEmojis = recentEmojiManager.getRecentEmojis() val searchEmojiManager = SearchEmojiManager() - val initialSearchKeywords = listOf("thumbsup", "thumbsdown", "heart", "joy", "confused", "cry","pray", - "fire") + val initialSearchKeywords = listOf( + "thumbsup", + "thumbsdown", + "heart", + "joy", + "confused", + "cry", + "pray", + "fire" + ) val initialEmojisFromSearch = mutableSetOf() initialSearchKeywords.forEach { keyword -> val searchResults = searchEmojiManager.search(keyword) if (searchResults.isNotEmpty()) { - initialEmojisFromSearch.add(searchResults[0].component1()) - recentEmojiManager.addEmoji(searchResults[0].component1()) + initialEmojisFromSearch.add(searchResults[ZERO_INDEX].component1()) + recentEmojiManager.addEmoji(searchResults[ZERO_INDEX].component1()) } - if (initialEmojisFromSearch.size >= 8) { + if (initialEmojisFromSearch.size >= MAX_RECENTS) { return@forEach } } - val combinedEmojis = (recentEmojis + initialEmojisFromSearch).toList().distinct().take(8) + val combinedEmojis = (recentEmojis + initialEmojisFromSearch).toList().distinct().take(MAX_RECENTS) val emojiSearchKeywords = mapOf( "👍" to "thumbsup", @@ -301,13 +309,11 @@ class MessageActionsDialog( val keyword = emojiSearchKeywords[emoji] ?: "" val result = SearchEmojiManager().search(keyword) if (result.isNotEmpty()) { - recentEmojiManager.addEmoji(result[0].component1()) + recentEmojiManager.addEmoji(result[ZERO_INDEX].component1()) recentEmojiManager.persist() } } - textView.visibility = View.VISIBLE - } else { textView.visibility = View.GONE } @@ -512,7 +518,6 @@ class MessageActionsDialog( .subscribeOn(Schedulers.io()) ?.observeOn(AndroidSchedulers.mainThread()) ?.subscribe(ReactionDeletedObserver()) - } else { reactionsRepository.addReaction(currentConversation!!.token!!, message, emoji) .subscribeOn(Schedulers.io()) @@ -574,5 +579,7 @@ class MessageActionsDialog( private const val DELAY: Long = 200 private const val AGE_THRESHOLD_FOR_EDIT_MESSAGE: Long = 86400000 private const val ACTOR_BOTS = "bots" + private const val ZERO_INDEX = 0 + private const val MAX_RECENTS = 8 } } From 46d72eea5c857fbd0cf6b6b39efc79e81fb11b0a Mon Sep 17 00:00:00 2001 From: sowjanyakch Date: Wed, 14 May 2025 16:27:32 +0200 Subject: [PATCH 9/9] fix detekt Signed-off-by: sowjanyakch --- .../talk/ui/dialog/MessageActionsDialog.kt | 86 ++++++++++--------- 1 file changed, 45 insertions(+), 41 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt b/app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt index a540cc7f9..a1f7d9b35 100644 --- a/app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt +++ b/app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt @@ -277,47 +277,7 @@ class MessageActionsDialog( } val combinedEmojis = (recentEmojis + initialEmojisFromSearch).toList().distinct().take(MAX_RECENTS) - val emojiSearchKeywords = mapOf( - "👍" to "thumbsup", - "👎" to "thumbsdown", - "❤️" to "heart", - "😂" to "joy", - "😕" to "confused", - "😢" to "cry", - "🙏" to "pray", - "🔥" to "fire" - ) - - val emojiTextViews = listOf( - dialogMessageActionsBinding.emojiThumbsUp, - dialogMessageActionsBinding.emojiThumbsDown, - dialogMessageActionsBinding.emojiHeart, - dialogMessageActionsBinding.emojiLaugh, - dialogMessageActionsBinding.emojiConfused, - dialogMessageActionsBinding.emojiCry, - dialogMessageActionsBinding.emojiPray, - dialogMessageActionsBinding.emojiFire - ) - - emojiTextViews.forEachIndexed { index, textView -> - val emoji = combinedEmojis.getOrNull(index)?.unicode - if (emoji != null) { - textView.text = emoji - checkAndSetEmojiSelfReaction(textView) - textView.setOnClickListener { - clickOnEmoji(message, emoji) - val keyword = emojiSearchKeywords[emoji] ?: "" - val result = SearchEmojiManager().search(keyword) - if (result.isNotEmpty()) { - recentEmojiManager.addEmoji(result[ZERO_INDEX].component1()) - recentEmojiManager.persist() - } - } - textView.visibility = View.VISIBLE - } else { - textView.visibility = View.GONE - } - } + setupEmojiView(combinedEmojis, recentEmojiManager) dialogMessageActionsBinding.emojiMore.setOnClickListener { dismiss() @@ -329,6 +289,50 @@ class MessageActionsDialog( } } + private fun setupEmojiView(combinedEmojis: List, recentEmojiManager: RecentEmojiManager) { + val emojiSearchKeywords = mapOf( + "👍" to "thumbsup", + "👎" to "thumbsdown", + "❤️" to "heart", + "😂" to "joy", + "😕" to "confused", + "😢" to "cry", + "🙏" to "pray", + "🔥" to "fire" + ) + + val emojiTextViews = listOf( + dialogMessageActionsBinding.emojiThumbsUp, + dialogMessageActionsBinding.emojiThumbsDown, + dialogMessageActionsBinding.emojiHeart, + dialogMessageActionsBinding.emojiLaugh, + dialogMessageActionsBinding.emojiConfused, + dialogMessageActionsBinding.emojiCry, + dialogMessageActionsBinding.emojiPray, + dialogMessageActionsBinding.emojiFire + ) + + emojiTextViews.forEachIndexed { index, textView -> + val emoji = combinedEmojis.getOrNull(index)?.unicode + if (emoji != null) { + textView.text = emoji + checkAndSetEmojiSelfReaction(textView) + textView.setOnClickListener { + clickOnEmoji(message, emoji) + val keyword = emojiSearchKeywords[emoji] ?: "" + val result = SearchEmojiManager().search(keyword) + if (result.isNotEmpty()) { + recentEmojiManager.addEmoji(result[ZERO_INDEX].component1()) + recentEmojiManager.persist() + } + } + textView.visibility = View.VISIBLE + } else { + textView.visibility = View.GONE + } + } + } + private fun isPermitted(hasChatPermission: Boolean): Boolean { return hasChatPermission && ConversationEnums.ConversationReadOnlyState.CONVERSATION_READ_ONLY != currentConversation?.conversationReadOnlyState