From 643c12023b67c95503914f65e64599a5f6d4a90b Mon Sep 17 00:00:00 2001 From: Tangem Date: Wed, 23 Mar 2022 22:33:19 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../com/tangem/tap/domain/TapWalletManager.kt | 15 +++++++++++++-- .../tap/features/wallet/redux/WalletAction.kt | 2 +- .../wallet/redux/middlewares/WalletMiddleware.kt | 7 ++++--- .../tap/features/wallet/ui/WalletFragment.kt | 2 +- 4 files changed, 19 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/domain/TapWalletManager.kt b/app/src/main/java/com/tangem/tap/domain/TapWalletManager.kt index d89deeab6c..15ac94f6ac 100644 --- a/app/src/main/java/com/tangem/tap/domain/TapWalletManager.kt +++ b/app/src/main/java/com/tangem/tap/domain/TapWalletManager.kt @@ -57,8 +57,19 @@ class TapWalletManager { handleUpdateWalletResult(result, walletManager) } - suspend fun updateWallet(walletManager: WalletManager) { - val result = walletManager.safeUpdate() + suspend fun updateWallet(walletManager: WalletManager, force: Boolean) { + val result = if (force) { + walletManager.safeUpdate() + } else { + val blockchain = walletManager.wallet.blockchain + if (walletManagersThrottler.isStillThrottled(blockchain)) { + delay(200) + Result.Success(walletManager.wallet) + } else { + walletManagersThrottler.updateThrottlingTo(blockchain) + walletManager.safeUpdate() + } + } withContext(Dispatchers.Main) { when (result) { is Result.Success -> diff --git a/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletAction.kt b/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletAction.kt index 57a03d4313..f2ec828995 100644 --- a/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletAction.kt +++ b/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletAction.kt @@ -74,7 +74,7 @@ sealed class WalletAction : Action { class CheckRemainingSignatures(val remainingSignatures: Int?) : Warnings() } - data class UpdateWallet(val blockchain: Blockchain? = null) : WalletAction() { + data class UpdateWallet(val blockchain: Blockchain? = null, val force: Boolean = true) : WalletAction() { object ScheduleUpdatingWallet : WalletAction() data class Success(val wallet: Wallet) : WalletAction() data class Failure(val errorMessage: String? = null) : WalletAction() diff --git a/app/src/main/java/com/tangem/tap/features/wallet/redux/middlewares/WalletMiddleware.kt b/app/src/main/java/com/tangem/tap/features/wallet/redux/middlewares/WalletMiddleware.kt index e48b76c1a6..dc17653642 100644 --- a/app/src/main/java/com/tangem/tap/features/wallet/redux/middlewares/WalletMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/wallet/redux/middlewares/WalletMiddleware.kt @@ -99,7 +99,7 @@ class WalletMiddleware { else -> { globalState.tapWalletManager.loadFiatRate( fiatCurrency = globalState.appCurrency, - currencies = walletState.wallets.mapNotNull { it.currency } + currencies = walletState.wallets.map { it.currency } ) } } @@ -131,13 +131,13 @@ class WalletMiddleware { if (action.blockchain != null) { scope.launch { val walletManager = walletState.getWalletManager(action.blockchain) - walletManager?.let { globalState.tapWalletManager.updateWallet(it) } + walletManager?.let { globalState.tapWalletManager.updateWallet(it, action.force) } } } else { scope.launch { if (walletState.state == ProgressState.Done) { walletState.walletManagers.map { walletManager -> - globalState.tapWalletManager.updateWallet(walletManager) + globalState.tapWalletManager.updateWallet(walletManager, action.force) } } } @@ -163,6 +163,7 @@ class WalletMiddleware { ) withMainContext { actionList.forEach { store.dispatch(it) } } } + is Result.Failure -> {} } store.dispatchOnMain(WalletAction.Warnings.CheckIfNeeded) } diff --git a/app/src/main/java/com/tangem/tap/features/wallet/ui/WalletFragment.kt b/app/src/main/java/com/tangem/tap/features/wallet/ui/WalletFragment.kt index 9f6a876537..ca1b70231e 100644 --- a/app/src/main/java/com/tangem/tap/features/wallet/ui/WalletFragment.kt +++ b/app/src/main/java/com/tangem/tap/features/wallet/ui/WalletFragment.kt @@ -63,7 +63,7 @@ class WalletFragment : Fragment(R.layout.fragment_wallet), StoreSubscriber