gnunet-svn
[Top][All Lists]
Advanced

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

[taler-taler-android] 01/02: [wallet] Fix wrong insufficient balance in


From: gnunet
Subject: [taler-taler-android] 01/02: [wallet] Fix wrong insufficient balance in multiple places
Date: Wed, 13 Mar 2024 20:48:48 +0100

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

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

commit 1ee82ca8a03886fc5b466d294b4927406cee8d9d
Author: Iván Ávalos <avalos@disroot.org>
AuthorDate: Tue Mar 12 09:18:44 2024 -0600

    [wallet] Fix wrong insufficient balance in multiple places
    
    bug 0008610
---
 wallet/src/main/java/net/taler/wallet/MainViewModel.kt         | 10 ++++------
 .../src/main/java/net/taler/wallet/balances/BalanceManager.kt  | 10 +++++++---
 .../src/main/java/net/taler/wallet/deposit/PayToUriFragment.kt |  2 +-
 3 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/wallet/src/main/java/net/taler/wallet/MainViewModel.kt 
b/wallet/src/main/java/net/taler/wallet/MainViewModel.kt
index c2b04ca0..fe11d6a0 100644
--- a/wallet/src/main/java/net/taler/wallet/MainViewModel.kt
+++ b/wallet/src/main/java/net/taler/wallet/MainViewModel.kt
@@ -119,11 +119,9 @@ class MainViewModel(
     }
 
     @UiThread
-    fun getCurrencies(): List<String> {
-        return balanceManager.balancesOrNull?.map { balanceItem ->
-            balanceItem.currency
-        } ?: emptyList()
-    }
+    fun getCurrencies() = balanceManager.balances.value?.map { balanceItem ->
+        balanceItem.currency
+    } ?: emptyList()
 
     @UiThread
     fun createAmount(amountText: String, currency: String): AmountResult {
@@ -138,7 +136,7 @@ class MainViewModel(
 
     @UiThread
     fun hasSufficientBalance(amount: Amount): Boolean {
-        balanceManager.balancesOrNull?.forEach { balanceItem ->
+        balanceManager.balances.value?.forEach { balanceItem ->
             if (balanceItem.currency == amount.currency) {
                 return balanceItem.available >= amount
             }
diff --git a/wallet/src/main/java/net/taler/wallet/balances/BalanceManager.kt 
b/wallet/src/main/java/net/taler/wallet/balances/BalanceManager.kt
index e9648817..2930c77c 100644
--- a/wallet/src/main/java/net/taler/wallet/balances/BalanceManager.kt
+++ b/wallet/src/main/java/net/taler/wallet/balances/BalanceManager.kt
@@ -17,6 +17,7 @@
 package net.taler.wallet.balances
 
 import android.util.Log
+import androidx.annotation.UiThread
 import androidx.lifecycle.LiveData
 import androidx.lifecycle.MutableLiveData
 import androidx.lifecycle.distinctUntilChanged
@@ -49,13 +50,15 @@ class BalanceManager(
     private val api: WalletBackendApi,
     private val scope: CoroutineScope,
 ) {
+    private val mBalances = MutableLiveData<List<BalanceItem>>(emptyList())
+    val balances: LiveData<List<BalanceItem>> = mBalances
+
     private val mState = MutableLiveData<BalanceState>(BalanceState.None)
     val state: LiveData<BalanceState> = mState.distinctUntilChanged()
 
-    val balancesOrNull get() = (state.value as? BalanceState.Success)?.balances
-
+    @UiThread
     fun loadBalances() {
-        mState.postValue(BalanceState.Loading)
+        mState.value = BalanceState.Loading
         scope.launch {
             val response = api.request("getBalances", 
BalanceResponse.serializer())
             response.onError {
@@ -64,6 +67,7 @@ class BalanceManager(
             }
             response.onSuccess {
                 mState.postValue(BalanceState.Success(it.balances))
+                mBalances.postValue(it.balances)
             }
         }
     }
diff --git a/wallet/src/main/java/net/taler/wallet/deposit/PayToUriFragment.kt 
b/wallet/src/main/java/net/taler/wallet/deposit/PayToUriFragment.kt
index c7a4eb0f..89610161 100644
--- a/wallet/src/main/java/net/taler/wallet/deposit/PayToUriFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/deposit/PayToUriFragment.kt
@@ -86,7 +86,7 @@ class PayToUriFragment : Fragment() {
                         text = stringResource(id = 
R.string.payment_balance_insufficient),
                         color = MaterialTheme.colorScheme.error,
                     ) else if (depositManager.isSupportedPayToUri(uri)) 
PayToComposable(
-                        currencies = model.getCurrencies(),
+                        currencies = currencies,
                         getAmount = model::createAmount,
                         onAmountChosen = { amount ->
                             val u = Uri.parse(uri)

-- 
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]