From 497af85f4ccd40aaba29cf1fa3ed230a4d43159c Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Fri, 14 Feb 2020 12:24:51 -0300 Subject: Automatically abort payment proposals when backing out of payment --- app/src/main/java/net/taler/wallet/ShowBalance.kt | 7 ++----- .../main/java/net/taler/wallet/payment/PaymentManager.kt | 11 ++++++++++- .../java/net/taler/wallet/payment/PromptPaymentFragment.kt | 14 ++++++++------ app/src/main/res/layout/fragment_payment_successful.xml | 2 +- app/src/main/res/layout/fragment_prompt_payment.xml | 2 +- app/src/main/res/values/strings.xml | 3 ++- 6 files changed, 24 insertions(+), 15 deletions(-) (limited to 'app/src') 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 } diff --git a/app/src/main/res/layout/fragment_payment_successful.xml b/app/src/main/res/layout/fragment_payment_successful.xml index af8bed2..414efc9 100644 --- a/app/src/main/res/layout/fragment_payment_successful.xml +++ b/app/src/main/res/layout/fragment_payment_successful.xml @@ -20,7 +20,7 @@ android:layout_width="match_parent" android:textAlignment="center" android:layout_height="50dp" - android:text="Payment was Successful" + android:text="@string/payment_successful" android:autoSizeTextType="uniform" android:textColor="@android:color/holo_green_dark"/> diff --git a/app/src/main/res/layout/fragment_prompt_payment.xml b/app/src/main/res/layout/fragment_prompt_payment.xml index 78d477f..a701653 100644 --- a/app/src/main/res/layout/fragment_prompt_payment.xml +++ b/app/src/main/res/layout/fragment_prompt_payment.xml @@ -98,7 +98,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="@dimen/activity_horizontal_margin" - android:text="@string/payment_label_amount" + android:text="@string/payment_label_amount_total" android:visibility="invisible" app:layout_constraintBottom_toTopOf="@+id/order_amount" app:layout_constraintEnd_toEndOf="parent" diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index cd1ad54..1e18fe5 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -39,11 +39,12 @@ (plus an additional %s payment fee) Confirm Payment Abort Payment - Amount + Total Amount Order Summary Error: %s Balance Insufficient! Show Details Hide Details + Payment was successful -- cgit v1.2.3