Updated on 2026-08-14

This commit is contained in:
Tangem 2023-12-14 14:11:00 +03:00
parent 9a9c365735
commit 3ed4ba95cd
20 changed files with 78 additions and 15 deletions

View file

@ -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)
}
}

View file

@ -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<Address>,
) : UpdateWalletManagerResult()
data class Verified(
val selectedAddress: String,

View file

@ -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<Amount>): Set<CryptoCurrencyAmount> {
return amounts.mapNotNullTo(hashSetOf(), ::createCurrencyAmount)
}