avoid duplications

Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
This commit is contained in:
sowjanyakch 2025-05-07 12:36:43 +02:00
parent 544b8efea3
commit e63e1de7bc
No known key found for this signature in database
GPG Key ID: F7AA2A8B65B50220
2 changed files with 35 additions and 9 deletions

View File

@ -41,11 +41,13 @@ 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.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
import com.vanniktech.emoji.installForceSingleEmoji import com.vanniktech.emoji.installForceSingleEmoji
import com.vanniktech.emoji.recent.RecentEmojiManager import com.vanniktech.emoji.recent.RecentEmojiManager
import com.vanniktech.emoji.search.SearchEmojiManager
import io.reactivex.Observer import io.reactivex.Observer
import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.Disposable import io.reactivex.disposables.Disposable
@ -247,13 +249,32 @@ class MessageActionsDialog(
isPermitted(hasChatPermission) && isPermitted(hasChatPermission) &&
isReactableMessageType(message) isReactableMessageType(message)
) { ) {
val recentEmojiManager = RecentEmojiManager(context, 6) val recentEmojiManager = RecentEmojiManager(context,6)
val recentEmojis = recentEmojiManager.getRecentEmojis().map { it.unicode } val recentEmojis = recentEmojiManager.getRecentEmojis()
val fallbackEmojis = listOf("👍", "👎", "❤️", "😂", "😕", "😢") val searchEmojiManager = SearchEmojiManager()
val combinedEmojis = (recentEmojis + fallbackEmojis) val initialSearchKeywords = listOf("thumbsup", "thumbsdown", "heart", "joy", "confused", "cry")
.distinct() val initialEmojisFromSearch = mutableSetOf<Emoji>()
.take(6)
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( val emojiTextViews = listOf(
dialogMessageActionsBinding.emojiThumbsUp, dialogMessageActionsBinding.emojiThumbsUp,
@ -261,16 +282,21 @@ class MessageActionsDialog(
dialogMessageActionsBinding.emojiHeart, dialogMessageActionsBinding.emojiHeart,
dialogMessageActionsBinding.emojiLaugh, dialogMessageActionsBinding.emojiLaugh,
dialogMessageActionsBinding.emojiConfused, dialogMessageActionsBinding.emojiConfused,
dialogMessageActionsBinding.emojiSad dialogMessageActionsBinding.emojiCry
) )
emojiTextViews.forEachIndexed { index, textView -> emojiTextViews.forEachIndexed { index, textView ->
val emoji = combinedEmojis.getOrNull(index) val emoji = combinedEmojis.getOrNull(index)?.unicode
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)
val keyword = emojiSearchKeywords[emoji] ?: ""
val result = SearchEmojiManager().search(keyword)
if (result.isNotEmpty()) {
recentEmojiManager.addEmoji(result[0].component1())
}
} }
textView.visibility = View.VISIBLE textView.visibility = View.VISIBLE
} else { } else {

View File

@ -84,7 +84,7 @@
android:textSize="20sp" /> android:textSize="20sp" />
<com.vanniktech.emoji.EmojiTextView <com.vanniktech.emoji.EmojiTextView
android:id="@+id/emojiSad" android:id="@+id/emojiCry"
android:layout_width="@dimen/reaction_bottom_sheet_layout_size" android:layout_width="@dimen/reaction_bottom_sheet_layout_size"
android:layout_height="@dimen/reaction_bottom_sheet_layout_size" android:layout_height="@dimen/reaction_bottom_sheet_layout_size"
android:layout_marginLeft="@dimen/standard_quarter_margin" android:layout_marginLeft="@dimen/standard_quarter_margin"