Skip to content

Commit

Permalink
fix visual scroll bug
Browse files Browse the repository at this point in the history
  • Loading branch information
DatL4g committed May 17, 2024
1 parent 789eadf commit a7e357d
Show file tree
Hide file tree
Showing 7 changed files with 46 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,18 @@ fun LazyListState.isScrollingUp(): Boolean {
}.value
}

val LazyListState.canScroll: Boolean
get() = this.canScrollForward || this.canScrollBackward

@Composable
fun LazyListState.scrollUpVisible(): Boolean {
return if (canScroll) {
isScrollingUp() && canScrollForward
} else {
true
}
}

@Composable
fun LazyGridState.isScrollingUp(): Boolean {
var previousIndex by remember(this) {
Expand All @@ -157,6 +169,18 @@ fun LazyGridState.isScrollingUp(): Boolean {
}.value
}

val LazyGridState.canScroll: Boolean
get() = this.canScrollForward || this.canScrollBackward

@Composable
fun LazyGridState.scrollUpVisible(): Boolean {
return if (canScroll) {
isScrollingUp() && canScrollForward
} else {
true
}
}

@Composable
fun LazyStaggeredGridState.isScrollingUp(): Boolean {
var previousIndex by remember(this) {
Expand All @@ -179,6 +203,18 @@ fun LazyStaggeredGridState.isScrollingUp(): Boolean {
}.value
}

val LazyStaggeredGridState.canScroll: Boolean
get() = this.canScrollForward || this.canScrollBackward

@Composable
fun LazyStaggeredGridState.scrollUpVisible(): Boolean {
return if (canScroll) {
isScrollingUp() && canScrollForward
} else {
true
}
}

/**
* Checks if the modal is currently expanded or a swipe action is in progress to be expanded.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ import dev.chrisbanes.haze.materials.ExperimentalHazeMaterialsApi
import dev.chrisbanes.haze.materials.HazeMaterials
import dev.datlag.aniflow.LocalHaze
import dev.datlag.aniflow.SharedRes
import dev.datlag.aniflow.common.isScrollingUp
import dev.datlag.aniflow.other.MaterialSymbols
import dev.datlag.aniflow.ui.navigation.RootConfig
import dev.datlag.tooling.decompose.lifecycle.collectAsStateWithLifecycle
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,7 @@ import dev.chrisbanes.haze.materials.HazeMaterials
import dev.datlag.aniflow.LocalHaze
import dev.datlag.aniflow.SharedRes
import dev.datlag.aniflow.anilist.ListRepository
import dev.datlag.aniflow.common.isScrollingUp
import dev.datlag.aniflow.common.merge
import dev.datlag.aniflow.common.plus
import dev.datlag.aniflow.common.preferred
import dev.datlag.aniflow.common.*
import dev.datlag.aniflow.ui.navigation.screen.component.HidingNavigationBar
import dev.datlag.aniflow.ui.navigation.screen.component.NavigationBarState
import dev.datlag.aniflow.ui.navigation.screen.favorites.component.ListCard
Expand Down Expand Up @@ -63,7 +60,7 @@ fun FavoritesScreen(component: FavoritesComponent) {
floatingActionButton = {
ExtendedFloatingActionButton(
onClick = {},
expanded = listState.isScrollingUp(),
expanded = listState.scrollUpVisible(),
icon = {
Icon(
imageVector = Icons.Rounded.SwapVert,
Expand All @@ -77,7 +74,7 @@ fun FavoritesScreen(component: FavoritesComponent) {
},
bottomBar = {
HidingNavigationBar(
visible = listState.isScrollingUp(),
visible = listState.scrollUpVisible(),
selected = NavigationBarState.Favorite,
loggedIn = flowOf(true),
onDiscover = component::viewDiscover,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ fun HomeScreen(component: HomeComponent) {
onClick = {
helper.showInstallPrompt()
},
expanded = listState.isScrollingUp() && listState.canScrollForward,
expanded = listState.scrollUpVisible(),
icon = {
Icon(
imageVector = Icons.Rounded.GetApp,
Expand Down Expand Up @@ -153,7 +153,7 @@ fun HomeScreen(component: HomeComponent) {
onClick = {
imagePicker.launch()
},
expanded = listState.isScrollingUp(),
expanded = listState.scrollUpVisible(),
icon = {
Icon(
imageVector = Icons.Filled.CameraEnhance,
Expand All @@ -168,7 +168,7 @@ fun HomeScreen(component: HomeComponent) {
},
bottomBar = {
HidingNavigationBar(
visible = listState.isScrollingUp(),
visible = listState.scrollUpVisible(),
selected = NavigationBarState.Home,
loggedIn = component.loggedIn,
onDiscover = component::viewDiscover,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,13 +81,13 @@ fun MediumScreen(component: MediumComponent) {
state = appBarState,
scrollBehavior = scrollState,
coverImage = coverImage,
showShare = listState.isScrollingUp(),
showShare = listState.scrollUpVisible(),
component = component
)
},
floatingActionButton = {
FABContent(
expanded = listState.isScrollingUp() && listState.canScrollForward,
expanded = listState.scrollUpVisible(),
component = component
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ import dev.datlag.aniflow.anilist.type.MediaListStatus
import dev.datlag.aniflow.anilist.type.MediaStatus
import dev.datlag.aniflow.anilist.type.MediaType
import dev.datlag.aniflow.common.icon
import dev.datlag.aniflow.common.isScrollingUp
import dev.datlag.aniflow.common.mapCollect
import dev.datlag.aniflow.common.stringRes
import dev.datlag.aniflow.ui.custom.InstantAppContent
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ import dev.chrisbanes.haze.materials.ExperimentalHazeMaterialsApi
import dev.chrisbanes.haze.materials.HazeMaterials
import dev.datlag.aniflow.LocalHaze
import dev.datlag.aniflow.SharedRes
import dev.datlag.aniflow.common.isScrollingUp
import dev.datlag.aniflow.common.merge
import dev.datlag.aniflow.common.scrollUpVisible
import dev.datlag.aniflow.nekos.NekosRepository
import dev.datlag.aniflow.nekos.model.Rating
import dev.datlag.aniflow.ui.navigation.screen.component.HidingNavigationBar
Expand Down Expand Up @@ -126,7 +126,7 @@ fun NekosScreen(component: NekosComponent) {

ExtendedFloatingActionButton(
onClick = { dialogState.show() },
expanded = listState.isScrollingUp(),
expanded = listState.scrollUpVisible(),
icon = {
Icon(
imageVector = Icons.Rounded.FilterList,
Expand Down

0 comments on commit a7e357d

Please sign in to comment.