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
|
contentAlignment = Alignment.Center
|
||||||
) {
|
) {
|
||||||
FilledIconButton(
|
FilledIconButton(
|
||||||
onClick = { navController.navigate(ROUTE_SCANNER) },
|
onClick = {
|
||||||
|
navController.navigate(ROUTE_SCANNER) {
|
||||||
|
popUpTo(TabItem.Send.route) {
|
||||||
|
saveState = true
|
||||||
|
inclusive = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
modifier = Modifier.size(52.dp),
|
modifier = Modifier.size(52.dp),
|
||||||
shape = CircleShape
|
shape = CircleShape
|
||||||
) {
|
) {
|
||||||
@@ -310,10 +317,17 @@ fun WalletScreen(
|
|||||||
composable(ROUTE_SCANNER) {
|
composable(ROUTE_SCANNER) {
|
||||||
QrScannerScreen(
|
QrScannerScreen(
|
||||||
onScanned = { scanned ->
|
onScanned = { scanned ->
|
||||||
navController.popBackStack()
|
|
||||||
vm.scan(scanned)
|
vm.scan(scanned)
|
||||||
navController.navigate(TabItem.Send.route) {
|
val wentBack = navController.popBackStack(TabItem.Send.route, inclusive = false)
|
||||||
launchSingleTop = true
|
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() }
|
onDismiss = { navController.popBackStack() }
|
||||||
|
|||||||
@@ -345,8 +345,8 @@ class SendViewModel(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun handleBolt11Scan(normalized: String) {
|
private fun handleBolt11Scan(normalized: String) {
|
||||||
|
_sendState.value = SendState.Scanning
|
||||||
viewModelScope.launch {
|
viewModelScope.launch {
|
||||||
_sendState.value = SendState.Scanning
|
|
||||||
runCatching { repo.decodeBolt11(normalized) }
|
runCatching { repo.decodeBolt11(normalized) }
|
||||||
.onSuccess { decoded ->
|
.onSuccess { decoded ->
|
||||||
val routeRisk = RouteHintAnalyzer.analyze(
|
val routeRisk = RouteHintAnalyzer.analyze(
|
||||||
@@ -389,9 +389,8 @@ class SendViewModel(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun handleLnurlScan(normalized: String) {
|
private fun handleLnurlScan(normalized: String) {
|
||||||
|
_sendState.value = SendState.Scanning
|
||||||
viewModelScope.launch {
|
viewModelScope.launch {
|
||||||
_sendState.value = SendState.Scanning
|
|
||||||
|
|
||||||
// 1. Cache hit
|
// 1. Cache hit
|
||||||
val cached = lnurlCache.get(normalized)
|
val cached = lnurlCache.get(normalized)
|
||||||
if (cached != null) {
|
if (cached != null) {
|
||||||
|
|||||||
Reference in New Issue
Block a user