diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder.kt index cbd96d4456..4d10d95a4f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder.kt @@ -136,10 +136,7 @@ open class V2ConversationItemTextOnlyViewHolder>( ) } - binding.root.setOnClickListener { - conversationContext.clickListener.onItemClick(getMultiselectPartForLatestTouch()) - } - + binding.root.setOnClickListener { onBubbleClicked() } binding.root.setOnLongClickListener { conversationContext.clickListener.onItemLongClick(binding.root, getMultiselectPartForLatestTouch()) @@ -710,6 +707,28 @@ open class V2ConversationItemTextOnlyViewHolder>( } } + private fun onBubbleClicked() { + val messageRecord = conversationMessage.messageRecord + + when { + conversationContext.selectedItems.isNotEmpty() -> { + conversationContext.clickListener.onItemClick(getMultiselectPartForLatestTouch()) + } + messageRecord.isFailed -> { + conversationContext.clickListener.onMessageWithErrorClicked(messageRecord) + } + messageRecord.isRateLimited && SignalStore.rateLimit().needsRecaptcha() -> { + conversationContext.clickListener.onMessageWithRecaptchaNeededClicked(messageRecord) + } + messageRecord.isOutgoing && messageRecord.isIdentityMismatchFailure -> { + conversationContext.clickListener.onIncomingIdentityMismatchClicked(messageRecord.fromRecipient.id) + } + else -> { + conversationContext.clickListener.onItemClick(getMultiselectPartForLatestTouch()) + } + } + } + override fun disallowSwipe(latestDownX: Float, latestDownY: Float): Boolean { return false }