summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIván Ávalos <avalos@disroot.org>2024-03-12 09:18:44 -0600
committerTorsten Grote <t@grobox.de>2024-03-13 16:48:10 -0300
commit1ee82ca8a03886fc5b466d294b4927406cee8d9d (patch)
tree09734509d6d7c9df97d001d9db14f900e74c8417
parent63158f57a834bd35c8ef57033210fc1e6394c5b2 (diff)
downloadtaler-android-1ee82ca8a03886fc5b466d294b4927406cee8d9d.tar.gz
taler-android-1ee82ca8a03886fc5b466d294b4927406cee8d9d.tar.bz2
taler-android-1ee82ca8a03886fc5b466d294b4927406cee8d9d.zip
[wallet] Fix wrong insufficient balance in multiple places
bug 0008610
-rw-r--r--wallet/src/main/java/net/taler/wallet/MainViewModel.kt10
-rw-r--r--wallet/src/main/java/net/taler/wallet/balances/BalanceManager.kt10
-rw-r--r--wallet/src/main/java/net/taler/wallet/deposit/PayToUriFragment.kt2
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 c2b04ca..fe11d6a 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 e964881..2930c77 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 c7a4eb0..8961016 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)