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
@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()
@@ -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()
}
@@ -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) {
@@ -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()
}