@@ -47,7 +47,6 @@ import org.bitcoindevkit.devkitwallet.presentation.viewmodels.WalletViewModel
4747// M3 motion easing curves
4848private val EmphasizedDecelerate = CubicBezierEasing (0.05f , 0.7f , 0.1f , 1.0f )
4949private val EmphasizedAccelerate = CubicBezierEasing (0.3f , 0.0f , 0.8f , 0.15f )
50-
5150private const val ENTER_DURATION = 400
5251private const val EXIT_DURATION = 200
5352private const val FADE_IN_DURATION = 300
@@ -99,7 +98,6 @@ fun AppNavigation(
9998 onToggleTheme : () -> Unit ,
10099) {
101100 val navController: NavHostController = rememberNavController()
102-
103101 val walletViewModel = remember(activeWallet) { activeWallet?.let { WalletViewModel (it) } }
104102 val addressViewModel = remember(activeWallet) { activeWallet?.let { AddressViewModel (it) } }
105103 val sendViewModel = remember(activeWallet) { activeWallet?.let { SendViewModel (it) } }
@@ -124,73 +122,77 @@ fun AppNavigation(
124122 composable<WalletChoiceScreen > {
125123 WalletChoiceScreen (navController = navController)
126124 }
127-
128125 composable<ActiveWalletsScreen > {
129126 ActiveWalletsScreen (
130127 activeWallets = activeWallets,
131128 navController = navController,
132- onBuildWalletButtonClicked
129+ onBuildWalletButtonClicked = onBuildWalletButtonClicked
133130 )
134131 }
135-
136132 composable<CreateNewWalletScreen > {
137133 CreateNewWalletScreen (navController = navController, onBuildWalletButtonClicked)
138134 }
139-
140135 composable<WalletRecoveryScreen > {
141136 RecoverWalletScreen (onAction = onBuildWalletButtonClicked, navController = navController)
142137 }
143138
144139 // Wallet screens
145140 composable<HomeScreen > {
146- WalletHomeScreen (
147- state = walletViewModel!! .state,
148- onAction = walletViewModel::onAction,
149- navController = navController,
150- )
141+ if (walletViewModel != null ) {
142+ WalletHomeScreen (
143+ state = walletViewModel.state,
144+ onAction = walletViewModel::onAction,
145+ navController = navController,
146+ )
147+ }
151148 }
152-
153149 composable<ReceiveScreen > {
154- ReceiveScreen (
155- state = addressViewModel!! .state,
156- onAction = addressViewModel::onAction,
157- navController = navController,
158- )
150+ if (addressViewModel != null ) {
151+ ReceiveScreen (
152+ state = addressViewModel.state,
153+ onAction = addressViewModel::onAction,
154+ navController = navController,
155+ )
156+ }
157+ }
158+ composable<SendScreen > {
159+ if (sendViewModel != null ) {
160+ SendScreen (navController, sendViewModel)
161+ }
159162 }
160-
161- composable<SendScreen > { SendScreen (navController, sendViewModel!! ) }
162-
163163 composable<RbfScreen > {
164164 val args = it.toRoute<RbfScreen >()
165165 RBFScreen (args.txid, navController)
166166 }
167-
168- composable<TransactionHistoryScreen > { TransactionHistoryScreen (navController, activeWallet!! ) }
169-
167+ composable<TransactionHistoryScreen > {
168+ // Ensure activeWallet is available
169+ activeWallet?.let { wallet ->
170+ TransactionHistoryScreen (navController, wallet)
171+ }
172+ }
170173 composable<TransactionScreen > {
171174 val args = it.toRoute<TransactionScreen >()
172175 TransactionScreen (args.txid, navController)
173176 }
174177
175178 // Settings/drawer screens
176179 composable<SettingsScreen > { SettingsScreen (navController = navController) }
177-
178180 composable<AboutScreen > { AboutScreen (navController = navController) }
179-
180181 composable<RecoveryPhraseScreen > {
181- RecoveryDataScreen (activeWallet!! .getWalletSecrets(), navController = navController)
182+ activeWallet?.let { wallet ->
183+ RecoveryDataScreen (wallet.getWalletSecrets(), navController = navController)
184+ }
182185 }
183-
184186 composable<BlockchainClientScreen > {
185- BlockchainClientScreen (
186- state = walletViewModel!! .state,
187- onAction = walletViewModel::onAction,
188- navController = navController,
189- )
187+ if (walletViewModel != null ) {
188+ BlockchainClientScreen (
189+ state = walletViewModel.state,
190+ onAction = walletViewModel::onAction,
191+ navController = navController,
192+ )
193+ }
190194 }
191-
192195 composable<LogsScreen > { LogsScreen (navController = navController) }
193-
194196 composable<ThemeScreen > {
195197 ThemeScreen (
196198 useDarkTheme = useDarkTheme,
@@ -199,4 +201,4 @@ fun AppNavigation(
199201 )
200202 }
201203 }
202- }
204+ }
0 commit comments