Skip to content

Commit

Permalink
Merge pull request #306 from hotwired/dialog-cancel
Browse files Browse the repository at this point in the history
Properly handle navigate back/up from bottom sheet dialog fragments
  • Loading branch information
jayohms authored Feb 24, 2024
2 parents 95de8a7 + 00b875b commit 6ab923c
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -97,10 +97,7 @@ class TurboFragmentDelegate(private val navDestination: TurboNavDestination) {
navDestination.toolbarForNavigation()?.let {
NavigationUI.setupWithNavController(it, fragment.findNavController())
it.setNavigationOnClickListener {
when (fragment) {
is DialogFragment -> fragment.requireDialog().cancel()
else -> navDestination.navigateUp()
}
navDestination.navigateUp()
}
}
}
Expand Down
12 changes: 10 additions & 2 deletions turbo/src/main/kotlin/dev/hotwire/turbo/nav/TurboNavigator.kt
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,21 @@ internal class TurboNavigator(private val navDestination: TurboNavDestination) {

fun navigateUp() {
onNavigationVisit {
currentController().navigateUp()
if (fragment is DialogFragment) {
fragment.requireDialog().cancel()
} else {
currentController().navigateUp()
}
}
}

fun navigateBack() {
onNavigationVisit {
currentController().popBackStack()
if (fragment is DialogFragment) {
fragment.requireDialog().cancel()
} else {
currentController().popBackStack()
}
}
}

Expand Down

0 comments on commit 6ab923c

Please sign in to comment.