CharacterSheet pager back handler.

This commit is contained in:
Andres Gomez, Thomas (ITDV RL) 2024-08-21 13:39:22 +02:00
parent 2c5337f3dc
commit 1ab9047b40

View file

@ -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<List<CharacterTabUio>> = remember {