From e3bd8a8b22eec00a3290ccc3a55b504bea405ec8 Mon Sep 17 00:00:00 2001 From: Ushie Date: Wed, 3 Jul 2024 02:46:01 +0300 Subject: [PATCH] feat: Add sensitivity to `isScrollingUp` --- .../main/java/app/revanced/manager/util/Util.kt | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/app/revanced/manager/util/Util.kt b/app/src/main/java/app/revanced/manager/util/Util.kt index 653a1b52..f1de38fd 100644 --- a/app/src/main/java/app/revanced/manager/util/Util.kt +++ b/app/src/main/java/app/revanced/manager/util/Util.kt @@ -176,6 +176,9 @@ fun String.relativeTime(context: Context): String { } } + +const val isScrollingUpSensitivity = 10 + @Composable fun LazyListState.isScrollingUp(): State { return remember(this) { @@ -183,10 +186,16 @@ fun LazyListState.isScrollingUp(): State { var previousScrollOffset by mutableIntStateOf(firstVisibleItemScrollOffset) derivedStateOf { - if (previousIndex != firstVisibleItemIndex) { + val indexChanged = previousIndex != firstVisibleItemIndex + val offsetChanged = + kotlin.math.abs(previousScrollOffset - firstVisibleItemScrollOffset) > isScrollingUpSensitivity + + if (indexChanged) { previousIndex > firstVisibleItemIndex + } else if (offsetChanged) { + previousScrollOffset > firstVisibleItemScrollOffset } else { - previousScrollOffset >= firstVisibleItemScrollOffset + true }.also { previousIndex = firstVisibleItemIndex previousScrollOffset = firstVisibleItemScrollOffset @@ -195,6 +204,7 @@ fun LazyListState.isScrollingUp(): State { } } +// TODO: support sensitivity @Composable fun ScrollState.isScrollingUp(): State { return remember(this) {