From 5ab5ed6aa455e274317c6b5f47230efff9235ef3 Mon Sep 17 00:00:00 2001 From: Anuj Date: Tue, 3 Mar 2026 01:20:12 +0530 Subject: [PATCH] Migrate to Nav-3 --- app/build.gradle.kts | 4 ++ .../presentation/navigation/AppNavigation.kt | 72 ++++++++++--------- .../presentation/navigation/Destinations.kt | 2 +- 3 files changed, 42 insertions(+), 36 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index e60b19f..29f78b3 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -78,9 +78,13 @@ dependencies { // Bitcoin Development Kit implementation("org.bitcoindevkit:bdk-android:2.3.1") + // Nav-3 + implementation("androidx.navigation:navigation-compose:2.8.0") + implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3") // QR codes implementation("com.google.zxing:core:3.5.4") + implementation("com.google.android.gms:play-services-tflite-support:16.4.0") // Tests testImplementation("junit:junit:4.13.2") diff --git a/app/src/main/java/org/bitcoindevkit/devkitwallet/presentation/navigation/AppNavigation.kt b/app/src/main/java/org/bitcoindevkit/devkitwallet/presentation/navigation/AppNavigation.kt index 5d1f7a6..278b544 100644 --- a/app/src/main/java/org/bitcoindevkit/devkitwallet/presentation/navigation/AppNavigation.kt +++ b/app/src/main/java/org/bitcoindevkit/devkitwallet/presentation/navigation/AppNavigation.kt @@ -47,7 +47,6 @@ import org.bitcoindevkit.devkitwallet.presentation.viewmodels.WalletViewModel // M3 motion easing curves private val EmphasizedDecelerate = CubicBezierEasing(0.05f, 0.7f, 0.1f, 1.0f) private val EmphasizedAccelerate = CubicBezierEasing(0.3f, 0.0f, 0.8f, 0.15f) - private const val ENTER_DURATION = 400 private const val EXIT_DURATION = 200 private const val FADE_IN_DURATION = 300 @@ -99,7 +98,6 @@ fun AppNavigation( onToggleTheme: () -> Unit, ) { val navController: NavHostController = rememberNavController() - val walletViewModel = remember(activeWallet) { activeWallet?.let { WalletViewModel(it) } } val addressViewModel = remember(activeWallet) { activeWallet?.let { AddressViewModel(it) } } val sendViewModel = remember(activeWallet) { activeWallet?.let { SendViewModel(it) } } @@ -124,49 +122,54 @@ fun AppNavigation( composable { WalletChoiceScreen(navController = navController) } - composable { ActiveWalletsScreen( activeWallets = activeWallets, navController = navController, - onBuildWalletButtonClicked + onBuildWalletButtonClicked = onBuildWalletButtonClicked ) } - composable { CreateNewWalletScreen(navController = navController, onBuildWalletButtonClicked) } - composable { RecoverWalletScreen(onAction = onBuildWalletButtonClicked, navController = navController) } // Wallet screens composable { - WalletHomeScreen( - state = walletViewModel!!.state, - onAction = walletViewModel::onAction, - navController = navController, - ) + if (walletViewModel != null) { + WalletHomeScreen( + state = walletViewModel.state, + onAction = walletViewModel::onAction, + navController = navController, + ) + } } - composable { - ReceiveScreen( - state = addressViewModel!!.state, - onAction = addressViewModel::onAction, - navController = navController, - ) + if (addressViewModel != null) { + ReceiveScreen( + state = addressViewModel.state, + onAction = addressViewModel::onAction, + navController = navController, + ) + } + } + composable { + if (sendViewModel != null) { + SendScreen(navController, sendViewModel) + } } - - composable { SendScreen(navController, sendViewModel!!) } - composable { val args = it.toRoute() RBFScreen(args.txid, navController) } - - composable { TransactionHistoryScreen(navController, activeWallet!!) } - + composable { + // Ensure activeWallet is available + activeWallet?.let { wallet -> + TransactionHistoryScreen(navController, wallet) + } + } composable { val args = it.toRoute() TransactionScreen(args.txid, navController) @@ -174,23 +177,22 @@ fun AppNavigation( // Settings/drawer screens composable { SettingsScreen(navController = navController) } - composable { AboutScreen(navController = navController) } - composable { - RecoveryDataScreen(activeWallet!!.getWalletSecrets(), navController = navController) + activeWallet?.let { wallet -> + RecoveryDataScreen(wallet.getWalletSecrets(), navController = navController) + } } - composable { - BlockchainClientScreen( - state = walletViewModel!!.state, - onAction = walletViewModel::onAction, - navController = navController, - ) + if (walletViewModel != null) { + BlockchainClientScreen( + state = walletViewModel.state, + onAction = walletViewModel::onAction, + navController = navController, + ) + } } - composable { LogsScreen(navController = navController) } - composable { ThemeScreen( useDarkTheme = useDarkTheme, @@ -199,4 +201,4 @@ fun AppNavigation( ) } } -} +} \ No newline at end of file diff --git a/app/src/main/java/org/bitcoindevkit/devkitwallet/presentation/navigation/Destinations.kt b/app/src/main/java/org/bitcoindevkit/devkitwallet/presentation/navigation/Destinations.kt index 917f863..972e78b 100644 --- a/app/src/main/java/org/bitcoindevkit/devkitwallet/presentation/navigation/Destinations.kt +++ b/app/src/main/java/org/bitcoindevkit/devkitwallet/presentation/navigation/Destinations.kt @@ -56,4 +56,4 @@ object TransactionHistoryScreen data class TransactionScreen(val txid: String) @Serializable -data class RbfScreen(val txid: String) +data class RbfScreen(val txid: String) \ No newline at end of file