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)
)
}
}

View file

@ -54,7 +54,7 @@ dependencyResolutionManagement {
library('androidx-constraintlayout', 'androidx.constraintlayout:constraintlayout:2.1.4')
library('androidx-window-window', 'androidx.window', 'window').versionRef('androidx-window')
library('androidx-window-java', 'androidx.window', 'window-java').versionRef('androidx-window')
library('androidx-recyclerview', 'androidx.recyclerview:recyclerview:1.2.1')
library('androidx-recyclerview', 'androidx.recyclerview:recyclerview:1.3.0')
library('androidx-legacy-support', 'androidx.legacy:legacy-support-v13:1.0.0')
library('androidx-legacy-preference', 'androidx.legacy:legacy-preference-v14:1.0.0')
library('androidx-preference', 'androidx.preference:preference:1.0.0')

View file

@ -1200,6 +1200,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
<sha256 value="23542c8c85cc58fafe0ae8cba201e6c9e01b4c6799223340a2d6a51d7784828c" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.recyclerview" name="recyclerview" version="1.3.0">
<artifact name="recyclerview-1.3.0.aar">
<sha256 value="d65928a00f63589a49e21925412e0f48852f89254b07b03c030d560f91effc88" origin="Generated by Gradle"/>
</artifact>
<artifact name="recyclerview-1.3.0.module">
<sha256 value="7fa22bf1ab1a8d1544622076e2ad8454e2bef1402b3298b5b4079ab732e38845" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.resourceinspection" name="resourceinspection-annotation" version="1.0.1">
<artifact name="resourceinspection-annotation-1.0.1.jar">
<sha256 value="8cff870ec6fb31db48a52f4a792335b4bf8de07e03bd37823181526433ccd5cb" origin="Generated by Gradle"/>