From 672d4e591c7b01b7d1e03b32eabe7aaa2901ed7f Mon Sep 17 00:00:00 2001 From: Adam Brown Date: Tue, 11 Jan 2022 16:54:37 +0000 Subject: [PATCH 1/3] disabling the automatic carousel transitions on user interaction - extracts all the logic to its own extension --- .../FtueAuthSplashCarouselFragment.kt | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthSplashCarouselFragment.kt b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthSplashCarouselFragment.kt index 152754f241..659508448a 100644 --- a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthSplashCarouselFragment.kt +++ b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthSplashCarouselFragment.kt @@ -80,17 +80,27 @@ class FtueAuthSplashCarouselFragment @Inject constructor( "Branch: ${BuildConfig.GIT_BRANCH_NAME}" views.loginSplashVersion.debouncedClicks { navigator.openDebug(requireContext()) } } + views.splashCarousel.registerAutomaticUntilInteractionTransitions() + } - views.splashCarousel.apply { - var scheduledTransition: Job? = null - registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() { - override fun onPageSelected(position: Int) { - scheduledTransition?.cancel() + private fun ViewPager2.registerAutomaticUntilInteractionTransitions() { + var scheduledTransition: Job? = null + registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() { + private var hasUserManuallyInteractedWithCarousel: Boolean = false + + override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) { + hasUserManuallyInteractedWithCarousel = !isFakeDragging + } + + override fun onPageSelected(position: Int) { + scheduledTransition?.cancel() + if (hasUserManuallyInteractedWithCarousel) { + // stop the automatic transitions + } else { scheduledTransition = scheduleCarouselTransition() } - }) - scheduledTransition = scheduleCarouselTransition() - } + } + }) } private fun ViewPager2.scheduleCarouselTransition(): Job { From 01ef46517e0358d0446a9b13fd0612e6286c4883 Mon Sep 17 00:00:00 2001 From: Adam Brown Date: Wed, 12 Jan 2022 09:16:46 +0000 Subject: [PATCH 2/3] flattening branch to avoid empty code block --- .../onboarding/ftueauth/FtueAuthSplashCarouselFragment.kt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthSplashCarouselFragment.kt b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthSplashCarouselFragment.kt index 659508448a..6c1c57e0fc 100644 --- a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthSplashCarouselFragment.kt +++ b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthSplashCarouselFragment.kt @@ -94,9 +94,8 @@ class FtueAuthSplashCarouselFragment @Inject constructor( override fun onPageSelected(position: Int) { scheduledTransition?.cancel() - if (hasUserManuallyInteractedWithCarousel) { - // stop the automatic transitions - } else { + // only schedule automatic transitions whilst the user has not interacted with the carousel + if (!hasUserManuallyInteractedWithCarousel) { scheduledTransition = scheduleCarouselTransition() } } From ab6ed2376fb24545998938f97c564939a75b7269 Mon Sep 17 00:00:00 2001 From: Adam Brown Date: Thu, 13 Jan 2022 09:56:15 +0000 Subject: [PATCH 3/3] trigger CI