Skip to content

Commit

Permalink
correctly finsh transitions when popping more modalsheets at once
Browse files Browse the repository at this point in the history
  • Loading branch information
hrach committed Oct 23, 2024
1 parent 3903437 commit 5979f34
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 4 deletions.
2 changes: 1 addition & 1 deletion demo/src/main/kotlin/dev/hrach/navigation/demo/NavHost.kt
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ internal fun NavHost(
composable<Destinations.List> { List() }
composable<Destinations.Profile> { Profile() }
modalSheet<Destinations.Modal1> { Modal1(navController) }
modalSheet<Destinations.Modal2> { Modal2() }
modalSheet<Destinations.Modal2> { Modal2(navController) }
bottomSheet<Destinations.BottomSheet> { BottomSheet(navController) }
}
ModalSheetHost(
Expand Down
17 changes: 16 additions & 1 deletion demo/src/main/kotlin/dev/hrach/navigation/demo/screens/Modal2.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,38 @@ package dev.hrach.navigation.demo.screens

import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.systemBars
import androidx.compose.foundation.layout.windowInsetsPadding
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.OutlinedButton
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import androidx.navigation.NavController
import dev.hrach.navigation.demo.Destinations

@Composable
internal fun Modal2() {
internal fun Modal2(navController: NavController) {
Column(
Modifier
.fillMaxSize()
.background(MaterialTheme.colorScheme.surface)
.windowInsetsPadding(WindowInsets.systemBars),
) {
Text("Modal 2")

Spacer(Modifier.height(32.dp))
OutlinedButton(
onClick = {
navController.popBackStack<Destinations.Modal1>(inclusive = true)
},
) {
Text("Close modals")
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -227,8 +227,8 @@ public fun ModalSheetHost(
}
}
LaunchedEffect(transition.currentState, transition.targetState) {
if (transition.currentState == transition.targetState && backStackEntry != null) {
modalSheetNavigator.onTransitionComplete(backStackEntry)
if (transition.currentState == transition.targetState) {
transitionsInProgress.forEach { entry -> modalSheetNavigator.onTransitionComplete(entry) }
zIndices
.filter { it.key != transition.targetState?.id }
.forEach { zIndices.remove(it.key) }
Expand Down

0 comments on commit 5979f34

Please sign in to comment.