diff --git a/app/src/main/java/com/bitcointxoko/gudariwallet/ui/SendScreen.kt b/app/src/main/java/com/bitcointxoko/gudariwallet/ui/SendScreen.kt index 8f2eb09..fe9594b 100644 --- a/app/src/main/java/com/bitcointxoko/gudariwallet/ui/SendScreen.kt +++ b/app/src/main/java/com/bitcointxoko/gudariwallet/ui/SendScreen.kt @@ -30,7 +30,7 @@ import com.bitcointxoko.gudariwallet.util.satsToFiat import kotlinx.coroutines.launch @Composable -fun SendScreen(vm: WalletViewModel) { +fun SendScreen(vm: WalletViewModel, onViewDetails: (paymentHash: String) -> Unit = {}) { val sendState: SendState by vm.sendState.collectAsStateWithLifecycle() var input by remember { mutableStateOf("") } val context = LocalContext.current @@ -199,6 +199,11 @@ fun SendScreen(vm: WalletViewModel) { color = MaterialTheme.colorScheme.onSurfaceVariant ) Spacer(Modifier.height(32.dp)) + OutlinedButton( + onClick = { onViewDetails(state.paymentHash) }, + modifier = Modifier.fillMaxWidth() + ) { Text("Details") } + Spacer(Modifier.height(8.dp)) Button( onClick = { vm.resetSendState(); input = "" }, modifier = Modifier.fillMaxWidth() diff --git a/app/src/main/java/com/bitcointxoko/gudariwallet/ui/UiStates.kt b/app/src/main/java/com/bitcointxoko/gudariwallet/ui/UiStates.kt index 59d89da..4470364 100644 --- a/app/src/main/java/com/bitcointxoko/gudariwallet/ui/UiStates.kt +++ b/app/src/main/java/com/bitcointxoko/gudariwallet/ui/UiStates.kt @@ -83,7 +83,8 @@ sealed class SendState { data object Paying : SendState() data class PaymentSent( val amountSats : Long, - val feeSats : Long? = null + val feeSats : Long? = null, + val paymentHash: String ) : SendState() data class Error(val message: String) : SendState() } 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 550a513..a845200 100644 --- a/app/src/main/java/com/bitcointxoko/gudariwallet/ui/WalletScreen.kt +++ b/app/src/main/java/com/bitcointxoko/gudariwallet/ui/WalletScreen.kt @@ -271,7 +271,16 @@ fun WalletScreen( navController.navigate("payment_detail/$checkingId") } )} - composable(TabItem.Send.route) { SendScreen(vm) } + composable(TabItem.Send.route) { + SendScreen( + vm = vm, + onViewDetails = { paymentHash -> + navController.navigate("payment_detail/$paymentHash") { + launchSingleTop = true + } + } + ) + } // Scanner — full screen, no bottom chrome composable(ROUTE_SCANNER) { 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 3982ac4..55ab8dc 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 @@ -74,7 +74,8 @@ class SendViewModel( }.getOrNull() _sendState.value = SendState.PaymentSent( amountSats = amountSats, - feeSats = feeSats + feeSats = feeSats, + paymentHash = response.paymentHash ) balanceVm.refreshBalance() } @@ -219,14 +220,16 @@ class SendViewModel( _sendState.value = SendState.Paying val directResult = runCatching { repo.payBolt11(state.bolt11) } + val paymentHash = directResult.getOrThrow().paymentHash if (directResult.isSuccess) { val feeSats = runCatching { - repo.getPaymentDetail(directResult.getOrThrow().paymentHash).details?.feeSat + repo.getPaymentDetail(paymentHash).details?.feeSat }.getOrNull() _sendState.value = SendState.PaymentSent( amountSats = state.amountSats, - feeSats = feeSats + feeSats = feeSats, + paymentHash = paymentHash ) balanceVm.refreshBalance() return@launch @@ -451,7 +454,8 @@ class SendViewModel( }.getOrNull() _sendState.value = SendState.PaymentSent( amountSats = amountMsat / WalletConstants.MSAT_PER_SAT, - feeSats = feeSats + feeSats = feeSats, + paymentHash = paymentHash ) balanceVm.refreshBalance() }