summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTorsten Grote <t@grobox.de>2023-06-12 15:30:21 -0300
committerTorsten Grote <t@grobox.de>2023-06-12 15:30:21 -0300
commit19dd896ce8ce4c59ff867778c546eb4e97ca3f38 (patch)
treebbf43726d479d3f5694ce9cba5aae88b5ddf6fd4
parentb991a48dc206a006ff384a5194217e29b76dafd0 (diff)
downloadtaler-android-19dd896ce8ce4c59ff867778c546eb4e97ca3f38.tar.gz
taler-android-19dd896ce8ce4c59ff867778c546eb4e97ca3f38.tar.bz2
taler-android-19dd896ce8ce4c59ff867778c546eb4e97ca3f38.zip
[wallet] Properly handle tipping errors
-rw-r--r--wallet/src/main/java/net/taler/wallet/tip/PromptTipFragment.kt17
-rw-r--r--wallet/src/main/java/net/taler/wallet/tip/TipManager.kt6
2 files changed, 9 insertions, 14 deletions
diff --git a/wallet/src/main/java/net/taler/wallet/tip/PromptTipFragment.kt b/wallet/src/main/java/net/taler/wallet/tip/PromptTipFragment.kt
index b0f5a35..78969d0 100644
--- a/wallet/src/main/java/net/taler/wallet/tip/PromptTipFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/tip/PromptTipFragment.kt
@@ -28,6 +28,7 @@ import com.google.android.material.snackbar.Snackbar.LENGTH_LONG
import net.taler.common.Amount
import net.taler.common.fadeIn
import net.taler.common.fadeOut
+import net.taler.common.showError
import net.taler.wallet.MainViewModel
import net.taler.wallet.R
import net.taler.wallet.cleanExchange
@@ -54,14 +55,6 @@ class PromptTipFragment : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
tipManager.tipStatus.observe(viewLifecycleOwner, ::onPaymentStatusChanged)
-
- }
-
- override fun onDestroy() {
- super.onDestroy()
- if (!requireActivity().isChangingConfigurations) {
- // tipManager.abortTip()
- }
}
private fun showLoading(show: Boolean) {
@@ -84,7 +77,7 @@ class PromptTipFragment : Fragment() {
)
ui.confirmWithdrawButton.isEnabled = true
ui.confirmWithdrawButton.setOnClickListener {
- tipManager.confirmTip(
+ tipManager.acceptTip(
payStatus.walletTipId,
payStatus.tipAmountRaw.currency
)
@@ -109,8 +102,10 @@ class PromptTipFragment : Fragment() {
}
is TipStatus.Error -> {
showLoading(false)
- ui.introView.text = getString(R.string.payment_error, payStatus.error)
- ui.introView.fadeIn()
+ // TODO pass TalerErrorInfo for JSON rendering
+ showError(getString(R.string.payment_error, payStatus.error.userFacingMsg))
+ ui.confirmProgressBar.fadeOut()
+ ui.confirmWithdrawButton.fadeIn()
}
is TipStatus.None -> {
// No tip active
diff --git a/wallet/src/main/java/net/taler/wallet/tip/TipManager.kt b/wallet/src/main/java/net/taler/wallet/tip/TipManager.kt
index 5548687..3c54d20 100644
--- a/wallet/src/main/java/net/taler/wallet/tip/TipManager.kt
+++ b/wallet/src/main/java/net/taler/wallet/tip/TipManager.kt
@@ -47,7 +47,7 @@ sealed class TipStatus {
) : TipStatus()
// TODO bring user to fulfilment URI (not yet in wallet API)
- data class Error(val error: String) : TipStatus()
+ data class Error(val error: TalerErrorInfo) : TipStatus()
data class Success(val currency: String) : TipStatus()
}
@@ -76,7 +76,7 @@ class TipManager(
}
}
- fun confirmTip(tipId: String, currency: String) = scope.launch {
+ fun acceptTip(tipId: String, currency: String) = scope.launch {
mTipStatus.value = TipStatus.Accepting
api.request("acceptTip", ConfirmTipResult.serializer()) {
put("walletTipId", tipId)
@@ -94,7 +94,7 @@ class TipManager(
private fun handleError(operation: String, error: TalerErrorInfo) {
Log.e(TAG, "got $operation error result $error")
- mTipStatus.value = TipStatus.Error(error.userFacingMsg)
+ mTipStatus.value = TipStatus.Error(error)
}
}