taler-android

Android apps for GNU Taler (wallet, PoS, cashier)
Log | Files | Refs | README | LICENSE

commit 8962c80c76c24c416e7e4d96a242b731f1b88752
parent b1468eb48b3a267638ccffca7aaa56458af8096a
Author: Iván Ávalos <avalos@disroot.org>
Date:   Fri, 20 Mar 2026 11:21:18 +0100

[wallet] allow completing pending p2p requests

Diffstat:
Mwallet/src/main/java/net/taler/wallet/main/MainFragment.kt | 15++++++++++++---
Mwallet/src/main/java/net/taler/wallet/peer/PeerManager.kt | 18++++++++++++++----
2 files changed, 26 insertions(+), 7 deletions(-)

diff --git a/wallet/src/main/java/net/taler/wallet/main/MainFragment.kt b/wallet/src/main/java/net/taler/wallet/main/MainFragment.kt @@ -270,9 +270,18 @@ class MainFragment: Fragment() { // unfinished transactions (dialog) TransactionState(TransactionMajorState.Dialog) -> when (tx) { is TransactionPayment -> { - model.paymentManager.preparePay(tx.transactionId) { - findNavController().navigate(R.id.action_global_promptPayment) - } + model.paymentManager.preparePay(tx.transactionId) {} + findNavController().navigate(R.id.action_global_promptPayment) + } + + is TransactionPeerPushCredit -> { + model.peerManager.preparePeerPushCredit(transactionId = tx.transactionId) + findNavController().navigate(R.id.action_global_promptPushPayment) + } + + is TransactionPeerPullDebit -> { + model.peerManager.preparePeerPullDebit(transactionId = tx.transactionId) + findNavController().navigate(R.id.action_global_promptPullPayment) } else -> showTxDetails() diff --git a/wallet/src/main/java/net/taler/wallet/peer/PeerManager.kt b/wallet/src/main/java/net/taler/wallet/peer/PeerManager.kt @@ -267,11 +267,16 @@ class PeerManager( _outgoingPushState.value = OutgoingIntro } - fun preparePeerPullDebit(talerUri: String) { + fun preparePeerPullDebit( + talerUri: String? = null, + transactionId: String? = null, + ) { _incomingPullState.value = IncomingChecking scope.launch(Dispatchers.IO) { api.request("preparePeerPullDebit", PreparePeerPullDebitResponse.serializer()) { - put("talerUri", talerUri) + talerUri?.let { put("talerUri", talerUri) } + transactionId?.let { put("transactionId", transactionId) } + this }.onSuccess { response -> _incomingPullState.value = IncomingTerms( amountRaw = response.amountRaw, @@ -300,11 +305,16 @@ class PeerManager( } } - fun preparePeerPushCredit(talerUri: String) { + fun preparePeerPushCredit( + talerUri: String? = null, + transactionId: String? = null, + ) { _incomingPushState.value = IncomingChecking scope.launch(Dispatchers.IO) a@ { api.request("preparePeerPushCredit", PreparePeerPushCreditResponse.serializer()) { - put("talerUri", talerUri) + talerUri?.let { put("talerUri", talerUri) } + transactionId?.let { put("transactionId", transactionId) } + this }.onSuccess { response -> scope.launch(Dispatchers.IO) b@ { val exchange = exchangeManager.findExchangeByUrl(response.exchangeBaseUrl)