summaryrefslogtreecommitdiff
path: root/app/src/main/java/net/taler/wallet
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 /app/src/main/java/net/taler/wallet
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
Diffstat (limited to 'app/src/main/java/net/taler/wallet')
-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
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
}