From d987ac6c7a7b3f0d470a1a7e227689c9f6f1741e Mon Sep 17 00:00:00 2001 From: Ushie Date: Wed, 3 Jul 2024 02:45:45 +0300 Subject: [PATCH] feat: Add `isScrollingUp` support for ScrollState --- .../manager/ui/screen/SelectedAppInfoScreen.kt | 4 ++-- .../main/java/app/revanced/manager/util/Util.kt | 16 +++++++++++++++- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/app/revanced/manager/ui/screen/SelectedAppInfoScreen.kt b/app/src/main/java/app/revanced/manager/ui/screen/SelectedAppInfoScreen.kt index b149a903..0dd786d7 100644 --- a/app/src/main/java/app/revanced/manager/ui/screen/SelectedAppInfoScreen.kt +++ b/app/src/main/java/app/revanced/manager/ui/screen/SelectedAppInfoScreen.kt @@ -3,7 +3,6 @@ package app.revanced.manager.ui.screen import android.content.pm.PackageInfo import androidx.annotation.StringRes import androidx.compose.foundation.clickable -import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.material.icons.Icons @@ -28,6 +27,7 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import app.revanced.manager.R import app.revanced.manager.ui.component.AppInfo import app.revanced.manager.ui.component.AppTopBar +import app.revanced.manager.ui.component.ColumnWithScrollbar import app.revanced.manager.ui.destination.SelectedAppInfoDestination import app.revanced.manager.ui.model.BundleInfo.Extensions.bundleInfoFlow import app.revanced.manager.ui.model.SelectedApp @@ -175,7 +175,7 @@ private fun SelectedAppInfoScreen( ) } ) { paddingValues -> - Column( + ColumnWithScrollbar( modifier = Modifier .fillMaxSize() .padding(paddingValues) 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 56dfc4ae..653a1b52 100644 --- a/app/src/main/java/app/revanced/manager/util/Util.kt +++ b/app/src/main/java/app/revanced/manager/util/Util.kt @@ -11,6 +11,7 @@ import android.os.Build import android.util.Log import android.widget.Toast import androidx.annotation.StringRes +import androidx.compose.foundation.ScrollState import androidx.compose.foundation.lazy.LazyListState import androidx.compose.runtime.Composable import androidx.compose.runtime.State @@ -194,4 +195,17 @@ fun LazyListState.isScrollingUp(): State { } } -val LazyListState.isScrollingUp: Boolean @Composable get() = this.isScrollingUp().value \ No newline at end of file +@Composable +fun ScrollState.isScrollingUp(): State { + return remember(this) { + var previousScrollOffset by mutableIntStateOf(value) + derivedStateOf { + (previousScrollOffset >= value).also { + previousScrollOffset = value + } + } + } +} + +val LazyListState.isScrollingUp: Boolean @Composable get() = this.isScrollingUp().value +val ScrollState.isScrollingUp: Boolean @Composable get() = this.isScrollingUp().value \ No newline at end of file