From f53e512edfca33e28301066a3b4f3a3b7e8eb4ca Mon Sep 17 00:00:00 2001 From: rasputin Date: Fri, 5 Jun 2026 20:08:18 +0200 Subject: [PATCH] fix: navigate to send confirmation broken when already on idle send screen --- .../gudariwallet/ui/WalletScreen.kt | 22 +++++++++++++++---- .../gudariwallet/ui/send/SendViewModel.kt | 5 ++--- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/bitcointxoko/gudariwallet/ui/WalletScreen.kt b/app/src/main/java/com/bitcointxoko/gudariwallet/ui/WalletScreen.kt index 8b3c2e9..a63406c 100644 --- a/app/src/main/java/com/bitcointxoko/gudariwallet/ui/WalletScreen.kt +++ b/app/src/main/java/com/bitcointxoko/gudariwallet/ui/WalletScreen.kt @@ -223,7 +223,14 @@ fun WalletScreen( contentAlignment = Alignment.Center ) { FilledIconButton( - onClick = { navController.navigate(ROUTE_SCANNER) }, + onClick = { + navController.navigate(ROUTE_SCANNER) { + popUpTo(TabItem.Send.route) { + saveState = true + inclusive = false + } + } + }, modifier = Modifier.size(52.dp), shape = CircleShape ) { @@ -310,10 +317,17 @@ fun WalletScreen( composable(ROUTE_SCANNER) { QrScannerScreen( onScanned = { scanned -> - navController.popBackStack() vm.scan(scanned) - navController.navigate(TabItem.Send.route) { - launchSingleTop = true + val wentBack = navController.popBackStack(TabItem.Send.route, inclusive = false) + if (!wentBack) { + // Scan was triggered from a non-Send tab — navigate to Send + navController.navigate(TabItem.Send.route) { + popUpTo(navController.graph.findStartDestination().id) { + saveState = true + } + launchSingleTop = true + restoreState = false // don't restore old Idle state; VM already has new state + } } }, onDismiss = { navController.popBackStack() } diff --git a/app/src/main/java/com/bitcointxoko/gudariwallet/ui/send/SendViewModel.kt b/app/src/main/java/com/bitcointxoko/gudariwallet/ui/send/SendViewModel.kt index 73c695d..4f0d62f 100644 --- a/app/src/main/java/com/bitcointxoko/gudariwallet/ui/send/SendViewModel.kt +++ b/app/src/main/java/com/bitcointxoko/gudariwallet/ui/send/SendViewModel.kt @@ -345,8 +345,8 @@ class SendViewModel( } private fun handleBolt11Scan(normalized: String) { + _sendState.value = SendState.Scanning viewModelScope.launch { - _sendState.value = SendState.Scanning runCatching { repo.decodeBolt11(normalized) } .onSuccess { decoded -> val routeRisk = RouteHintAnalyzer.analyze( @@ -389,9 +389,8 @@ class SendViewModel( } private fun handleLnurlScan(normalized: String) { + _sendState.value = SendState.Scanning viewModelScope.launch { - _sendState.value = SendState.Scanning - // 1. Cache hit val cached = lnurlCache.get(normalized) if (cached != null) {