summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIván Ávalos <avalos@disroot.org>2024-03-13 12:48:44 -0600
committerTorsten Grote <t@grobox.de>2024-03-27 14:26:44 -0300
commit8d56c1db12b80288fca092d97009ae74de36fffb (patch)
treeb4d2a5fca5903c913f597dcf1cc75cbb3d4ab698
parent4b4cf989aa0bfb5e9223ced86242cdd51be47701 (diff)
downloadtaler-android-8d56c1db12b80288fca092d97009ae74de36fffb.tar.gz
taler-android-8d56c1db12b80288fca092d97009ae74de36fffb.tar.bz2
taler-android-8d56c1db12b80288fca092d97009ae74de36fffb.zip
[wallet] Cache currencySpec in loadBalances()
(cherry picked from commit cd7cd4c79b727f470bed3f8ecff0fa4790beee57)
-rw-r--r--wallet/src/main/java/net/taler/wallet/balances/BalanceManager.kt13
1 files changed, 11 insertions, 2 deletions
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 b2e6be3..4558396 100644
--- a/wallet/src/main/java/net/taler/wallet/balances/BalanceManager.kt
+++ b/wallet/src/main/java/net/taler/wallet/balances/BalanceManager.kt
@@ -65,6 +65,8 @@ class BalanceManager(
private val mState = MutableLiveData<BalanceState>(BalanceState.None)
val state: LiveData<BalanceState> = mState.distinctUntilChanged()
+ private var currencySpecs: Map<ScopeInfo, CurrencySpecification?>? = null
+
@UiThread
fun loadBalances() {
mState.value = BalanceState.Loading
@@ -77,10 +79,17 @@ class BalanceManager(
response.onSuccess {
mState.postValue(BalanceState.Success(it.balances))
scope.launch {
- // Get currency spec for all balances)
+ // Get currency spec for all balances
+ if (currencySpecs == null) {
+ currencySpecs = it.balances.associate { balance ->
+ val spec = getCurrencySpecification(balance.scopeInfo)
+ balance.scopeInfo to spec
+ }
+ }
+
mState.postValue(
BalanceState.Success(it.balances.map { balance ->
- val spec = getCurrencySpecification(balance.scopeInfo)
+ val spec = currencySpecs?.get(balance.scopeInfo)
balance.copy(
available = balance.available.withSpec(spec),
pendingIncoming = balance.pendingIncoming.withSpec(spec),