fix: navigate to send confirmation broken when already on idle send screen
This commit is contained in:
@@ -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() }
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user