@@ -10,55 +10,39 @@ class DelegateNavigator(
1010 private val childNavigator : Navigator ,
1111 private val rootNavigator : Navigator ,
1212) : Navigator {
13- private val bottomNavigationScreenClasses = MainTab .entries.map { it.screen::class }.toSet()
14-
15- private fun Screen.isBottomNavigationScreen (): Boolean =
16- this ::class in bottomNavigationScreenClasses
13+ private fun isMainTabScreen (screen : Screen ): Boolean {
14+ return MainTab .entries.any { it.screen::class == screen::class }
15+ }
1716
1817 override fun goTo (screen : Screen ): Boolean {
19- return if (screen.isBottomNavigationScreen( )) {
18+ return if (isMainTabScreen(screen )) {
2019 childNavigator.goTo(screen)
2120 } else {
2221 rootNavigator.goTo(screen)
2322 }
2423 }
2524
2625 override fun pop (result : PopResult ? ): Screen ? {
27- val currentScreen = childNavigator.peek()
28- return if (currentScreen?.isBottomNavigationScreen() == true ) {
29- childNavigator.pop(result)
30- } else {
31- rootNavigator.pop(result)
32- }
26+ return childNavigator.pop(result)
3327 }
3428
3529 override fun peek (): Screen ? {
36- val childScreen = childNavigator.peek()
37- return if (childScreen?.isBottomNavigationScreen() == true ) {
38- childScreen
39- } else {
40- rootNavigator.peek()
41- }
30+ return childNavigator.peek()
4231 }
4332
4433 override fun resetRoot (
4534 newRoot : Screen ,
4635 saveState : Boolean ,
4736 restoreState : Boolean ,
4837 ): ImmutableList <Screen > {
49- return if (newRoot.isBottomNavigationScreen( )) {
38+ return if (isMainTabScreen(newRoot )) {
5039 childNavigator.resetRoot(newRoot, saveState, restoreState)
5140 } else {
5241 rootNavigator.resetRoot(newRoot, saveState, restoreState)
5342 }
5443 }
5544
5645 override fun peekBackStack (): ImmutableList <Screen > {
57- val childScreen = childNavigator.peek()
58- return if (childScreen?.isBottomNavigationScreen() == true ) {
59- childNavigator.peekBackStack()
60- } else {
61- rootNavigator.peekBackStack()
62- }
46+ return childNavigator.peekBackStack()
6347 }
6448}
0 commit comments