make emojis clickable

Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
This commit is contained in:
sowjanyakch 2025-05-06 20:47:09 +02:00
parent b325d60fda
commit 44cbb020a8
No known key found for this signature in database
GPG Key ID: F7AA2A8B65B50220

View File

@ -41,6 +41,8 @@ import com.nextcloud.talk.utils.ConversationUtils
import com.nextcloud.talk.utils.DateConstants import com.nextcloud.talk.utils.DateConstants
import com.nextcloud.talk.utils.DateUtils import com.nextcloud.talk.utils.DateUtils
import com.nextcloud.talk.utils.SpreedFeatures 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.EmojiPopup
import com.vanniktech.emoji.EmojiTextView import com.vanniktech.emoji.EmojiTextView
import com.vanniktech.emoji.installDisableKeyboardInput import com.vanniktech.emoji.installDisableKeyboardInput
@ -248,7 +250,12 @@ class MessageActionsDialog(
isReactableMessageType(message) isReactableMessageType(message)
) { ) {
val recentEmojiManager = RecentEmojiManager(context, 6) 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( val emojiTextViews = listOf(
dialogMessageActionsBinding.emojiThumbsUp, dialogMessageActionsBinding.emojiThumbsUp,
@ -259,21 +266,17 @@ class MessageActionsDialog(
dialogMessageActionsBinding.emojiSad dialogMessageActionsBinding.emojiSad
) )
val fallbackEmojis = listOf("👍", "👎", "❤️", "😂", "😕", "😢")
val emojisToDisplay = if (topEmojis.isNotEmpty()) {
topEmojis.map { it.unicode }
} else {
fallbackEmojis
}
emojiTextViews.forEachIndexed { index, textView -> emojiTextViews.forEachIndexed { index, textView ->
val emoji = emojisToDisplay.getOrNull(index) val emoji = combinedEmojis.getOrNull(index)
if (emoji != null) { if (emoji != null) {
textView.text = emoji textView.text = emoji
checkAndSetEmojiSelfReaction(textView) checkAndSetEmojiSelfReaction(textView)
textView.setOnClickListener { textView.setOnClickListener {
clickOnEmoji(message, emoji) clickOnEmoji(message, emoji)
} }
textView.visibility = View.VISIBLE
} else {
textView.visibility = View.INVISIBLE
} }
} }