diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/CharacterSheetScreen.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/CharacterSheetScreen.kt index c6f066c..e73c714 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/CharacterSheetScreen.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/character/CharacterSheetScreen.kt @@ -91,6 +91,7 @@ import com.pixelized.rplexicon.ui.screens.character.pages.inventory.item_list.It import com.pixelized.rplexicon.ui.screens.character.pages.proficiency.ProficiencyPage import com.pixelized.rplexicon.ui.screens.character.pages.proficiency.ProficiencyPreview import com.pixelized.rplexicon.ui.screens.character.pages.proficiency.ProficiencyViewModel +import com.pixelized.rplexicon.ui.screens.rolls.BlurredOverlayHostState import com.pixelized.rplexicon.ui.screens.rolls.RollResult import com.pixelized.rplexicon.ui.theme.LexiconTheme import com.pixelized.rplexicon.utilitary.extentions.modifier.lexiconShadow @@ -247,13 +248,11 @@ fun CharacterSheetScreen( errors = viewModel.error, ) - BackHandler(enabled = sheetState.isVisible) { - scope.launch { sheetState.hide() } - } - - BackHandler(enabled = overlay.isOverlayVisible) { - overlay.dismiss() - } + BackHandler( + sheetState = sheetState, + overlay = overlay, + pagerState = pagerState, + ) KeepOnScreen() } @@ -491,6 +490,34 @@ private fun CharacterScreenPreview( } } +@OptIn(ExperimentalFoundationApi::class, ExperimentalMaterialApi::class) +@Composable +private fun BackHandler( + sheetState: ModalBottomSheetState, + overlay: BlurredOverlayHostState, + pagerState: PagerState, +) { + val scope = rememberCoroutineScope() + + BackHandler( + enabled = pagerState.currentPage != 0 + ) { + scope.launch { + pagerState.animateScrollToPage(page = 0) + } + } + + BackHandler(enabled = sheetState.isVisible) { + scope.launch { + sheetState.hide() + } + } + + BackHandler(enabled = overlay.isOverlayVisible) { + overlay.dismiss() + } +} + @Composable @Stable private fun rememberHeaderPreview(): State> = remember {