diff --git a/wallet/src/main/java/net/taler/wallet/HandleUriScreen.kt b/wallet/src/main/java/net/taler/wallet/HandleUriScreen.kt index 03a3c56a..39757cc0 100644 --- a/wallet/src/main/java/net/taler/wallet/HandleUriScreen.kt +++ b/wallet/src/main/java/net/taler/wallet/HandleUriScreen.kt @@ -115,8 +115,15 @@ fun HandleUriScreen( is RefundStatus.Error -> { errorInfo = status.error } - is RefundStatus.Success -> { - onNavigateBack() + is RefundStatus.Success -> scope.launch { + // Show the purchase the refund belongs to, + // like for a payment URI. + val transactionId = status.response.transactionId + if (model.transactionManager.selectTransaction(transactionId)) { + onNavigate(WalletDestination.TransactionPayment(), true) + } else { + onNavigateBack() + } } } } diff --git a/wallet/src/main/java/net/taler/wallet/payment/TransactionPaymentComposable.kt b/wallet/src/main/java/net/taler/wallet/payment/TransactionPaymentComposable.kt index 984a97f8..962060a9 100644 --- a/wallet/src/main/java/net/taler/wallet/payment/TransactionPaymentComposable.kt +++ b/wallet/src/main/java/net/taler/wallet/payment/TransactionPaymentComposable.kt @@ -138,6 +138,14 @@ fun TransactionPaymentComposable( amountType = AmountType.Negative, ) + if (t.totalRefundEffective?.isZero() == false) { + TransactionAmountComposable( + label = stringResource(id = R.string.transaction_refund), + amount = t.totalRefundEffective.withSpec(t.amountRaw.spec), + amountType = AmountType.Positive, + ) + } + if (t.posConfirmation != null) PayTotpComposable( totpString = t.posConfirmation, enableNfc = t.posConfirmationViaNfc == true, diff --git a/wallet/src/main/java/net/taler/wallet/transactions/Transactions.kt b/wallet/src/main/java/net/taler/wallet/transactions/Transactions.kt index d5d397c5..d2c7e57b 100644 --- a/wallet/src/main/java/net/taler/wallet/transactions/Transactions.kt +++ b/wallet/src/main/java/net/taler/wallet/transactions/Transactions.kt @@ -451,6 +451,7 @@ data class TransactionPayment( override val amountRaw: Amount, override val amountEffective: Amount, override val scopes: List, + val totalRefundEffective: Amount? = null, val posConfirmation: String? = null, val posConfirmationViaNfc: Boolean? = null, ) : Transaction() {