Updated on 2026-08-14

This commit is contained in:
Tangem 2026-04-24 00:44:59 +03:00
parent 361bd8168b
commit 3da4771d66
19 changed files with 605 additions and 14 deletions

View file

@ -442,12 +442,8 @@ internal class DefaultWalletManagersFacade @Inject constructor(
)
}
try {
walletManager.enableDynamicAddresses(xpub)
SimpleResult.Success
} catch (e: Exception) {
SimpleResult.Failure(BlockchainSdkError.CustomError(e.message ?: "Failed to enable XPUB mode"))
}
walletManager.enableDynamicAddresses(xpub)
SimpleResult.Success
}
@Suppress("TooGenericExceptionCaught")
@ -461,12 +457,8 @@ internal class DefaultWalletManagersFacade @Inject constructor(
)
}
try {
walletManager.disableDynamicAddresses()
SimpleResult.Success
} catch (e: Exception) {
SimpleResult.Failure(BlockchainSdkError.CustomError(e.message ?: "Failed to disable XPUB mode"))
}
walletManager.disableDynamicAddresses()
SimpleResult.Success
}
override suspend fun isDynamicAddressesEnabled(userWalletId: UserWalletId, network: Network): Boolean {
@ -507,6 +499,25 @@ internal class DefaultWalletManagersFacade @Inject constructor(
}
}
override suspend fun probeHasFundsOnAdditionalAddresses(
userWalletId: UserWalletId,
network: Network,
xpub: String,
): Boolean {
return withContext(dispatchers.io) {
val walletManager = getOrCreateWalletManager(userWalletId = userWalletId, network = network)
val dynamicAddressesManager = walletManager as? DynamicAddressesManager
?: return@withContext false
when (val result = dynamicAddressesManager.probeHasFundsOnNonBaseAddresses(xpub)) {
is Result.Success -> result.data
is Result.Failure -> {
TangemLogger.w("Xpub probe failed for ${network.id}: ${result.error}")
false
}
}
}
}
private suspend fun getEnabledDynamicAddressesManagerOrNull(
userWalletId: UserWalletId,
network: Network,