diff options
author | Iván Ávalos <avalos@disroot.org> | 2024-03-13 12:48:44 -0600 |
---|---|---|
committer | Torsten Grote <t@grobox.de> | 2024-03-27 14:26:44 -0300 |
commit | 8d56c1db12b80288fca092d97009ae74de36fffb (patch) | |
tree | b4d2a5fca5903c913f597dcf1cc75cbb3d4ab698 /wallet/src/main | |
parent | 4b4cf989aa0bfb5e9223ced86242cdd51be47701 (diff) | |
download | taler-android-8d56c1db12b80288fca092d97009ae74de36fffb.tar.gz taler-android-8d56c1db12b80288fca092d97009ae74de36fffb.tar.bz2 taler-android-8d56c1db12b80288fca092d97009ae74de36fffb.zip |
[wallet] Cache currencySpec in loadBalances()
(cherry picked from commit cd7cd4c79b727f470bed3f8ecff0fa4790beee57)
Diffstat (limited to 'wallet/src/main')
-rw-r--r-- | wallet/src/main/java/net/taler/wallet/balances/BalanceManager.kt | 13 |
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), |