diff options
author | Torsten Grote <t@grobox.de> | 2020-02-14 12:24:51 -0300 |
---|---|---|
committer | Torsten Grote <t@grobox.de> | 2020-02-14 16:13:20 -0300 |
commit | 497af85f4ccd40aaba29cf1fa3ed230a4d43159c (patch) | |
tree | 8f88ed7ba3273146ca6ab75cb3b0ed8755f65d1a /app/src/main/java/net/taler/wallet | |
parent | b2db61af90cde2c686bd75b7e8b8e69cb736a3b9 (diff) | |
download | wallet-android-497af85f4ccd40aaba29cf1fa3ed230a4d43159c.tar.gz wallet-android-497af85f4ccd40aaba29cf1fa3ed230a4d43159c.tar.bz2 wallet-android-497af85f4ccd40aaba29cf1fa3ed230a4d43159c.zip |
Automatically abort payment proposals when backing out of payment
Diffstat (limited to 'app/src/main/java/net/taler/wallet')
3 files changed, 20 insertions, 12 deletions
diff --git a/app/src/main/java/net/taler/wallet/ShowBalance.kt b/app/src/main/java/net/taler/wallet/ShowBalance.kt index 1a31b86..6bc8854 100644 --- a/app/src/main/java/net/taler/wallet/ShowBalance.kt +++ b/app/src/main/java/net/taler/wallet/ShowBalance.kt @@ -321,11 +321,8 @@ class ShowBalance : Fragment(), PendingOperationClickListener { when (type) { "proposal-choice" -> { Log.v(TAG, "got action click on proposal-choice") - val proposalId = detail.optString("proposalId", "") - if (proposalId == "") { - return - } - model.paymentManager.abortProposal(proposalId) + val json = detail.toString(4) + throw IllegalStateException("proposal-choice wasn't aborted automatically: $json") } } } diff --git a/app/src/main/java/net/taler/wallet/payment/PaymentManager.kt b/app/src/main/java/net/taler/wallet/payment/PaymentManager.kt index 489940f..ea9ca75 100644 --- a/app/src/main/java/net/taler/wallet/payment/PaymentManager.kt +++ b/app/src/main/java/net/taler/wallet/payment/PaymentManager.kt @@ -81,7 +81,16 @@ class PaymentManager( } } - fun abortProposal(proposalId: String) { + @UiThread + fun abortPay() { + val ps = payStatus.value + if (ps is PayStatus.Prepared) { + abortProposal(ps.proposalId) + } + resetPayStatus() + } + + private fun abortProposal(proposalId: String) { val args = JSONObject(mapOf("proposalId" to proposalId)) Log.i(TAG, "aborting proposal") diff --git a/app/src/main/java/net/taler/wallet/payment/PromptPaymentFragment.kt b/app/src/main/java/net/taler/wallet/payment/PromptPaymentFragment.kt index d623788..e8fe6db 100644 --- a/app/src/main/java/net/taler/wallet/payment/PromptPaymentFragment.kt +++ b/app/src/main/java/net/taler/wallet/payment/PromptPaymentFragment.kt @@ -70,16 +70,18 @@ class PromptPaymentFragment : Fragment() { } button_abort_payment.setOnClickListener { - when (val ps = paymentManager.payStatus.value) { - is PayStatus.Prepared -> { - paymentManager.abortProposal(ps.proposalId) - } - } - paymentManager.resetPayStatus() + paymentManager.abortPay() findNavController().navigateUp() } } + override fun onDestroy() { + super.onDestroy() + if (!requireActivity().isChangingConfigurations) { + paymentManager.abortPay() + } + } + private fun showLoading(show: Boolean) { model.showProgressBar.value = show } |