@@ -27,13 +27,10 @@ import androidx.lifecycle.compose.LocalLifecycleOwner
2727import androidx.lifecycle.compose.collectAsStateWithLifecycle
2828import androidx.navigation3.runtime.NavKey
2929import androidx.navigation3.runtime.entryProvider
30- import androidx.navigation3.runtime.rememberNavBackStack
3130import androidx.navigation3.ui.NavDisplay
32- import kotlinx.coroutines.delay
3331import to.bitkit.models.NodeLifecycleState
3432import to.bitkit.ui.components.DrawerMenu
3533import to.bitkit.ui.components.TabBar
36- import to.bitkit.ui.nav.MS_NAV_DELAY
3734import to.bitkit.ui.nav.Navigator
3835import to.bitkit.ui.nav.Routes
3936import to.bitkit.ui.nav.SheetSceneStrategy
@@ -54,16 +51,15 @@ import to.bitkit.viewmodels.AppViewModel
5451import to.bitkit.viewmodels.BackupsViewModel
5552import to.bitkit.viewmodels.BlocktankViewModel
5653import to.bitkit.viewmodels.CurrencyViewModel
57- import to.bitkit.viewmodels.MainScreenEffect
5854import to.bitkit.viewmodels.RestoreState
59- import to.bitkit.viewmodels.SendEffect
6055import to.bitkit.viewmodels.SettingsViewModel
6156import to.bitkit.viewmodels.TransferViewModel
6257import to.bitkit.viewmodels.WalletViewModel
6358
6459@Suppress(" CyclomaticComplexMethod" , " LongMethod" )
6560@Composable
6661fun ContentView (
62+ navigator : Navigator ,
6763 appViewModel : AppViewModel ,
6864 walletViewModel : WalletViewModel ,
6965 blocktankViewModel : BlocktankViewModel ,
@@ -74,8 +70,6 @@ fun ContentView(
7470 backupsViewModel : BackupsViewModel ,
7571 modifier : Modifier = Modifier ,
7672) {
77- val backStack = rememberNavBackStack(Routes .Home )
78- val navigator = remember(backStack) { Navigator (backStack) }
7973 val lightningConnectionsViewModel = hiltViewModel<LightningConnectionsViewModel >()
8074
8175 val drawerState = rememberDrawerState(initialValue = DrawerValue .Closed )
@@ -124,48 +118,6 @@ fun ContentView(
124118
125119 LaunchedEffect (Unit ) { walletViewModel.handleHideBalanceOnOpen() }
126120
127- LaunchedEffect (appViewModel) {
128- appViewModel.mainScreenEffect.collect {
129- when (it) {
130- is MainScreenEffect .Navigate -> navigator.navigate(it.route)
131- is MainScreenEffect .NavigateAndClearBackstack -> navigator.navigateAndClearBackstack(it.route)
132- is MainScreenEffect .ProcessClipboardAutoRead -> {
133- if (! navigator.isAtHome()) {
134- navigator.navigateToHome()
135- delay(MS_NAV_DELAY )
136- }
137- appViewModel.onScanResult(it.data)
138- }
139-
140- else -> Unit
141- }
142- }
143- }
144-
145- // Handle Send flow navigation effects
146- LaunchedEffect (appViewModel, navigator) {
147- appViewModel.sendEffect.collect { effect ->
148- when (effect) {
149- is SendEffect .NavigateToAddress -> navigator.navigate(Routes .Send .Address )
150- is SendEffect .NavigateToAmount -> navigator.navigate(Routes .Send .Amount ())
151- is SendEffect .NavigateToScan -> navigator.navigate(Routes .Send .QrScanner )
152- is SendEffect .NavigateToCoinSelection -> navigator.navigate(Routes .Send .CoinSelection )
153- is SendEffect .NavigateToConfirm -> navigator.navigate(Routes .Send .Confirm )
154- is SendEffect .NavigateToQuickPay -> navigator.navigate(Routes .Send .QuickPay )
155- is SendEffect .NavigateToWithdrawConfirm -> navigator.navigate(Routes .Send .WithdrawConfirm )
156- is SendEffect .NavigateToWithdrawError -> navigator.navigate(Routes .Send .WithdrawError )
157- is SendEffect .NavigateToFee -> navigator.navigate(Routes .Send .FeeRate )
158- is SendEffect .NavigateToFeeCustom -> navigator.navigate(Routes .Send .FeeCustom )
159- is SendEffect .PaymentSuccess -> {
160- appViewModel.clearClipboardForAutoRead()
161- navigator.navigate(Routes .Send .Success )
162- }
163-
164- is SendEffect .PopBack -> navigator.popBackTo(effect.route)
165- }
166- }
167- }
168-
169121 var walletIsInitializing by remember { mutableStateOf(nodeLifecycleState == NodeLifecycleState .Initializing ) }
170122 var walletInitShouldFinish by remember { mutableStateOf(false ) }
171123
@@ -257,7 +209,7 @@ fun ContentView(
257209 Box (modifier = modifier.fillMaxSize()) {
258210 Box (modifier = Modifier .fillMaxSize()) {
259211 NavDisplay (
260- backStack = backStack ,
212+ backStack = navigator.navBackStack ,
261213 modifier = Modifier .fillMaxSize(),
262214 sceneStrategy = SheetSceneStrategy <NavKey >(),
263215 transitionSpec = Transitions .screenDefault,
@@ -305,7 +257,6 @@ fun ContentView(
305257 }
306258 )
307259
308- // Use derivedStateOf to ensure reactive observation of backStack changes
309260 val showTabBar by remember {
310261 derivedStateOf { navigator.shouldShowTabBar() }
311262 }
0 commit comments