open reactions menu when long click on emojis in message

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
This commit is contained in:
Marcel Hibbe 2022-04-09 22:56:45 +02:00
parent 7dd7738c04
commit 3d4f3eeb54
No known key found for this signature in database
GPG Key ID: C793F8B59F43CE7B
11 changed files with 49 additions and 24 deletions

View File

@ -102,11 +102,14 @@ class IncomingLocationMessageViewHolder(incomingView: View, payload: Any) : Mess
// geo-location // geo-location
setLocationDataOnMessageItem(message) setLocationDataOnMessageItem(message)
Reaction().showReactions(message, binding.reactions, context!!, false) Reaction().showReactions(message, binding.reactions, context!!, true)
binding.reactions.reactionsEmojiWrapper.setOnClickListener { binding.reactions.reactionsEmojiWrapper.setOnClickListener {
reactionsInterface.onClickReactions(message) reactionsInterface.onClickReactions(message)
} }
binding.reactions.reactionsEmojiWrapper.setOnLongClickListener { l: View? ->
reactionsInterface.onLongClickReactions(message)
true
}
} }
private fun setAvatarAndAuthorOnMessageItem(message: ChatMessage) { private fun setAvatarAndAuthorOnMessageItem(message: ChatMessage) {

View File

@ -142,11 +142,14 @@ class IncomingVoiceMessageViewHolder(incomingView: View, payload: Any) : Message
} }
}) })
Reaction().showReactions(message, binding.reactions, context!!, false) Reaction().showReactions(message, binding.reactions, context!!, true)
binding.reactions.reactionsEmojiWrapper.setOnClickListener { binding.reactions.reactionsEmojiWrapper.setOnClickListener {
reactionsInterface.onClickReactions(message) reactionsInterface.onClickReactions(message)
} }
binding.reactions.reactionsEmojiWrapper.setOnLongClickListener { l: View? ->
reactionsInterface.onLongClickReactions(message)
true
}
} }
private fun updateDownloadState(message: ChatMessage) { private fun updateDownloadState(message: ChatMessage) {

View File

@ -122,11 +122,14 @@ class MagicIncomingTextMessageViewHolder(itemView: View, payload: Any) : Message
itemView.setTag(MessageSwipeCallback.REPLYABLE_VIEW_TAG, message.isReplyable) itemView.setTag(MessageSwipeCallback.REPLYABLE_VIEW_TAG, message.isReplyable)
Reaction().showReactions(message, binding.reactions, context!!, false) Reaction().showReactions(message, binding.reactions, context!!, true)
binding.reactions.reactionsEmojiWrapper.setOnClickListener { binding.reactions.reactionsEmojiWrapper.setOnClickListener {
reactionsInterface.onClickReactions(message) reactionsInterface.onClickReactions(message)
} }
binding.reactions.reactionsEmojiWrapper.setOnLongClickListener { l: View? ->
reactionsInterface.onLongClickReactions(message)
true
}
} }
private fun processAuthor(message: ChatMessage) { private fun processAuthor(message: ChatMessage) {

View File

@ -122,10 +122,13 @@ class MagicOutcomingTextMessageViewHolder(itemView: View) : OutcomingTextMessage
itemView.setTag(MessageSwipeCallback.REPLYABLE_VIEW_TAG, message.isReplyable) itemView.setTag(MessageSwipeCallback.REPLYABLE_VIEW_TAG, message.isReplyable)
Reaction().showReactions(message, binding.reactions, context!!, true) Reaction().showReactions(message, binding.reactions, context!!, true)
binding.reactions.reactionsEmojiWrapper.setOnClickListener { binding.reactions.reactionsEmojiWrapper.setOnClickListener {
reactionsInterface.onClickReactions(message) reactionsInterface.onClickReactions(message)
} }
binding.reactions.reactionsEmojiWrapper.setOnLongClickListener { l: View? ->
reactionsInterface.onLongClickReactions(message)
true
}
} }
private fun processParentMessage(message: ChatMessage) { private fun processParentMessage(message: ChatMessage) {

View File

@ -260,10 +260,13 @@ public abstract class MagicPreviewMessageViewHolder extends MessageHolders.Incom
reactionsBinding = getReactionsBinding(); reactionsBinding = getReactionsBinding();
new Reaction().showReactions(message, reactionsBinding, context, false); new Reaction().showReactions(message, reactionsBinding, context, false);
reactionsBinding.reactionsEmojiWrapper.setOnClickListener(l -> { reactionsBinding.reactionsEmojiWrapper.setOnClickListener(l -> {
reactionsInterface.onClickReactions(message); reactionsInterface.onClickReactions(message);
}); });
reactionsBinding.reactionsEmojiWrapper.setOnLongClickListener(l -> {
reactionsInterface.onLongClickReactions(message);
return true;
});
} }
private Drawable getDrawableFromContactDetails(Context context, String base64) { private Drawable getDrawableFromContactDetails(Context context, String base64) {

View File

@ -115,10 +115,13 @@ class OutcomingLocationMessageViewHolder(incomingView: View) : MessageHolders
setLocationDataOnMessageItem(message) setLocationDataOnMessageItem(message)
Reaction().showReactions(message, binding.reactions, context!!, true) Reaction().showReactions(message, binding.reactions, context!!, true)
binding.reactions.reactionsEmojiWrapper.setOnClickListener { binding.reactions.reactionsEmojiWrapper.setOnClickListener {
reactionsInterface.onClickReactions(message) reactionsInterface.onClickReactions(message)
} }
binding.reactions.reactionsEmojiWrapper.setOnLongClickListener { l: View? ->
reactionsInterface.onLongClickReactions(message)
true
}
} }
@SuppressLint("SetJavaScriptEnabled", "ClickableViewAccessibility") @SuppressLint("SetJavaScriptEnabled", "ClickableViewAccessibility")

View File

@ -132,10 +132,13 @@ class OutcomingVoiceMessageViewHolder(outcomingView: View) : MessageHolders
binding.checkMark.setContentDescription(readStatusContentDescriptionString) binding.checkMark.setContentDescription(readStatusContentDescriptionString)
Reaction().showReactions(message, binding.reactions, context!!, true) Reaction().showReactions(message, binding.reactions, context!!, true)
binding.reactions.reactionsEmojiWrapper.setOnClickListener { binding.reactions.reactionsEmojiWrapper.setOnClickListener {
reactionsInterface.onClickReactions(message) reactionsInterface.onClickReactions(message)
} }
binding.reactions.reactionsEmojiWrapper.setOnLongClickListener { l: View? ->
reactionsInterface.onLongClickReactions(message)
true
}
} }
private fun handleResetVoiceMessageState(message: ChatMessage) { private fun handleResetVoiceMessageState(message: ChatMessage) {

View File

@ -4,4 +4,4 @@ import com.nextcloud.talk.models.json.chat.ChatMessage
interface PreviewMessageInterface { interface PreviewMessageInterface {
fun onPreviewMessageLongClick(chatMessage: ChatMessage) fun onPreviewMessageLongClick(chatMessage: ChatMessage)
} }

View File

@ -73,7 +73,6 @@ class Reaction {
reactionAmount.layoutParams = params reactionAmount.layoutParams = params
binding.reactionsEmojiWrapper.addView(reactionAmount) binding.reactionsEmojiWrapper.addView(reactionAmount)
remainingEmojisToDisplay-- remainingEmojisToDisplay--
if (remainingEmojisToDisplay == 0 && showInfoAboutMoreEmojis) { if (remainingEmojisToDisplay == 0 && showInfoAboutMoreEmojis) {
val infoAboutMoreEmojis = TextView(context) val infoAboutMoreEmojis = TextView(context)

View File

@ -4,4 +4,5 @@ import com.nextcloud.talk.models.json.chat.ChatMessage
interface ReactionsInterface { interface ReactionsInterface {
fun onClickReactions(chatMessage: ChatMessage) fun onClickReactions(chatMessage: ChatMessage)
fun onLongClickReactions(chatMessage: ChatMessage)
} }

View File

@ -924,18 +924,6 @@ class ChatController(args: Bundle) :
} }
} }
override fun onClickReactions(chatMessage: ChatMessage) {
activity?.let {
ShowReactionsDialog(
activity!!,
currentConversation,
chatMessage,
conversationUser,
ncApi!!
).show()
}
}
@SuppressLint("LongLogTag") @SuppressLint("LongLogTag")
private fun downloadFileToCache(message: ChatMessage) { private fun downloadFileToCache(message: ChatMessage) {
message.isDownloadingVoiceMessage = true message.isDownloadingVoiceMessage = true
@ -2432,6 +2420,22 @@ class ChatController(args: Bundle) :
} }
} }
override fun onClickReactions(chatMessage: ChatMessage) {
activity?.let {
ShowReactionsDialog(
activity!!,
currentConversation,
chatMessage,
conversationUser,
ncApi!!
).show()
}
}
override fun onLongClickReactions(chatMessage: ChatMessage) {
openMessageActionsDialog(chatMessage)
}
override fun onMessageViewLongClick(view: View?, message: IMessage?) { override fun onMessageViewLongClick(view: View?, message: IMessage?) {
openMessageActionsDialog(message) openMessageActionsDialog(message)
} }