11package com.ninecraft.booket.feature.main.screens
22
33import androidx.compose.runtime.Composable
4+ import androidx.compose.runtime.remember
45import com.ninecraft.booket.feature.main.component.MainTab
56import com.ninecraft.booket.screens.BottomNavigationScreen
67import com.ninecraft.booket.screens.HomeScreen
78import com.slack.circuit.backstack.SaveableBackStack
89import com.slack.circuit.backstack.rememberSaveableBackStack
910import com.slack.circuit.codegen.annotations.CircuitInject
1011import com.slack.circuit.foundation.rememberCircuitNavigator
12+ import com.slack.circuit.runtime.Navigator
1113import com.slack.circuit.runtime.presenter.Presenter
14+ import dagger.assisted.Assisted
1215import dagger.assisted.AssistedFactory
1316import dagger.assisted.AssistedInject
1417import dagger.hilt.android.components.ActivityRetainedComponent
1518
16- class BottomNavigationPresenter @AssistedInject constructor() : Presenter<BottomNavigationUiState> {
19+ class BottomNavigationPresenter @AssistedInject constructor(
20+ @Assisted private val rootNavigator : Navigator ,
21+ ) : Presenter<BottomNavigationUiState> {
1722
1823 @Composable
1924 override fun present (): BottomNavigationUiState {
2025 val childBackStack = rememberSaveableBackStack(root = HomeScreen )
2126 val childNavigator = rememberCircuitNavigator(childBackStack)
27+ val delegateNavigator = remember(childNavigator, rootNavigator) {
28+ DelegateNavigator (childNavigator, rootNavigator)
29+ }
2230
2331 val currentTab = getCurrentTab(childBackStack)
2432
@@ -36,7 +44,7 @@ class BottomNavigationPresenter @AssistedInject constructor() : Presenter<Bottom
3644
3745 return BottomNavigationUiState (
3846 childBackStack = childBackStack,
39- childNavigator = childNavigator ,
47+ childNavigator = delegateNavigator ,
4048 currentTab = currentTab,
4149 eventSink = ::handleEvent,
4250 )
@@ -45,7 +53,7 @@ class BottomNavigationPresenter @AssistedInject constructor() : Presenter<Bottom
4553 @CircuitInject(BottomNavigationScreen ::class , ActivityRetainedComponent ::class )
4654 @AssistedFactory
4755 fun interface Factory {
48- fun create (): BottomNavigationPresenter
56+ fun create (rootNavigator : Navigator ): BottomNavigationPresenter
4957 }
5058}
5159
0 commit comments