Updated on 2026-08-14
This commit is contained in:
parent
0b81b905c3
commit
50332186fa
47 changed files with 38 additions and 408 deletions
|
|
@ -1,8 +1,6 @@
|
|||
package com.tangem.data.account.utils
|
||||
|
||||
import com.tangem.blockchain.common.Blockchain
|
||||
import com.tangem.core.configtoggle.FeatureToggles
|
||||
import com.tangem.core.configtoggle.feature.FeatureTogglesManager
|
||||
import com.tangem.data.account.converter.CryptoPortfolioConverter
|
||||
import com.tangem.data.common.currency.UserTokensResponseFactory
|
||||
import com.tangem.data.common.network.NetworkFactory
|
||||
|
|
@ -34,7 +32,6 @@ internal class DefaultWalletAccountsResponseFactory @Inject constructor(
|
|||
private val cryptoPortfolioCF: CryptoPortfolioConverter.Factory,
|
||||
private val userTokensResponseFactory: UserTokensResponseFactory,
|
||||
private val networkFactory: NetworkFactory,
|
||||
private val featureTogglesManager: FeatureTogglesManager,
|
||||
) {
|
||||
|
||||
fun create(userWalletId: UserWalletId, userTokensResponse: UserTokensResponse?): GetWalletAccountsResponse {
|
||||
|
|
@ -79,11 +76,10 @@ internal class DefaultWalletAccountsResponseFactory @Inject constructor(
|
|||
|
||||
private fun UserWallet.extraDefaultBlockchains(): List<Blockchain> {
|
||||
val batchId = (this as? UserWallet.Cold)?.scanResponse?.card?.batchId ?: return emptyList()
|
||||
return when {
|
||||
batchId == ADI_PROMO_BATCH_ID &&
|
||||
featureTogglesManager.isFeatureEnabled(FeatureToggles.AND_15402_ADI_MAIN_SCREEN_DEFAULT_ENABLED) ->
|
||||
listOf(Blockchain.Adi)
|
||||
else -> emptyList()
|
||||
return if (batchId == ADI_PROMO_BATCH_ID) {
|
||||
listOf(Blockchain.Adi)
|
||||
} else {
|
||||
emptyList()
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,8 +2,6 @@ package com.tangem.data.account.utils
|
|||
|
||||
import com.google.common.truth.Truth
|
||||
import com.tangem.blockchain.common.Blockchain
|
||||
import com.tangem.core.configtoggle.FeatureToggles
|
||||
import com.tangem.core.configtoggle.feature.FeatureTogglesManager
|
||||
import com.tangem.data.account.converter.CryptoPortfolioConverter
|
||||
import com.tangem.data.account.converter.createWalletAccountDTO
|
||||
import com.tangem.data.account.utils.GetWalletAccountsResponseExtTest.Companion.createUserToken
|
||||
|
|
@ -35,14 +33,12 @@ class DefaultWalletAccountsResponseFactoryTest {
|
|||
private val cryptoPortfolioConverter = mockk<CryptoPortfolioConverter>()
|
||||
private val userTokensResponseFactory = mockk<UserTokensResponseFactory>()
|
||||
private val networkFactory = mockk<NetworkFactory>()
|
||||
private val featureTogglesManager = mockk<FeatureTogglesManager>()
|
||||
|
||||
private val factory = DefaultWalletAccountsResponseFactory(
|
||||
userWalletsListRepository = userWalletsListRepository,
|
||||
cryptoPortfolioCF = cryptoPortfolioCF,
|
||||
userTokensResponseFactory = userTokensResponseFactory,
|
||||
networkFactory = networkFactory,
|
||||
featureTogglesManager = featureTogglesManager,
|
||||
)
|
||||
|
||||
private val userWalletId = UserWalletId("011")
|
||||
|
|
@ -221,7 +217,7 @@ class DefaultWalletAccountsResponseFactoryTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
fun `create passes ADI as extra blockchain when batch is BB000053 and toggle is on`() = runTest {
|
||||
fun `create passes ADI as extra blockchain when batch is BB000053`() = runTest {
|
||||
// Arrange
|
||||
val userWallet = mockk<UserWallet.Cold>(relaxed = true) {
|
||||
every { walletId } returns userWalletId
|
||||
|
|
@ -229,9 +225,6 @@ class DefaultWalletAccountsResponseFactoryTest {
|
|||
}
|
||||
|
||||
every { userWalletsListRepository.userWallets } returns MutableStateFlow(listOf(userWallet))
|
||||
every {
|
||||
featureTogglesManager.isFeatureEnabled(FeatureToggles.AND_15402_ADI_MAIN_SCREEN_DEFAULT_ENABLED)
|
||||
} returns true
|
||||
|
||||
val accounts = AccountList.empty(userWallet.walletId).accounts
|
||||
.filterIsInstance<Account.CryptoPortfolio>()
|
||||
|
|
@ -265,51 +258,7 @@ class DefaultWalletAccountsResponseFactoryTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
fun `create passes no extra blockchains when batch is BB000053 but toggle is off`() = runTest {
|
||||
// Arrange
|
||||
val userWallet = mockk<UserWallet.Cold>(relaxed = true) {
|
||||
every { walletId } returns userWalletId
|
||||
every { scanResponse.card.batchId } returns "BB000053"
|
||||
}
|
||||
|
||||
every { userWalletsListRepository.userWallets } returns MutableStateFlow(listOf(userWallet))
|
||||
every {
|
||||
featureTogglesManager.isFeatureEnabled(FeatureToggles.AND_15402_ADI_MAIN_SCREEN_DEFAULT_ENABLED)
|
||||
} returns false
|
||||
|
||||
val accounts = AccountList.empty(userWallet.walletId).accounts
|
||||
.filterIsInstance<Account.CryptoPortfolio>()
|
||||
val defaultResponse = UserTokensResponse(
|
||||
group = UserTokensResponse.GroupType.NETWORK,
|
||||
sort = UserTokensResponse.SortType.BALANCE,
|
||||
tokens = emptyList(),
|
||||
)
|
||||
every {
|
||||
userTokensResponseFactory.createDefaultResponse(
|
||||
userWallet = userWallet,
|
||||
networkFactory = networkFactory,
|
||||
accountId = accounts.first().accountId,
|
||||
extraBlockchains = emptyList(),
|
||||
)
|
||||
} returns defaultResponse
|
||||
every { cryptoPortfolioConverter.convertListBack(accounts) } returns emptyList()
|
||||
|
||||
// Act
|
||||
factory.create(userWalletId, null)
|
||||
|
||||
// Assert
|
||||
coVerifyOrder {
|
||||
userTokensResponseFactory.createDefaultResponse(
|
||||
userWallet = userWallet,
|
||||
networkFactory = networkFactory,
|
||||
accountId = accounts.first().accountId,
|
||||
extraBlockchains = emptyList(),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `create passes no extra blockchains when batch is not BB000053 even if toggle is on`() = runTest {
|
||||
fun `create passes no extra blockchains when batch is not BB000053`() = runTest {
|
||||
// Arrange
|
||||
val userWallet = mockk<UserWallet.Cold>(relaxed = true) {
|
||||
every { walletId } returns userWalletId
|
||||
|
|
@ -317,9 +266,6 @@ class DefaultWalletAccountsResponseFactoryTest {
|
|||
}
|
||||
|
||||
every { userWalletsListRepository.userWallets } returns MutableStateFlow(listOf(userWallet))
|
||||
every {
|
||||
featureTogglesManager.isFeatureEnabled(FeatureToggles.AND_15402_ADI_MAIN_SCREEN_DEFAULT_ENABLED)
|
||||
} returns true
|
||||
|
||||
val accounts = AccountList.empty(userWallet.walletId).accounts
|
||||
.filterIsInstance<Account.CryptoPortfolio>()
|
||||
|
|
|
|||
|
|
@ -1,13 +0,0 @@
|
|||
package com.tangem.data.dynamicaddresses
|
||||
|
||||
import com.tangem.core.configtoggle.FeatureToggles
|
||||
import com.tangem.core.configtoggle.feature.FeatureTogglesManager
|
||||
import com.tangem.domain.dynamicaddresses.DynamicAddressesFeatureToggles
|
||||
|
||||
internal class DefaultDynamicAddressesFeatureToggles(
|
||||
private val featureTogglesManager: FeatureTogglesManager,
|
||||
) : DynamicAddressesFeatureToggles {
|
||||
|
||||
override val isDynamicAddressesEnabled: Boolean
|
||||
get() = featureTogglesManager.isFeatureEnabled(FeatureToggles.DYNAMIC_ADDRESSES_ENABLED)
|
||||
}
|
||||
|
|
@ -6,7 +6,6 @@ import com.tangem.datasource.api.tangemTech.models.UserTokensResponse
|
|||
import com.tangem.datasource.api.tangemTech.models.account.GetWalletAccountsResponse
|
||||
import com.tangem.domain.account.repository.AccountsCRUDRepository
|
||||
import com.tangem.domain.dynamicaddresses.DynamicAddressesDerivationChecker
|
||||
import com.tangem.domain.dynamicaddresses.DynamicAddressesFeatureToggles
|
||||
import com.tangem.domain.dynamicaddresses.DynamicAddressesSupportedBlockchains
|
||||
import com.tangem.domain.dynamicaddresses.GetDerivedXpubUseCase
|
||||
import com.tangem.domain.dynamicaddresses.model.DynamicAddressesStatus
|
||||
|
|
@ -35,7 +34,6 @@ internal class DefaultDynamicAddressesRepository(
|
|||
private val walletAccountsSaver: WalletAccountsSaver,
|
||||
private val accountsCRUDRepository: AccountsCRUDRepository,
|
||||
private val walletManagersFacade: WalletManagersFacade,
|
||||
private val dynamicAddressesFeatureToggles: DynamicAddressesFeatureToggles,
|
||||
private val getDerivedXpubUseCase: GetDerivedXpubUseCase,
|
||||
private val dispatchers: CoroutineDispatcherProvider,
|
||||
) : DynamicAddressesRepository {
|
||||
|
|
@ -107,7 +105,6 @@ internal class DefaultDynamicAddressesRepository(
|
|||
}
|
||||
|
||||
override fun hasFundsOnAdditionalAddresses(userWalletId: UserWalletId, network: Network): Flow<Boolean> {
|
||||
if (!dynamicAddressesFeatureToggles.isDynamicAddressesEnabled) return flowOf(false)
|
||||
if (!DynamicAddressesSupportedBlockchains.isSupportedByNetworkId(network.id.rawId.value)) return flowOf(false)
|
||||
|
||||
return getStatus(userWalletId, network)
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@ package com.tangem.data.dynamicaddresses
|
|||
|
||||
import com.tangem.domain.common.wallets.UserWalletsListRepository
|
||||
import com.tangem.domain.common.wallets.getSyncOrNull
|
||||
import com.tangem.domain.dynamicaddresses.DynamicAddressesFeatureToggles
|
||||
import com.tangem.domain.dynamicaddresses.DynamicAddressesSupportedBlockchains
|
||||
import com.tangem.domain.dynamicaddresses.GetDerivedXpubUseCase
|
||||
import com.tangem.domain.dynamicaddresses.model.DynamicAddressesStatus
|
||||
|
|
@ -22,14 +21,11 @@ import javax.inject.Singleton
|
|||
@Singleton
|
||||
class DynamicAddressesInitializer @Inject constructor(
|
||||
private val dynamicAddressesRepository: DynamicAddressesRepository,
|
||||
private val dynamicAddressesFeatureToggles: DynamicAddressesFeatureToggles,
|
||||
private val getDerivedXpubUseCase: GetDerivedXpubUseCase,
|
||||
private val userWalletsListRepository: UserWalletsListRepository,
|
||||
) {
|
||||
|
||||
suspend fun getXpubs(userWalletId: UserWalletId, networks: Set<Network>): Map<Network, String> {
|
||||
if (!dynamicAddressesFeatureToggles.isDynamicAddressesEnabled) return emptyMap()
|
||||
|
||||
/*
|
||||
* Dynamic addresses rely on the server-side wallet accounts list, which is populated only for
|
||||
* multi-currency wallets. Single-currency wallets (Note, s2c, etc.) never populate it, so
|
||||
|
|
|
|||
|
|
@ -1,13 +1,10 @@
|
|||
package com.tangem.data.dynamicaddresses.di
|
||||
|
||||
import com.tangem.core.configtoggle.feature.FeatureTogglesManager
|
||||
import com.tangem.data.common.account.WalletAccountsFetcher
|
||||
import com.tangem.data.common.account.WalletAccountsSaver
|
||||
import com.tangem.data.dynamicaddresses.DefaultConsolidationRepository
|
||||
import com.tangem.domain.account.repository.AccountsCRUDRepository
|
||||
import com.tangem.data.dynamicaddresses.DefaultDynamicAddressesFeatureToggles
|
||||
import com.tangem.data.dynamicaddresses.DefaultDynamicAddressesRepository
|
||||
import com.tangem.domain.dynamicaddresses.DynamicAddressesFeatureToggles
|
||||
import com.tangem.domain.dynamicaddresses.GetDerivedXpubUseCase
|
||||
import com.tangem.domain.dynamicaddresses.repository.ConsolidationRepository
|
||||
import com.tangem.domain.dynamicaddresses.repository.DynamicAddressesRepository
|
||||
|
|
@ -30,7 +27,6 @@ internal object DynamicAddressesDataModule {
|
|||
walletAccountsSaver: WalletAccountsSaver,
|
||||
accountsCRUDRepository: AccountsCRUDRepository,
|
||||
walletManagersFacade: WalletManagersFacade,
|
||||
dynamicAddressesFeatureToggles: DynamicAddressesFeatureToggles,
|
||||
getDerivedXpubUseCase: GetDerivedXpubUseCase,
|
||||
dispatchers: CoroutineDispatcherProvider,
|
||||
): DynamicAddressesRepository {
|
||||
|
|
@ -39,20 +35,11 @@ internal object DynamicAddressesDataModule {
|
|||
walletAccountsSaver = walletAccountsSaver,
|
||||
accountsCRUDRepository = accountsCRUDRepository,
|
||||
walletManagersFacade = walletManagersFacade,
|
||||
dynamicAddressesFeatureToggles = dynamicAddressesFeatureToggles,
|
||||
getDerivedXpubUseCase = getDerivedXpubUseCase,
|
||||
dispatchers = dispatchers,
|
||||
)
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideDynamicAddressesFeatureToggles(
|
||||
featureTogglesManager: FeatureTogglesManager,
|
||||
): DynamicAddressesFeatureToggles {
|
||||
return DefaultDynamicAddressesFeatureToggles(featureTogglesManager = featureTogglesManager)
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideConsolidationRepository(
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ import com.tangem.data.common.account.WalletAccountsFetcher
|
|||
import com.tangem.data.common.account.WalletAccountsSaver
|
||||
import com.tangem.datasource.api.tangemTech.models.account.GetWalletAccountsResponse
|
||||
import com.tangem.domain.account.repository.AccountsCRUDRepository
|
||||
import com.tangem.domain.dynamicaddresses.DynamicAddressesFeatureToggles
|
||||
import com.tangem.domain.dynamicaddresses.GetDerivedXpubUseCase
|
||||
import com.tangem.domain.models.network.Network
|
||||
import com.tangem.domain.models.wallet.UserWalletId
|
||||
|
|
@ -32,7 +31,6 @@ class DefaultDynamicAddressesRepositoryTest {
|
|||
private val walletAccountsSaver: WalletAccountsSaver = mockk(relaxed = true)
|
||||
private val accountsCRUDRepository: AccountsCRUDRepository = mockk(relaxed = true)
|
||||
private val walletManagersFacade: WalletManagersFacade = mockk(relaxed = true)
|
||||
private val featureToggles: DynamicAddressesFeatureToggles = mockk(relaxed = true)
|
||||
private val getDerivedXpubUseCase: GetDerivedXpubUseCase = mockk(relaxed = true)
|
||||
|
||||
private val userWalletId: UserWalletId = mockk(relaxed = true)
|
||||
|
|
@ -49,7 +47,7 @@ class DefaultDynamicAddressesRepositoryTest {
|
|||
|
||||
@BeforeEach
|
||||
fun setUp() {
|
||||
clearMocks(walletManagersFacade, featureToggles, getDerivedXpubUseCase, answers = false)
|
||||
clearMocks(walletManagersFacade, getDerivedXpubUseCase, answers = false)
|
||||
// Empty response → findToken returns null → getStatus emits DISABLED.
|
||||
val emptyResponse = mockk<GetWalletAccountsResponse>(relaxed = true) {
|
||||
every { accounts } returns emptyList()
|
||||
|
|
@ -63,31 +61,14 @@ class DefaultDynamicAddressesRepositoryTest {
|
|||
walletAccountsSaver = walletAccountsSaver,
|
||||
accountsCRUDRepository = accountsCRUDRepository,
|
||||
walletManagersFacade = walletManagersFacade,
|
||||
dynamicAddressesFeatureToggles = featureToggles,
|
||||
getDerivedXpubUseCase = getDerivedXpubUseCase,
|
||||
dispatchers = dispatchers,
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `GIVEN feature toggle off WHEN collect THEN probe is never called and flow emits false`() = runTest {
|
||||
fun `GIVEN xpub is null WHEN collect THEN probe is not called AND cache is empty`() = runTest {
|
||||
// GIVEN
|
||||
every { featureToggles.isDynamicAddressesEnabled } returns false
|
||||
|
||||
// WHEN
|
||||
val values = repository.hasFundsOnAdditionalAddresses(userWalletId, network).toList()
|
||||
|
||||
// THEN
|
||||
assertThat(values).doesNotContain(true)
|
||||
coVerify(exactly = 0) {
|
||||
walletManagersFacade.probeHasFundsOnAdditionalAddresses(any(), any(), any())
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `GIVEN toggle on AND xpub is null WHEN collect THEN probe is not called AND cache is empty`() = runTest {
|
||||
// GIVEN
|
||||
every { featureToggles.isDynamicAddressesEnabled } returns true
|
||||
coEvery { getDerivedXpubUseCase(userWalletId, network) } returns null
|
||||
|
||||
// WHEN
|
||||
|
|
@ -105,7 +86,6 @@ class DefaultDynamicAddressesRepositoryTest {
|
|||
@Test
|
||||
fun `GIVEN probe returns true WHEN collect THEN result is cached AND next collect skips probe`() = runTest {
|
||||
// GIVEN
|
||||
every { featureToggles.isDynamicAddressesEnabled } returns true
|
||||
coEvery { getDerivedXpubUseCase(userWalletId, network) } returns XPUB
|
||||
coEvery {
|
||||
walletManagersFacade.probeHasFundsOnAdditionalAddresses(userWalletId, network, XPUB)
|
||||
|
|
@ -126,7 +106,6 @@ class DefaultDynamicAddressesRepositoryTest {
|
|||
@Test
|
||||
fun `GIVEN probe returns false WHEN collect twice THEN probe runs each time`() = runTest {
|
||||
// GIVEN
|
||||
every { featureToggles.isDynamicAddressesEnabled } returns true
|
||||
coEvery { getDerivedXpubUseCase(userWalletId, network) } returns XPUB
|
||||
coEvery {
|
||||
walletManagersFacade.probeHasFundsOnAdditionalAddresses(userWalletId, network, XPUB)
|
||||
|
|
@ -145,7 +124,6 @@ class DefaultDynamicAddressesRepositoryTest {
|
|||
@Test
|
||||
fun `GIVEN cached true WHEN enable succeeds THEN cache is invalidated and next probe runs again`() = runTest {
|
||||
// GIVEN — populate cache with a positive probe
|
||||
every { featureToggles.isDynamicAddressesEnabled } returns true
|
||||
coEvery { getDerivedXpubUseCase(userWalletId, network) } returns XPUB
|
||||
coEvery {
|
||||
walletManagersFacade.probeHasFundsOnAdditionalAddresses(userWalletId, network, XPUB)
|
||||
|
|
@ -165,7 +143,6 @@ class DefaultDynamicAddressesRepositoryTest {
|
|||
@Test
|
||||
fun `GIVEN cached true WHEN disable succeeds THEN cache is invalidated and next probe runs again`() = runTest {
|
||||
// GIVEN
|
||||
every { featureToggles.isDynamicAddressesEnabled } returns true
|
||||
coEvery { getDerivedXpubUseCase(userWalletId, network) } returns XPUB
|
||||
coEvery {
|
||||
walletManagersFacade.probeHasFundsOnAdditionalAddresses(userWalletId, network, XPUB)
|
||||
|
|
@ -185,7 +162,6 @@ class DefaultDynamicAddressesRepositoryTest {
|
|||
@Test
|
||||
fun `GIVEN cache entry for one network WHEN invalidate other network THEN first entry is preserved`() = runTest {
|
||||
// GIVEN — cache populated for `network`
|
||||
every { featureToggles.isDynamicAddressesEnabled } returns true
|
||||
coEvery { getDerivedXpubUseCase(userWalletId, network) } returns XPUB
|
||||
coEvery {
|
||||
walletManagersFacade.probeHasFundsOnAdditionalAddresses(userWalletId, network, XPUB)
|
||||
|
|
|
|||
|
|
@ -11,7 +11,6 @@ import com.tangem.crypto.hdWallet.DerivationPath
|
|||
import com.tangem.data.common.network.NetworkFactory
|
||||
import com.tangem.data.wallets.derivations.Derivations
|
||||
import com.tangem.data.wallets.derivations.MissedDerivationsFinder
|
||||
import com.tangem.domain.dynamicaddresses.DynamicAddressesFeatureToggles
|
||||
import com.tangem.domain.models.currency.CryptoCurrency
|
||||
import com.tangem.domain.models.network.Network
|
||||
import com.tangem.domain.models.scan.ScanResponse
|
||||
|
|
@ -31,7 +30,6 @@ internal class DefaultColdMapDerivationsRepository @Inject constructor(
|
|||
private val tangemSdkManager: TangemSdkManager,
|
||||
private val networkFactory: NetworkFactory,
|
||||
private val dispatchers: CoroutineDispatcherProvider,
|
||||
private val dynamicAddressesFeatureToggles: DynamicAddressesFeatureToggles,
|
||||
) : ColdMapDerivationsRepository {
|
||||
|
||||
override suspend fun derivePublicKeys(
|
||||
|
|
@ -66,7 +64,7 @@ internal class DefaultColdMapDerivationsRepository @Inject constructor(
|
|||
return@withContext userWallet
|
||||
}
|
||||
|
||||
val derivations = MissedDerivationsFinder(userWallet, dynamicAddressesFeatureToggles.isDynamicAddressesEnabled)
|
||||
val derivations = MissedDerivationsFinder(userWallet, isDynamicAddressesEnabled = true)
|
||||
.findByNetworks(networks)
|
||||
.ifEmpty {
|
||||
TangemLogger.d("Nothing to derive")
|
||||
|
|
@ -110,7 +108,7 @@ internal class DefaultColdMapDerivationsRepository @Inject constructor(
|
|||
networksWithDerivationPath: Map<BackendId, String?>,
|
||||
): Boolean = withContext(dispatchers.io) {
|
||||
val derivations =
|
||||
MissedDerivationsFinder(userWallet, dynamicAddressesFeatureToggles.isDynamicAddressesEnabled)
|
||||
MissedDerivationsFinder(userWallet, isDynamicAddressesEnabled = true)
|
||||
.findByNetworks(
|
||||
networksWithDerivationPath.mapNotNull { (backendId, extraDerivationPath) ->
|
||||
networkFactory.create(
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ import com.tangem.crypto.hdWallet.DerivationPath
|
|||
import com.tangem.data.common.network.NetworkFactory
|
||||
import com.tangem.data.wallets.derivations.MissedDerivationsFinder
|
||||
import com.tangem.domain.common.wallets.UserWalletsListRepository
|
||||
import com.tangem.domain.dynamicaddresses.DynamicAddressesFeatureToggles
|
||||
import com.tangem.domain.common.wallets.getSyncStrict
|
||||
import com.tangem.domain.models.account.DerivationIndex
|
||||
import com.tangem.domain.models.currency.CryptoCurrency
|
||||
|
|
@ -29,7 +28,6 @@ internal class DefaultHotMapDerivationsRepository @Inject constructor(
|
|||
private val networkFactory: NetworkFactory,
|
||||
private val hotWalletAccessor: HotWalletAccessor,
|
||||
private val dispatchers: CoroutineDispatcherProvider,
|
||||
private val dynamicAddressesFeatureToggles: DynamicAddressesFeatureToggles,
|
||||
) : HotMapDerivationsRepository {
|
||||
|
||||
override suspend fun derivePublicKeys(
|
||||
|
|
@ -61,7 +59,7 @@ internal class DefaultHotMapDerivationsRepository @Inject constructor(
|
|||
userWallet: UserWallet.Hot,
|
||||
networks: List<Network>,
|
||||
): UserWallet.Hot = withContext(dispatchers.default) {
|
||||
val derivations = MissedDerivationsFinder(userWallet, dynamicAddressesFeatureToggles.isDynamicAddressesEnabled)
|
||||
val derivations = MissedDerivationsFinder(userWallet, isDynamicAddressesEnabled = true)
|
||||
.findByNetworks(networks)
|
||||
.ifEmpty {
|
||||
TangemLogger.d("Nothing to derive")
|
||||
|
|
@ -110,7 +108,7 @@ internal class DefaultHotMapDerivationsRepository @Inject constructor(
|
|||
userWallet: UserWallet.Hot,
|
||||
networksWithDerivationPath: Map<BackendId, String?>,
|
||||
): Boolean = withContext(dispatchers.default) {
|
||||
val derivations = MissedDerivationsFinder(userWallet, dynamicAddressesFeatureToggles.isDynamicAddressesEnabled)
|
||||
val derivations = MissedDerivationsFinder(userWallet, isDynamicAddressesEnabled = true)
|
||||
.findByNetworks(
|
||||
networksWithDerivationPath.mapNotNull { (backendId, extraDerivationPath) ->
|
||||
networkFactory.create(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue