Skip to content

Commit 9b34ce2

Browse files
committed
[BOOK-124] refactor: DelegateNavigator 개선
isBottomNavigationScreenClasses -> 너무 긴 명수명이기도 하고, BottomNavigationScreen이란 컴포넌트를 현재 사용하고 있기 때문에, 의미가 중의적이될 수 있어 isMainTabScreen이라는 함수로 변경 goTo, resetRoot를 제외한 pop/peek/peekBackStack함수의 경우 항상 childNavigator를 사용하기 때문에 분기처리가 의미없다고 생각하여 분기처리 코드 제거
1 parent d389eff commit 9b34ce2

File tree

1 file changed

+8
-24
lines changed

1 file changed

+8
-24
lines changed

feature/main/src/main/kotlin/com/ninecraft/booket/feature/main/screens/DelegateNavigator.kt

Lines changed: 8 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)