diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt index 4a3f15ec52..897b960f59 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt @@ -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) } } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationViewModel.kt index 52aad7369f..ed7c65c467 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationViewModel.kt @@ -101,7 +101,10 @@ class ConversationViewModel( val pagingController = ProxyPagingController() - val nameColorsMap: Observable> = recipient.flatMap { repository.getNameColorsMap(it, groupAuthorNameColorHelper) } + val nameColorsMap: Observable> = recipient + .filter { it.isGroup } + .flatMap { repository.getNameColorsMap(it, groupAuthorNameColorHelper) } + .distinctUntilChanged() @Volatile var recipientSnapshot: Recipient? = null diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemViewHolder.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemViewHolder.kt index e5ffe49125..86b70d62d9 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemViewHolder.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemViewHolder.kt @@ -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>( } 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>( 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>( 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>( coordinateRoot, binding.conversationItemFooterBackground, conversationItemFooterBackgroundCorners - ).translateX(binding.conversationItemFooterBackground.translationX) + ).translateX(binding.conversationItemFooterBackground.translationX).translateY(root.translationY) ) } } diff --git a/dependencies.gradle b/dependencies.gradle index f2a3f159ab..0d2c229fb5 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -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') diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index f49fd98629..6172d1caa5 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -1200,6 +1200,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + +