Fix slide in animation for new messages in CFV2.

This commit is contained in:
Alex Hart
2023-07-06 14:49:53 -03:00
committed by Clark Chen
parent 4429145cdf
commit f9eed0f6d0
5 changed files with 22 additions and 10 deletions

View File

@@ -793,7 +793,7 @@ class ConversationFragment :
scrollToNextMention()
}
adapter.registerAdapterDataObserver(DataObserver(scrollToPositionDelegate))
adapter.registerAdapterDataObserver(DataObserver())
val keyboardEvents = KeyboardEvents()
container.listener = keyboardEvents
@@ -1998,14 +1998,12 @@ class ConversationFragment :
}
}
private inner class DataObserver(
private val scrollToPositionDelegate: ScrollToPositionDelegate
) : RecyclerView.AdapterDataObserver() {
private inner class DataObserver : RecyclerView.AdapterDataObserver() {
override fun onItemRangeInserted(positionStart: Int, itemCount: Int) {
Log.d(TAG, "onItemRangeInserted $positionStart $itemCount")
if (positionStart == 0 && itemCount == 1 && !binding.conversationItemRecycler.canScrollVertically(1)) {
Log.d(TAG, "Requesting scroll to bottom.")
scrollToPositionDelegate.resetScrollPosition()
layoutManager.scrollToPositionWithOffset(0, 0)
}
}
}

View File

@@ -101,7 +101,10 @@ class ConversationViewModel(
val pagingController = ProxyPagingController<ConversationElementKey>()
val nameColorsMap: Observable<Map<RecipientId, NameColor>> = recipient.flatMap { repository.getNameColorsMap(it, groupAuthorNameColorHelper) }
val nameColorsMap: Observable<Map<RecipientId, NameColor>> = recipient
.filter { it.isGroup }
.flatMap { repository.getNameColorsMap(it, groupAuthorNameColorHelper) }
.distinctUntilChanged()
@Volatile
var recipientSnapshot: Recipient? = null

View File

@@ -29,6 +29,7 @@ import org.signal.core.util.StringUtil
import org.signal.core.util.dp
import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.components.mention.MentionAnnotation
import org.thoughtcrime.securesms.conversation.BodyBubbleLayoutTransition
import org.thoughtcrime.securesms.conversation.ConversationItemDisplayMode
import org.thoughtcrime.securesms.conversation.ConversationMessage
import org.thoughtcrime.securesms.conversation.mutiselect.Multiselect
@@ -148,6 +149,8 @@ class V2TextOnlyViewHolder<Model : MappingModel<Model>>(
} else {
binding.conversationItemBody.setMentionBackgroundTint(ContextCompat.getColor(context, R.color.transparent_black_25))
}
binding.conversationItemBodyWrapper.layoutTransition = BodyBubbleLayoutTransition()
}
override fun bind(model: Model) {
@@ -195,7 +198,7 @@ class V2TextOnlyViewHolder<Model : MappingModel<Model>>(
coordinateRoot,
binding.conversationItemBodyWrapper,
Projection.Corners.NONE
).translateX(binding.conversationItemBodyWrapper.translationX)
).translateX(binding.conversationItemBodyWrapper.translationX).translateY(root.translationY)
)
return projections
@@ -211,7 +214,7 @@ class V2TextOnlyViewHolder<Model : MappingModel<Model>>(
coordinateRoot,
binding.conversationItemBodyWrapper,
shapeDelegate.corners
).translateX(binding.conversationItemBodyWrapper.translationX)
).translateX(binding.conversationItemBodyWrapper.translationX).translateY(root.translationY)
)
} else if (conversationContext.hasWallpaper()) {
projections.add(
@@ -219,7 +222,7 @@ class V2TextOnlyViewHolder<Model : MappingModel<Model>>(
coordinateRoot,
binding.conversationItemFooterBackground,
conversationItemFooterBackgroundCorners
).translateX(binding.conversationItemFooterBackground.translationX)
).translateX(binding.conversationItemFooterBackground.translationX).translateY(root.translationY)
)
}
}