summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTorsten Grote <t@grobox.de>2020-02-14 12:24:51 -0300
committerTorsten Grote <t@grobox.de>2020-02-14 16:13:20 -0300
commit497af85f4ccd40aaba29cf1fa3ed230a4d43159c (patch)
tree8f88ed7ba3273146ca6ab75cb3b0ed8755f65d1a
parentb2db61af90cde2c686bd75b7e8b8e69cb736a3b9 (diff)
downloadwallet-android-497af85f4ccd40aaba29cf1fa3ed230a4d43159c.tar.gz
wallet-android-497af85f4ccd40aaba29cf1fa3ed230a4d43159c.tar.bz2
wallet-android-497af85f4ccd40aaba29cf1fa3ed230a4d43159c.zip
Automatically abort payment proposals when backing out of payment
-rw-r--r--app/src/main/java/net/taler/wallet/ShowBalance.kt7
-rw-r--r--app/src/main/java/net/taler/wallet/payment/PaymentManager.kt11
-rw-r--r--app/src/main/java/net/taler/wallet/payment/PromptPaymentFragment.kt14
-rw-r--r--app/src/main/res/layout/fragment_payment_successful.xml2
-rw-r--r--app/src/main/res/layout/fragment_prompt_payment.xml2
-rw-r--r--app/src/main/res/values/strings.xml3
6 files changed, 24 insertions, 15 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
}
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 @@
<string name="payment_fee">(plus an additional %s payment fee)</string>
<string name="payment_button_confirm">Confirm Payment</string>
<string name="payment_button_abort">Abort Payment</string>
- <string name="payment_label_amount">Amount</string>
+ <string name="payment_label_amount_total">Total Amount</string>
<string name="payment_label_order_summary">Order Summary</string>
<string name="payment_error">Error: %s</string>
<string name="payment_balance_insufficient">Balance Insufficient!</string>
<string name="payment_show_details">Show Details</string>
<string name="payment_hide_details">Hide Details</string>
+ <string name="payment_successful">Payment was successful</string>
</resources>