Skip to content

Commit c8e167b

Browse files
committed
[BOOK-124] feat: goTo() 외에 다른 API 도 bottomNavigation 에 포함된 화면인가에 따른 분기 처리 추가
1 parent a173a58 commit c8e167b

File tree

2 files changed

+32
-5
lines changed

2 files changed

+32
-5
lines changed

feature/login/src/main/kotlin/com/ninecraft/booket/feature/login/LoginPresenter.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ class LoginPresenter @AssistedInject constructor(
5252
isLoading = true
5353
repository.login(event.accessToken)
5454
.onSuccess {
55-
navigator.goTo(TermsAgreementScreen)
55+
navigator.resetRoot(TermsAgreementScreen)
5656
}.onFailure { exception ->
5757
exception.message?.let { Logger.e(it) }
5858
sideEffect = exception.message?.let {

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

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,42 @@ class DelegatingNavigator(
1919
}
2020
}
2121

22-
override fun pop(result: PopResult?): Screen? = childNavigator.pop(result)
22+
override fun pop(result: PopResult?): Screen? {
23+
val currentScreen = childNavigator.peek()
24+
return if (currentScreen != null && MainTab.entries.any { it.screen::class == currentScreen::class }) {
25+
childNavigator.pop(result)
26+
} else {
27+
rootNavigator.pop(result)
28+
}
29+
}
2330

24-
override fun peek(): Screen? = childNavigator.peek()
31+
override fun peek(): Screen? {
32+
val childScreen = childNavigator.peek()
33+
return if (childScreen != null && MainTab.entries.any { it.screen::class == childScreen::class }) {
34+
childScreen
35+
} else {
36+
rootNavigator.peek()
37+
}
38+
}
2539

2640
override fun resetRoot(
2741
newRoot: Screen,
2842
saveState: Boolean,
2943
restoreState: Boolean,
30-
): ImmutableList<Screen> = childNavigator.resetRoot(newRoot, saveState, restoreState)
44+
): ImmutableList<Screen> {
45+
return if (MainTab.entries.any { it.screen::class == newRoot::class }) {
46+
childNavigator.resetRoot(newRoot, saveState, restoreState)
47+
} else {
48+
rootNavigator.resetRoot(newRoot, saveState, restoreState)
49+
}
50+
}
3151

32-
override fun peekBackStack(): ImmutableList<Screen> = childNavigator.peekBackStack()
52+
override fun peekBackStack(): ImmutableList<Screen> {
53+
val childScreen = childNavigator.peek()
54+
return if (childScreen != null && MainTab.entries.any { it.screen::class == childScreen::class }) {
55+
childNavigator.peekBackStack()
56+
} else {
57+
rootNavigator.peekBackStack()
58+
}
59+
}
3360
}

0 commit comments

Comments
 (0)