gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-taler-android] branch master updated: [cashier] show error messag


From: gnunet
Subject: [taler-taler-android] branch master updated: [cashier] show error message when bank is reporting mismatching currencies
Date: Thu, 14 Jul 2022 20:38:37 +0200

This is an automated email from the git hooks/post-receive script.

torsten-grote pushed a commit to branch master
in repository taler-android.

The following commit(s) were added to refs/heads/master by this push:
     new 757b1db  [cashier] show error message when bank is reporting 
mismatching currencies
757b1db is described below

commit 757b1db0813ff125708cb3ea3ca9a9ef6a1e4e73
Author: Torsten Grote <t@grobox.de>
AuthorDate: Thu Jul 14 15:36:18 2022 -0300

    [cashier] show error message when bank is reporting mismatching currencies
---
 .idea/gradle.xml                                     |  2 --
 .../main/java/net/taler/cashier/BalanceFragment.kt   | 20 +++++++++++++-------
 .../net/taler/cashier/withdraw/WithdrawManager.kt    | 13 +++++++++++--
 cashier/src/main/res/values/strings.xml              |  1 +
 4 files changed, 25 insertions(+), 11 deletions(-)

diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 4cc0060..2277df3 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -15,8 +15,6 @@
             <option value="$PROJECT_DIR$/cashier" />
             <option value="$PROJECT_DIR$/merchant-lib" />
             <option value="$PROJECT_DIR$/merchant-terminal" />
-            <option value="$PROJECT_DIR$/multiplatform" />
-            <option value="$PROJECT_DIR$/multiplatform/common" />
             <option value="$PROJECT_DIR$/taler-kotlin-android" />
             <option value="$PROJECT_DIR$/wallet" />
           </set>
diff --git a/cashier/src/main/java/net/taler/cashier/BalanceFragment.kt 
b/cashier/src/main/java/net/taler/cashier/BalanceFragment.kt
index fa9600b..c0e2aca 100644
--- a/cashier/src/main/java/net/taler/cashier/BalanceFragment.kt
+++ b/cashier/src/main/java/net/taler/cashier/BalanceFragment.kt
@@ -164,13 +164,19 @@ class BalanceFragment : Fragment() {
     private fun onAmountConfirmed(amount: Amount) {
         if (amount.isZero()) {
             ui.amountView.error = getString(R.string.withdraw_error_zero)
-        } else if (!withdrawManager.hasSufficientBalance(amount)) {
-            ui.amountView.error = 
getString(R.string.withdraw_error_insufficient_balance)
-        } else {
-            ui.amountView.error = null
-            withdrawManager.withdraw(amount)
-            actionBalanceFragmentToTransactionFragment().let {
-                findNavController().navigate(it)
+        } else when (withdrawManager.hasSufficientBalance(amount)) {
+            true -> {
+                ui.amountView.error = null
+                withdrawManager.withdraw(amount)
+                actionBalanceFragmentToTransactionFragment().let {
+                    findNavController().navigate(it)
+                }
+            }
+            false -> {
+                ui.amountView.error = 
getString(R.string.withdraw_error_insufficient_balance)
+            }
+            null -> {
+                ui.amountView.error = 
getString(R.string.withdraw_error_currency_mismatch)
             }
         }
     }
diff --git 
a/cashier/src/main/java/net/taler/cashier/withdraw/WithdrawManager.kt 
b/cashier/src/main/java/net/taler/cashier/withdraw/WithdrawManager.kt
index 1b809bb..601b59a 100644
--- a/cashier/src/main/java/net/taler/cashier/withdraw/WithdrawManager.kt
+++ b/cashier/src/main/java/net/taler/cashier/withdraw/WithdrawManager.kt
@@ -73,11 +73,20 @@ class WithdrawManager(
     private val mLastTransaction = MutableLiveData<LastTransaction>()
     val lastTransaction: LiveData<LastTransaction> = mLastTransaction
 
+    /**
+     * Returns null if the given [amount] can't be compared to the balance
+     * e.g. due to mismatching currency.
+     */
     @UiThread
-    fun hasSufficientBalance(amount: Amount): Boolean {
+    fun hasSufficientBalance(amount: Amount): Boolean? {
         val balanceResult = viewModel.balance.value
         if (balanceResult !is BalanceResult.Success) return false
-        return balanceResult.amount.positive && amount <= 
balanceResult.amount.amount
+        return try {
+            balanceResult.amount.positive && amount <= 
balanceResult.amount.amount
+        } catch (e : IllegalStateException) {
+            Log.e(TAG, "Error comparing amounts", e)
+            null
+        }
     }
 
     @UiThread
diff --git a/cashier/src/main/res/values/strings.xml 
b/cashier/src/main/res/values/strings.xml
index bcaab74..8e28d28 100644
--- a/cashier/src/main/res/values/strings.xml
+++ b/cashier/src/main/res/values/strings.xml
@@ -26,6 +26,7 @@
     <string name="withdraw_into">How much e-cash should be withdrawn?</string>
     <string name="withdraw_error_zero">Enter positive amount!</string>
     <string name="withdraw_error_insufficient_balance">Insufficient 
balance</string>
+    <string name="withdraw_error_currency_mismatch">Error: Bank reported a 
different currency</string>
     <string name="withdraw_error_fetch">Error communicating with bank: 
%s</string>
     <string name="withdraw_error_timeout">No wallet tried to withdraw. Please 
try again.</string>
     <string name="withdraw_error_offline" 
translatable="false">@string/balance_offline</string>

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]