File tree Expand file tree Collapse file tree
src/main/kotlin/com/nendo/argosy/ui Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -22,8 +22,8 @@ android {
2222 applicationId = " com.nendo.argosy"
2323 minSdk = 26
2424 targetSdk = 34
25- versionCode = 18
26- versionName = " 0.5.11 "
25+ versionCode = 19
26+ versionName = " 0.5.12 "
2727
2828 testInstrumentationRunner = " androidx.test.runner.AndroidJUnitRunner"
2929 vectorDrawables {
Original file line number Diff line number Diff line change @@ -53,11 +53,11 @@ fun ArgosyApp(
5353 val drawerState = rememberDrawerState(initialValue = DrawerValue .Closed )
5454 val scope = rememberCoroutineScope()
5555
56- val inputDispatcher = remember {
56+ val inputDispatcher = remember(drawerState) {
5757 InputDispatcher (
5858 hapticManager = viewModel.hapticManager,
5959 soundManager = viewModel.soundManager
60- )
60+ ). also { it.setDrawerOpenProvider { drawerState.isOpen } }
6161 }
6262
6363 val startDestination = if (uiState.isFirstRun) {
@@ -74,12 +74,9 @@ fun ArgosyApp(
7474
7575 var isFirstDrawerEffect by remember { mutableStateOf(true ) }
7676 LaunchedEffect (drawerState) {
77- inputDispatcher.setDrawerOpen(drawerState.isOpen)
78-
7977 snapshotFlow { drawerState.isOpen }
8078 .collect { isOpen ->
8179 inputDispatcher.blockInputFor(Motion .transitionDebounceMs)
82- inputDispatcher.setDrawerOpen(isOpen)
8380 if (isOpen) {
8481 val parentRoute = navController.previousBackStackEntry?.destination?.route
8582 viewModel.initDrawerFocus(currentRoute, parentRoute)
Original file line number Diff line number Diff line change @@ -10,10 +10,13 @@ class InputDispatcher(
1010) {
1111 private var activeHandler: InputHandler ? = null
1212 private var drawerHandler: InputHandler ? = null
13- private var isDrawerOpen : Boolean = false
13+ private var drawerOpenProvider : (() -> Boolean ) ? = null
1414 private var pendingEvent: GamepadEvent ? = null
1515 private var inputBlockedUntil: Long = 0L
1616
17+ private val isDrawerOpen: Boolean
18+ get() = drawerOpenProvider?.invoke() ? : false
19+
1720 fun setActiveScreen (handler : InputHandler ? ) {
1821 activeHandler = handler
1922 if (handler != null && ! isDrawerOpen) {
@@ -34,8 +37,8 @@ class InputDispatcher(
3437 }
3538 }
3639
37- fun setDrawerOpen ( open : Boolean ) {
38- isDrawerOpen = open
40+ fun setDrawerOpenProvider ( provider : () -> Boolean ) {
41+ drawerOpenProvider = provider
3942 }
4043
4144 fun blockInputFor (durationMs : Long ) {
You can’t perform that action at this time.
0 commit comments