feat: add details button to paymentsent

This commit is contained in:
2026-06-02 15:26:33 +02:00
parent 9a1bb3e008
commit 2be68d38a5
4 changed files with 26 additions and 7 deletions
@@ -30,7 +30,7 @@ import com.bitcointxoko.gudariwallet.util.satsToFiat
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@Composable @Composable
fun SendScreen(vm: WalletViewModel) { fun SendScreen(vm: WalletViewModel, onViewDetails: (paymentHash: String) -> Unit = {}) {
val sendState: SendState by vm.sendState.collectAsStateWithLifecycle() val sendState: SendState by vm.sendState.collectAsStateWithLifecycle()
var input by remember { mutableStateOf("") } var input by remember { mutableStateOf("") }
val context = LocalContext.current val context = LocalContext.current
@@ -199,6 +199,11 @@ fun SendScreen(vm: WalletViewModel) {
color = MaterialTheme.colorScheme.onSurfaceVariant color = MaterialTheme.colorScheme.onSurfaceVariant
) )
Spacer(Modifier.height(32.dp)) Spacer(Modifier.height(32.dp))
OutlinedButton(
onClick = { onViewDetails(state.paymentHash) },
modifier = Modifier.fillMaxWidth()
) { Text("Details") }
Spacer(Modifier.height(8.dp))
Button( Button(
onClick = { vm.resetSendState(); input = "" }, onClick = { vm.resetSendState(); input = "" },
modifier = Modifier.fillMaxWidth() modifier = Modifier.fillMaxWidth()
@@ -83,7 +83,8 @@ sealed class SendState {
data object Paying : SendState() data object Paying : SendState()
data class PaymentSent( data class PaymentSent(
val amountSats : Long, val amountSats : Long,
val feeSats : Long? = null val feeSats : Long? = null,
val paymentHash: String
) : SendState() ) : SendState()
data class Error(val message: String) : SendState() data class Error(val message: String) : SendState()
} }
@@ -271,7 +271,16 @@ fun WalletScreen(
navController.navigate("payment_detail/$checkingId") 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 // Scanner — full screen, no bottom chrome
composable(ROUTE_SCANNER) { composable(ROUTE_SCANNER) {
@@ -74,7 +74,8 @@ class SendViewModel(
}.getOrNull() }.getOrNull()
_sendState.value = SendState.PaymentSent( _sendState.value = SendState.PaymentSent(
amountSats = amountSats, amountSats = amountSats,
feeSats = feeSats feeSats = feeSats,
paymentHash = response.paymentHash
) )
balanceVm.refreshBalance() balanceVm.refreshBalance()
} }
@@ -219,14 +220,16 @@ class SendViewModel(
_sendState.value = SendState.Paying _sendState.value = SendState.Paying
val directResult = runCatching { repo.payBolt11(state.bolt11) } val directResult = runCatching { repo.payBolt11(state.bolt11) }
val paymentHash = directResult.getOrThrow().paymentHash
if (directResult.isSuccess) { if (directResult.isSuccess) {
val feeSats = runCatching { val feeSats = runCatching {
repo.getPaymentDetail(directResult.getOrThrow().paymentHash).details?.feeSat repo.getPaymentDetail(paymentHash).details?.feeSat
}.getOrNull() }.getOrNull()
_sendState.value = SendState.PaymentSent( _sendState.value = SendState.PaymentSent(
amountSats = state.amountSats, amountSats = state.amountSats,
feeSats = feeSats feeSats = feeSats,
paymentHash = paymentHash
) )
balanceVm.refreshBalance() balanceVm.refreshBalance()
return@launch return@launch
@@ -451,7 +454,8 @@ class SendViewModel(
}.getOrNull() }.getOrNull()
_sendState.value = SendState.PaymentSent( _sendState.value = SendState.PaymentSent(
amountSats = amountMsat / WalletConstants.MSAT_PER_SAT, amountSats = amountMsat / WalletConstants.MSAT_PER_SAT,
feeSats = feeSats feeSats = feeSats,
paymentHash = paymentHash
) )
balanceVm.refreshBalance() balanceVm.refreshBalance()
} }