diff --git a/data/tokens/src/main/kotlin/com/tangem/data/tokens/repository/DefaultNetworksRepository.kt b/data/tokens/src/main/kotlin/com/tangem/data/tokens/repository/DefaultNetworksRepository.kt index fa7d68bd98..4606659408 100644 --- a/data/tokens/src/main/kotlin/com/tangem/data/tokens/repository/DefaultNetworksRepository.kt +++ b/data/tokens/src/main/kotlin/com/tangem/data/tokens/repository/DefaultNetworksRepository.kt @@ -186,6 +186,7 @@ internal class DefaultNetworksRepository( is UpdateWalletManagerResult.NoAccount, -> Unit is UpdateWalletManagerResult.Unreachable, + is UpdateWalletManagerResult.UnreachableWithoutAddresses, is UpdateWalletManagerResult.MissedDerivation, -> { Timber.w( diff --git a/data/tokens/src/main/kotlin/com/tangem/data/tokens/utils/NetworkStatusFactory.kt b/data/tokens/src/main/kotlin/com/tangem/data/tokens/utils/NetworkStatusFactory.kt index dbbf3fb10a..9170ad03aa 100644 --- a/data/tokens/src/main/kotlin/com/tangem/data/tokens/utils/NetworkStatusFactory.kt +++ b/data/tokens/src/main/kotlin/com/tangem/data/tokens/utils/NetworkStatusFactory.kt @@ -19,7 +19,10 @@ internal class NetworkStatusFactory { network = network, value = when (result) { is UpdateWalletManagerResult.MissedDerivation -> NetworkStatus.MissedDerivation - is UpdateWalletManagerResult.Unreachable -> NetworkStatus.Unreachable + is UpdateWalletManagerResult.UnreachableWithoutAddresses -> NetworkStatus.UnreachableWithoutAddresses + is UpdateWalletManagerResult.Unreachable -> NetworkStatus.Unreachable( + address = getNetworkAddress(result.selectedAddress, result.addresses), + ) is UpdateWalletManagerResult.NoAccount -> NetworkStatus.NoAccount( address = getNetworkAddress(result.selectedAddress, result.addresses), amountToCreateAccount = result.amountToCreateAccount, diff --git a/domain/legacy/src/main/java/com/tangem/domain/walletmanager/DefaultWalletManagersFacade.kt b/domain/legacy/src/main/java/com/tangem/domain/walletmanager/DefaultWalletManagersFacade.kt index d1a57e7726..7a72566f75 100644 --- a/domain/legacy/src/main/java/com/tangem/domain/walletmanager/DefaultWalletManagersFacade.kt +++ b/domain/legacy/src/main/java/com/tangem/domain/walletmanager/DefaultWalletManagersFacade.kt @@ -128,7 +128,7 @@ class DefaultWalletManagersFacade( val walletManager = getOrCreateWalletManager(userWalletId, blockchain, derivationPath) if (walletManager == null || blockchain == Blockchain.Unknown) { Timber.w("Unable to get a wallet manager for blockchain: $blockchain") - return UpdateWalletManagerResult.Unreachable + return UpdateWalletManagerResult.UnreachableWithoutAddresses } return getLastWalletManagerResult(walletManager) @@ -248,7 +248,7 @@ class DefaultWalletManagersFacade( ) if (walletManager == null || blockchain == Blockchain.Unknown) { Timber.w("Unable to get a wallet manager for blockchain: $blockchain") - return UpdateWalletManagerResult.Unreachable + return UpdateWalletManagerResult.UnreachableWithoutAddresses } updateWalletManagerTokensIfNeeded(walletManager, extraTokens) @@ -281,7 +281,7 @@ class DefaultWalletManagersFacade( } catch (e: Throwable) { Timber.w(e, "Unable to update a wallet manager for: ${walletManager.wallet.blockchain}") - UpdateWalletManagerResult.Unreachable + resultFactory.getUnreachableResult(walletManager) } } @@ -293,7 +293,7 @@ class DefaultWalletManagersFacade( } catch (e: Throwable) { Timber.w(e, "Unable to update a wallet manager for: ${walletManager.wallet.blockchain}") - UpdateWalletManagerResult.Unreachable + resultFactory.getUnreachableResult(walletManager) } } diff --git a/domain/legacy/src/main/java/com/tangem/domain/walletmanager/model/UpdateWalletManagerResult.kt b/domain/legacy/src/main/java/com/tangem/domain/walletmanager/model/UpdateWalletManagerResult.kt index dd1891105e..b13e23c8ec 100644 --- a/domain/legacy/src/main/java/com/tangem/domain/walletmanager/model/UpdateWalletManagerResult.kt +++ b/domain/legacy/src/main/java/com/tangem/domain/walletmanager/model/UpdateWalletManagerResult.kt @@ -6,7 +6,12 @@ sealed class UpdateWalletManagerResult { object MissedDerivation : UpdateWalletManagerResult() - object Unreachable : UpdateWalletManagerResult() + object UnreachableWithoutAddresses : UpdateWalletManagerResult() + + data class Unreachable( + val selectedAddress: String, + val addresses: Set
, + ) : UpdateWalletManagerResult() data class Verified( val selectedAddress: String, diff --git a/domain/legacy/src/main/java/com/tangem/domain/walletmanager/utils/UpdateWalletManagerResultFactory.kt b/domain/legacy/src/main/java/com/tangem/domain/walletmanager/utils/UpdateWalletManagerResultFactory.kt index e865fcc408..7ebefa793c 100644 --- a/domain/legacy/src/main/java/com/tangem/domain/walletmanager/utils/UpdateWalletManagerResultFactory.kt +++ b/domain/legacy/src/main/java/com/tangem/domain/walletmanager/utils/UpdateWalletManagerResultFactory.kt @@ -46,7 +46,10 @@ internal class UpdateWalletManagerResultFactory { return if (amountToCreateAccount == null) { Timber.w("Unable to get required amount to create account for: $blockchain") - UpdateWalletManagerResult.Unreachable + UpdateWalletManagerResult.Unreachable( + selectedAddress = wallet.address, + addresses = getAvailableAddresses(wallet.addresses), + ) } else { UpdateWalletManagerResult.NoAccount( selectedAddress = wallet.address, @@ -57,6 +60,15 @@ internal class UpdateWalletManagerResultFactory { } } + fun getUnreachableResult(walletManager: WalletManager): UpdateWalletManagerResult { + val wallet = walletManager.wallet + + return UpdateWalletManagerResult.Unreachable( + selectedAddress = wallet.address, + addresses = getAvailableAddresses(wallet.addresses), + ) + } + private fun getTokensAmounts(amounts: Set): Set { return amounts.mapNotNullTo(hashSetOf(), ::createCurrencyAmount) } diff --git a/domain/tokens/models/src/main/java/com/tangem/domain/tokens/model/CryptoCurrencyStatus.kt b/domain/tokens/models/src/main/java/com/tangem/domain/tokens/model/CryptoCurrencyStatus.kt index 23700e3d7b..670c5339a8 100644 --- a/domain/tokens/models/src/main/java/com/tangem/domain/tokens/model/CryptoCurrencyStatus.kt +++ b/domain/tokens/models/src/main/java/com/tangem/domain/tokens/model/CryptoCurrencyStatus.kt @@ -50,10 +50,19 @@ data class CryptoCurrencyStatus( /** Represents the Loading state of a cryptocurrency, typically while fetching its details. */ object Loading : Status(isError = false) - /** Represents a state where the cryptocurrency is not reachable. */ + object UnreachableWithoutAddresses : Status(isError = true) + + /** + * Represents a state where the cryptocurrency is not reachable. + * + * @property priceChange The change in price of the cryptocurrency. + * @property fiatRate The exchange rate used for converting the cryptocurrency amount to fiat. + * @property networkAddress The network address + */ data class Unreachable( override val priceChange: BigDecimal?, override val fiatRate: BigDecimal?, + override val networkAddress: NetworkAddress, ) : Status(isError = true) /** Represents a state where the cryptocurrency's network amount not found. */ diff --git a/domain/tokens/models/src/main/java/com/tangem/domain/tokens/model/NetworkStatus.kt b/domain/tokens/models/src/main/java/com/tangem/domain/tokens/model/NetworkStatus.kt index fc2b955456..230f59d531 100644 --- a/domain/tokens/models/src/main/java/com/tangem/domain/tokens/model/NetworkStatus.kt +++ b/domain/tokens/models/src/main/java/com/tangem/domain/tokens/model/NetworkStatus.kt @@ -21,10 +21,14 @@ data class NetworkStatus( */ sealed class Status + object UnreachableWithoutAddresses : Status() + /** * Represents the state where the network is unreachable. + * + * @property address Network addresses. */ - object Unreachable : Status() + data class Unreachable(val address: NetworkAddress) : Status() /** * Represents the state where a derivation has been missed. diff --git a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/operations/CurrencyStatusOperations.kt b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/operations/CurrencyStatusOperations.kt index 131c775492..7c4e946f3a 100644 --- a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/operations/CurrencyStatusOperations.kt +++ b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/operations/CurrencyStatusOperations.kt @@ -16,7 +16,8 @@ internal class CurrencyStatusOperations( return when (val status = networkStatus?.value) { null -> CryptoCurrencyStatus.Loading is NetworkStatus.MissedDerivation -> createMissedDerivationStatus() - is NetworkStatus.Unreachable -> createUnreachableStatus() + is NetworkStatus.UnreachableWithoutAddresses -> CryptoCurrencyStatus.UnreachableWithoutAddresses + is NetworkStatus.Unreachable -> createUnreachableStatus(status) is NetworkStatus.NoAccount -> createNoAccountStatus(status) is NetworkStatus.Verified -> createStatus(status) } @@ -25,8 +26,13 @@ internal class CurrencyStatusOperations( private fun createMissedDerivationStatus(): CryptoCurrencyStatus.MissedDerivation = CryptoCurrencyStatus.MissedDerivation(priceChange = quote?.priceChange, fiatRate = quote?.fiatRate) - private fun createUnreachableStatus(): CryptoCurrencyStatus.Unreachable = - CryptoCurrencyStatus.Unreachable(priceChange = quote?.priceChange, fiatRate = quote?.fiatRate) + private fun createUnreachableStatus(status: NetworkStatus.Unreachable): CryptoCurrencyStatus.Unreachable { + return CryptoCurrencyStatus.Unreachable( + priceChange = quote?.priceChange, + fiatRate = quote?.fiatRate, + networkAddress = status.address, + ) + } private fun createNoAccountStatus(status: NetworkStatus.NoAccount): CryptoCurrencyStatus.NoAccount = CryptoCurrencyStatus.NoAccount( diff --git a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/operations/TokenListFiatBalanceOperations.kt b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/operations/TokenListFiatBalanceOperations.kt index 78db26e8a0..4009263f5e 100644 --- a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/operations/TokenListFiatBalanceOperations.kt +++ b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/operations/TokenListFiatBalanceOperations.kt @@ -22,6 +22,7 @@ internal class TokenListFiatBalanceOperations( } is CryptoCurrencyStatus.MissedDerivation, is CryptoCurrencyStatus.Unreachable, + is CryptoCurrencyStatus.UnreachableWithoutAddresses, is CryptoCurrencyStatus.NoAmount, is CryptoCurrencyStatus.NoQuote, -> { diff --git a/domain/tokens/src/test/kotlin/com/tangem/domain/tokens/mock/MockNetworks.kt b/domain/tokens/src/test/kotlin/com/tangem/domain/tokens/mock/MockNetworks.kt index 522878e215..3641133165 100644 --- a/domain/tokens/src/test/kotlin/com/tangem/domain/tokens/mock/MockNetworks.kt +++ b/domain/tokens/src/test/kotlin/com/tangem/domain/tokens/mock/MockNetworks.kt @@ -45,7 +45,7 @@ internal object MockNetworks { val networkStatus1 = NetworkStatus( network = network1, - value = NetworkStatus.Unreachable, + value = NetworkStatus.UnreachableWithoutAddresses, ) val networkStatus2 = NetworkStatus( diff --git a/domain/tokens/src/test/kotlin/com/tangem/domain/tokens/mock/MockTokensStates.kt b/domain/tokens/src/test/kotlin/com/tangem/domain/tokens/mock/MockTokensStates.kt index bb9071f999..7490827a6c 100644 --- a/domain/tokens/src/test/kotlin/com/tangem/domain/tokens/mock/MockTokensStates.kt +++ b/domain/tokens/src/test/kotlin/com/tangem/domain/tokens/mock/MockTokensStates.kt @@ -15,6 +15,9 @@ internal object MockTokensStates { value = CryptoCurrencyStatus.Unreachable( priceChange = MockQuotes.quote1.priceChange, fiatRate = MockQuotes.quote1.fiatRate, + networkAddress = NetworkAddress.Single( + defaultAddress = NetworkAddress.Address(value = "mock", NetworkAddress.Address.Type.Primary), + ), ), ) @@ -23,6 +26,9 @@ internal object MockTokensStates { value = CryptoCurrencyStatus.Unreachable( priceChange = MockQuotes.quote2.priceChange, fiatRate = MockQuotes.quote2.fiatRate, + networkAddress = NetworkAddress.Single( + defaultAddress = NetworkAddress.Address(value = "mock", NetworkAddress.Address.Type.Primary), + ), ), ) @@ -31,6 +37,9 @@ internal object MockTokensStates { value = CryptoCurrencyStatus.Unreachable( priceChange = MockQuotes.quote3.priceChange, fiatRate = MockQuotes.quote3.fiatRate, + networkAddress = NetworkAddress.Single( + defaultAddress = NetworkAddress.Address(value = "mock", NetworkAddress.Address.Type.Primary), + ), ), ) diff --git a/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/state/factory/TokenDetailsLoadedBalanceConverter.kt b/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/state/factory/TokenDetailsLoadedBalanceConverter.kt index 142947657c..06b073e5cd 100644 --- a/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/state/factory/TokenDetailsLoadedBalanceConverter.kt +++ b/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/state/factory/TokenDetailsLoadedBalanceConverter.kt @@ -78,6 +78,7 @@ internal class TokenDetailsLoadedBalanceConverter( is CryptoCurrencyStatus.Loading -> TokenDetailsBalanceBlockState.Loading(currentState.actionButtons) is CryptoCurrencyStatus.MissedDerivation, is CryptoCurrencyStatus.Unreachable, + is CryptoCurrencyStatus.UnreachableWithoutAddresses, is CryptoCurrencyStatus.NoAmount, -> TokenDetailsBalanceBlockState.Error(currentState.actionButtons) } @@ -101,6 +102,7 @@ internal class TokenDetailsLoadedBalanceConverter( is CryptoCurrencyStatus.Custom, is CryptoCurrencyStatus.MissedDerivation, is CryptoCurrencyStatus.Unreachable, + is CryptoCurrencyStatus.UnreachableWithoutAddresses, is CryptoCurrencyStatus.NoAmount, -> status.toContentConfig(currencySymbol) } diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/WalletSingleCurrencyLoadedBalanceConverter.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/WalletSingleCurrencyLoadedBalanceConverter.kt index 75ce18f490..91a922a474 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/WalletSingleCurrencyLoadedBalanceConverter.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/WalletSingleCurrencyLoadedBalanceConverter.kt @@ -73,6 +73,7 @@ internal class WalletSingleCurrencyLoadedBalanceConverter( is CryptoCurrencyStatus.Custom, is CryptoCurrencyStatus.MissedDerivation, is CryptoCurrencyStatus.Unreachable, + is CryptoCurrencyStatus.UnreachableWithoutAddresses, is CryptoCurrencyStatus.NoQuote, -> MarketPriceBlockState.Error(currencySymbol) } @@ -116,6 +117,7 @@ internal class WalletSingleCurrencyLoadedBalanceConverter( is CryptoCurrencyStatus.MissedDerivation, is CryptoCurrencyStatus.Custom, is CryptoCurrencyStatus.Unreachable, + is CryptoCurrencyStatus.UnreachableWithoutAddresses, -> { WalletCardState.Error( id = selectedWallet.id, diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state2/transformers/converter/SingleWalletCardStateConverter.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state2/transformers/converter/SingleWalletCardStateConverter.kt index e54cf09dfa..9d443c6db9 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state2/transformers/converter/SingleWalletCardStateConverter.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state2/transformers/converter/SingleWalletCardStateConverter.kt @@ -21,6 +21,7 @@ internal class SingleWalletCardStateConverter( is CryptoCurrencyStatus.Custom, is CryptoCurrencyStatus.MissedDerivation, is CryptoCurrencyStatus.Unreachable, + is CryptoCurrencyStatus.UnreachableWithoutAddresses, -> value.toErrorState() is CryptoCurrencyStatus.NoQuote, is CryptoCurrencyStatus.Loaded, diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state2/transformers/converter/SingleWalletMarketPriceConverter.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state2/transformers/converter/SingleWalletMarketPriceConverter.kt index 1f1237f976..cbd1666996 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state2/transformers/converter/SingleWalletMarketPriceConverter.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state2/transformers/converter/SingleWalletMarketPriceConverter.kt @@ -25,6 +25,7 @@ internal class SingleWalletMarketPriceConverter( is CryptoCurrencyStatus.MissedDerivation, is CryptoCurrencyStatus.NoQuote, is CryptoCurrencyStatus.Unreachable, + is CryptoCurrencyStatus.UnreachableWithoutAddresses, -> MarketPriceBlockState.Error(value.currencySymbol) } } diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state2/transformers/converter/TokenItemStateConverter.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state2/transformers/converter/TokenItemStateConverter.kt index e3b9517efb..fad1edda6b 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state2/transformers/converter/TokenItemStateConverter.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state2/transformers/converter/TokenItemStateConverter.kt @@ -28,6 +28,7 @@ internal class TokenItemStateConverter( -> value.mapToTokenItemState() is CryptoCurrencyStatus.MissedDerivation -> value.mapToNoAddressTokenItemState() is CryptoCurrencyStatus.Unreachable, + is CryptoCurrencyStatus.UnreachableWithoutAddresses, is CryptoCurrencyStatus.NoAmount, -> value.mapToUnreachableTokenItemState() } diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state2/transformers/converter/VisaWalletCardStateConverter.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state2/transformers/converter/VisaWalletCardStateConverter.kt index 56766efc40..87e613c872 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state2/transformers/converter/VisaWalletCardStateConverter.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state2/transformers/converter/VisaWalletCardStateConverter.kt @@ -22,6 +22,7 @@ internal class VisaWalletCardStateConverter( is CryptoCurrencyStatus.Custom, is CryptoCurrencyStatus.MissedDerivation, is CryptoCurrencyStatus.Unreachable, + is CryptoCurrencyStatus.UnreachableWithoutAddresses, -> value.toErrorState() is CryptoCurrencyStatus.NoQuote, is CryptoCurrencyStatus.Loaded, diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/subscribers/PrimaryCurrencySubscriber.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/subscribers/PrimaryCurrencySubscriber.kt index 5a44bc2911..46f32dceff 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/subscribers/PrimaryCurrencySubscriber.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/subscribers/PrimaryCurrencySubscriber.kt @@ -72,7 +72,9 @@ internal class PrimaryCurrencySubscriber( is CryptoCurrencyStatus.NoAmount, -> createCardBalanceState(fiatAmount) is CryptoCurrencyStatus.NoQuote -> AnalyticsParam.CardBalanceState.NoRate - is CryptoCurrencyStatus.Unreachable -> AnalyticsParam.CardBalanceState.BlockchainError + is CryptoCurrencyStatus.Unreachable, + is CryptoCurrencyStatus.UnreachableWithoutAddresses, + -> AnalyticsParam.CardBalanceState.BlockchainError is CryptoCurrencyStatus.MissedDerivation, is CryptoCurrencyStatus.Loading, is CryptoCurrencyStatus.Custom, diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/utils/CryptoCurrencyStatusToTokenItemConverter.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/utils/CryptoCurrencyStatusToTokenItemConverter.kt index e9ef5cc769..10be1a3537 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/utils/CryptoCurrencyStatusToTokenItemConverter.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/utils/CryptoCurrencyStatusToTokenItemConverter.kt @@ -28,6 +28,7 @@ internal class CryptoCurrencyStatusToTokenItemConverter( -> value.mapToTokenItemState() is CryptoCurrencyStatus.MissedDerivation -> value.mapToNoAddressTokenItemState() is CryptoCurrencyStatus.Unreachable, + is CryptoCurrencyStatus.UnreachableWithoutAddresses, is CryptoCurrencyStatus.NoAmount, -> value.mapToUnreachableTokenItemState() } diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/viewmodels/WalletViewModel.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/viewmodels/WalletViewModel.kt index 4a1d7b966e..1d8fd54f88 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/viewmodels/WalletViewModel.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/viewmodels/WalletViewModel.kt @@ -1222,7 +1222,9 @@ internal class WalletViewModel @Inject constructor( } } is CryptoCurrencyStatus.NoQuote -> AnalyticsParam.CardBalanceState.NoRate - is CryptoCurrencyStatus.Unreachable -> AnalyticsParam.CardBalanceState.BlockchainError + is CryptoCurrencyStatus.Unreachable, + is CryptoCurrencyStatus.UnreachableWithoutAddresses, + -> AnalyticsParam.CardBalanceState.BlockchainError is CryptoCurrencyStatus.MissedDerivation, is CryptoCurrencyStatus.Loading, is CryptoCurrencyStatus.Custom,