From 131212b1585112ff4b134851e220f4178beffa87 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Tue, 5 Sep 2023 10:30:43 -0300 Subject: [PATCH] Fix improper bubble spacing caused by swipe to reply icon. --- .../V2ConversationItemTextOnlyViewHolder.kt | 21 +++++++++++++++---- ...2_conversation_item_text_only_incoming.xml | 9 +++++--- ...2_conversation_item_text_only_outgoing.xml | 5 ++++- 3 files changed, 27 insertions(+), 8 deletions(-) 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 79ceade5e0..c4f37083cf 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 @@ -103,8 +103,22 @@ open class V2ConversationItemTextOnlyViewHolder>( protected lateinit var shape: V2ConversationItemShape.MessageShape + private val replyDelegate = object : V2ConversationItemLayout.OnMeasureListener { + override fun onPreMeasure() = Unit + + override fun onPostMeasure(): Boolean { + val wrapperHeight = binding.conversationItemBodyWrapper.measuredHeight + val yTranslation = (wrapperHeight - 38.dp) / 2f + binding.conversationItemReply.translationY = -yTranslation + + return false + } + } + init { binding.root.addOnMeasureListener(footerDelegate) + binding.root.addOnMeasureListener(replyDelegate) + binding.root.onDispatchTouchEventListener = dispatchTouchEventListener binding.conversationItemReactions.setOnClickListener { @@ -458,16 +472,15 @@ open class V2ConversationItemTextOnlyViewHolder>( if (conversationMessage.threadRecipient.isGroup) { val sender = conversationMessage.messageRecord.fromRecipient - binding.senderName.visible = shape.isStartingShape - val photoVisibility = if (shape.isEndingShape) { + binding.senderPhoto.visibility = if (shape.isEndingShape) { View.VISIBLE } else { View.INVISIBLE } - binding.senderPhoto.visibility = photoVisibility - binding.senderBadge.visibility = photoVisibility + binding.senderName.visible = shape.isStartingShape + binding.senderBadge.visible = shape.isEndingShape binding.senderName.text = sender.getDisplayName(context) binding.senderPhoto.setAvatar(conversationContext.glideRequests, sender, false) diff --git a/app/src/main/res/layout/v2_conversation_item_text_only_incoming.xml b/app/src/main/res/layout/v2_conversation_item_text_only_incoming.xml index 5dccb7c8c5..ad27c4bf11 100644 --- a/app/src/main/res/layout/v2_conversation_item_text_only_incoming.xml +++ b/app/src/main/res/layout/v2_conversation_item_text_only_incoming.xml @@ -14,6 +14,10 @@ android:nextFocusRight="@+id/embedded_text_editor"> + @@ -50,7 +53,7 @@ app:badge_size="small" app:layout_constraintStart_toStartOf="@id/contact_photo" app:layout_constraintTop_toTopOf="@id/contact_photo" - tools:visibility="visible" /> + tools:visibility="gone" /> + tools:visibility="gone" /> +