From 5463c87ff065e282f3d4fd9fdd5de2bc8152ce52 Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 6 Mar 2026 11:13:07 +0400 Subject: [PATCH] Updated on 2026-08-14 --- .../tap/di/domain/ManageTokensDomainModule.kt | 14 ------ .../datasource/di/local/LocalTokenModule.kt | 21 -------- .../local/token/UserTokensResponseStore.kt | 22 --------- .../FetchWalletAccountsErrorHandler.kt | 4 +- .../store/LegacyUserTokensResponseStore.kt | 29 +++-------- .../FetchWalletAccountsErrorHandlerTest.kt | 4 +- .../DefaultCustomTokensRepository.kt | 24 --------- .../DefaultManageTokensRepository.kt | 49 ------------------- .../managetokens/di/ManageTokensDataModule.kt | 5 -- .../tangem/data/tokens/di/TokensDataModule.kt | 6 --- .../repository/DefaultCurrenciesRepository.kt | 47 ------------------ .../CheckHasLinkedTokensUseCase.kt | 28 ----------- .../CheckIsCurrencyNotAddedUseCase.kt | 25 ---------- .../repository/CustomTokensRepository.kt | 7 --- .../repository/ManageTokensRepository.kt | 8 --- .../tokens/repository/CurrenciesRepository.kt | 13 ----- 16 files changed, 11 insertions(+), 295 deletions(-) delete mode 100644 core/datasource/src/main/java/com/tangem/datasource/di/local/LocalTokenModule.kt delete mode 100644 core/datasource/src/main/java/com/tangem/datasource/local/token/UserTokensResponseStore.kt rename core/datasource/src/main/java/com/tangem/datasource/local/token/DefaultUserTokensResponseStore.kt => data/account/src/main/kotlin/com/tangem/data/account/store/LegacyUserTokensResponseStore.kt (50%) delete mode 100644 domain/manage-tokens/src/main/kotlin/com/tangem/domain/managetokens/CheckHasLinkedTokensUseCase.kt delete mode 100644 domain/manage-tokens/src/main/kotlin/com/tangem/domain/managetokens/CheckIsCurrencyNotAddedUseCase.kt diff --git a/app/src/main/java/com/tangem/tap/di/domain/ManageTokensDomainModule.kt b/app/src/main/java/com/tangem/tap/di/domain/ManageTokensDomainModule.kt index b527533fc1..2ab0eca738 100644 --- a/app/src/main/java/com/tangem/tap/di/domain/ManageTokensDomainModule.kt +++ b/app/src/main/java/com/tangem/tap/di/domain/ManageTokensDomainModule.kt @@ -40,14 +40,6 @@ internal object ManageTokensDomainModule { return FindTokenUseCase(customTokensRepository) } - @Provides - @Singleton - fun provideCheckIsCurrencyNotAddedUseCase( - customTokensRepository: CustomTokensRepository, - ): CheckIsCurrencyNotAddedUseCase { - return CheckIsCurrencyNotAddedUseCase(customTokensRepository) - } - @Provides @Singleton fun provideGetSupportedNetworksUseCase( @@ -64,12 +56,6 @@ internal object ManageTokensDomainModule { return ValidateDerivationPathUseCase(customTokensRepository) } - @Provides - @Singleton - fun provideCheckHasLinkedTokensUseCase(repository: ManageTokensRepository): CheckHasLinkedTokensUseCase { - return CheckHasLinkedTokensUseCase(repository) - } - @Provides @Singleton fun provideCheckCurrencyUnsupportedUseCase(repository: ManageTokensRepository): CheckCurrencyUnsupportedUseCase { diff --git a/core/datasource/src/main/java/com/tangem/datasource/di/local/LocalTokenModule.kt b/core/datasource/src/main/java/com/tangem/datasource/di/local/LocalTokenModule.kt deleted file mode 100644 index 1165379d12..0000000000 --- a/core/datasource/src/main/java/com/tangem/datasource/di/local/LocalTokenModule.kt +++ /dev/null @@ -1,21 +0,0 @@ -package com.tangem.datasource.di.local - -import com.tangem.datasource.local.preferences.AppPreferencesStore -import com.tangem.datasource.local.token.DefaultUserTokensResponseStore -import com.tangem.datasource.local.token.UserTokensResponseStore -import dagger.Module -import dagger.Provides -import dagger.hilt.InstallIn -import dagger.hilt.components.SingletonComponent -import javax.inject.Singleton - -@Module -@InstallIn(SingletonComponent::class) -internal object LocalTokenModule { - - @Provides - @Singleton - fun provideUserTokensResponseStore(appPreferencesStore: AppPreferencesStore): UserTokensResponseStore { - return DefaultUserTokensResponseStore(appPreferencesStore = appPreferencesStore) - } -} \ No newline at end of file diff --git a/core/datasource/src/main/java/com/tangem/datasource/local/token/UserTokensResponseStore.kt b/core/datasource/src/main/java/com/tangem/datasource/local/token/UserTokensResponseStore.kt deleted file mode 100644 index 9da0c72837..0000000000 --- a/core/datasource/src/main/java/com/tangem/datasource/local/token/UserTokensResponseStore.kt +++ /dev/null @@ -1,22 +0,0 @@ -package com.tangem.datasource.local.token - -import com.tangem.datasource.api.tangemTech.models.UserTokensResponse -import com.tangem.domain.models.wallet.UserWalletId -import kotlinx.coroutines.flow.Flow - -/** - * Store of [UserTokensResponse] - * -[REDACTED_AUTHOR] - */ -interface UserTokensResponseStore { - - fun get(userWalletId: UserWalletId): Flow - - /** Get [UserTokensResponse] synchronously by [userWalletId] or null */ - suspend fun getSyncOrNull(userWalletId: UserWalletId): UserTokensResponse? - - suspend fun store(userWalletId: UserWalletId, response: UserTokensResponse) - - suspend fun clear(userWalletId: UserWalletId) -} \ No newline at end of file diff --git a/data/account/src/main/kotlin/com/tangem/data/account/fetcher/FetchWalletAccountsErrorHandler.kt b/data/account/src/main/kotlin/com/tangem/data/account/fetcher/FetchWalletAccountsErrorHandler.kt index 266d845b10..0e0b010f72 100644 --- a/data/account/src/main/kotlin/com/tangem/data/account/fetcher/FetchWalletAccountsErrorHandler.kt +++ b/data/account/src/main/kotlin/com/tangem/data/account/fetcher/FetchWalletAccountsErrorHandler.kt @@ -1,6 +1,7 @@ package com.tangem.data.account.fetcher import com.tangem.data.account.fetcher.DefaultWalletAccountsFetcher.FetchResult +import com.tangem.data.account.store.LegacyUserTokensResponseStore import com.tangem.data.account.utils.DefaultWalletAccountsResponseFactory import com.tangem.data.common.currency.UserTokensResponseAccountIdEnricher import com.tangem.data.common.currency.UserTokensSaver @@ -14,7 +15,6 @@ import com.tangem.datasource.api.tangemTech.models.UserTokensResponse import com.tangem.datasource.api.tangemTech.models.account.GetWalletAccountsResponse import com.tangem.datasource.api.tangemTech.models.account.WalletAccountDTO import com.tangem.datasource.api.tangemTech.models.account.toUserTokensResponse -import com.tangem.datasource.local.token.UserTokensResponseStore import com.tangem.domain.models.wallet.UserWalletId import timber.log.Timber import javax.inject.Inject @@ -35,7 +35,7 @@ import javax.inject.Singleton @Singleton internal class FetchWalletAccountsErrorHandler @Inject constructor( private val userTokensSaver: UserTokensSaver, - private val userTokensResponseStore: UserTokensResponseStore, + private val userTokensResponseStore: LegacyUserTokensResponseStore, private val defaultWalletAccountsResponseFactory: DefaultWalletAccountsResponseFactory, private val walletServerBinder: WalletServerBinder, ) { diff --git a/core/datasource/src/main/java/com/tangem/datasource/local/token/DefaultUserTokensResponseStore.kt b/data/account/src/main/kotlin/com/tangem/data/account/store/LegacyUserTokensResponseStore.kt similarity index 50% rename from core/datasource/src/main/java/com/tangem/datasource/local/token/DefaultUserTokensResponseStore.kt rename to data/account/src/main/kotlin/com/tangem/data/account/store/LegacyUserTokensResponseStore.kt index 89f266e889..d289e36ca0 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/local/token/DefaultUserTokensResponseStore.kt +++ b/data/account/src/main/kotlin/com/tangem/data/account/store/LegacyUserTokensResponseStore.kt @@ -1,45 +1,30 @@ -package com.tangem.datasource.local.token +package com.tangem.data.account.store import androidx.datastore.preferences.core.stringPreferencesKey import com.tangem.datasource.api.tangemTech.models.UserTokensResponse import com.tangem.datasource.local.preferences.AppPreferencesStore -import com.tangem.datasource.local.preferences.utils.getObject import com.tangem.datasource.local.preferences.utils.getObjectSyncOrNull -import com.tangem.datasource.local.preferences.utils.storeObject import com.tangem.domain.models.wallet.UserWalletId -import kotlinx.coroutines.flow.Flow +import javax.inject.Inject /** - * Default implementation of [UserTokensResponseStore] + * Legacy store for user tokens * * @property appPreferencesStore app preferences store * [REDACTED_AUTHOR] */ -internal class DefaultUserTokensResponseStore( +internal class LegacyUserTokensResponseStore @Inject constructor( private val appPreferencesStore: AppPreferencesStore, -) : UserTokensResponseStore { +) { - override fun get(userWalletId: UserWalletId): Flow { - return appPreferencesStore.getObject( - key = createPreferencesKey(userWalletId = userWalletId.stringValue), - ) - } - - override suspend fun getSyncOrNull(userWalletId: UserWalletId): UserTokensResponse? { + suspend fun getSyncOrNull(userWalletId: UserWalletId): UserTokensResponse? { return appPreferencesStore.getObjectSyncOrNull( key = createPreferencesKey(userWalletId = userWalletId.stringValue), ) } - override suspend fun store(userWalletId: UserWalletId, response: UserTokensResponse) { - appPreferencesStore.storeObject( - key = createPreferencesKey(userWalletId = userWalletId.stringValue), - value = response, - ) - } - - override suspend fun clear(userWalletId: UserWalletId) { + suspend fun clear(userWalletId: UserWalletId) { appPreferencesStore.updateData { preferences -> val key = createPreferencesKey(userWalletId = userWalletId.stringValue) diff --git a/data/account/src/test/java/com/tangem/data/account/fetcher/FetchWalletAccountsErrorHandlerTest.kt b/data/account/src/test/java/com/tangem/data/account/fetcher/FetchWalletAccountsErrorHandlerTest.kt index 80d6803bf8..7dff3d9df1 100644 --- a/data/account/src/test/java/com/tangem/data/account/fetcher/FetchWalletAccountsErrorHandlerTest.kt +++ b/data/account/src/test/java/com/tangem/data/account/fetcher/FetchWalletAccountsErrorHandlerTest.kt @@ -2,6 +2,7 @@ package com.tangem.data.account.fetcher import com.tangem.data.account.converter.createGetWalletAccountsResponse import com.tangem.data.account.converter.createWalletAccountDTO +import com.tangem.data.account.store.LegacyUserTokensResponseStore import com.tangem.data.account.utils.DefaultWalletAccountsResponseFactory import com.tangem.data.common.currency.UserTokensSaver import com.tangem.data.common.wallet.WalletServerBinder @@ -14,7 +15,6 @@ import com.tangem.datasource.api.tangemTech.models.UserTokensResponse import com.tangem.datasource.api.tangemTech.models.account.GetWalletAccountsResponse import com.tangem.datasource.api.tangemTech.models.account.WalletAccountDTO import com.tangem.datasource.api.tangemTech.models.account.toUserTokensResponse -import com.tangem.datasource.local.token.UserTokensResponseStore import com.tangem.domain.models.wallet.UserWalletId import io.mockk.clearMocks import io.mockk.coEvery @@ -34,7 +34,7 @@ class FetchWalletAccountsErrorHandlerTest { private val tangemTechApi: TangemTechApi = mockk() private val walletServerBinder: WalletServerBinder = mockk() private val userTokensSaver: UserTokensSaver = mockk(relaxUnitFun = true) - private val userTokensResponseStore: UserTokensResponseStore = mockk(relaxUnitFun = true) + private val userTokensResponseStore: LegacyUserTokensResponseStore = mockk(relaxUnitFun = true) private val defaultWalletAccountsResponseFactory: DefaultWalletAccountsResponseFactory = mockk() private val handler = FetchWalletAccountsErrorHandler( diff --git a/data/manage-tokens/src/main/kotlin/com/tangem/data/managetokens/DefaultCustomTokensRepository.kt b/data/manage-tokens/src/main/kotlin/com/tangem/data/managetokens/DefaultCustomTokensRepository.kt index 492194a851..dcf575b79f 100644 --- a/data/manage-tokens/src/main/kotlin/com/tangem/data/managetokens/DefaultCustomTokensRepository.kt +++ b/data/manage-tokens/src/main/kotlin/com/tangem/data/managetokens/DefaultCustomTokensRepository.kt @@ -10,7 +10,6 @@ import com.tangem.data.common.network.NetworkFactory import com.tangem.data.managetokens.utils.TokenAddressesConverter import com.tangem.datasource.api.common.response.getOrThrow import com.tangem.datasource.api.tangemTech.TangemTechApi -import com.tangem.datasource.local.token.UserTokensResponseStore import com.tangem.domain.card.common.extensions.canHandleBlockchain import com.tangem.domain.card.common.extensions.hotWalletExcludedBlockchains import com.tangem.domain.card.common.extensions.supportedBlockchains @@ -27,11 +26,9 @@ import com.tangem.domain.models.wallet.UserWalletId import com.tangem.utils.coroutines.CoroutineDispatcherProvider import kotlinx.coroutines.withContext -@Suppress("LongParameterList") internal class DefaultCustomTokensRepository( private val tangemTechApi: TangemTechApi, private val userWalletsListRepository: UserWalletsListRepository, - private val userTokensResponseStore: UserTokensResponseStore, private val excludedBlockchains: ExcludedBlockchains, private val dispatchers: CoroutineDispatcherProvider, private val networkFactory: NetworkFactory, @@ -64,27 +61,6 @@ internal class DefaultCustomTokensRepository( } } - override suspend fun isCurrencyNotAdded( - userWalletId: UserWalletId, - networkId: Network.ID, - derivationPath: Network.DerivationPath, - contractAddress: String?, - ): Boolean { - return withContext(dispatchers.io) { - val storedCurrencies = userTokensResponseStore.getSyncOrNull(userWalletId) - - requireNotNull(storedCurrencies) { - "User tokens not found for user wallet [$userWalletId] while checking if currency is not added" - } - - storedCurrencies.tokens.none { token -> - networkId.toBlockchain().toNetworkId() == token.networkId && - derivationPath.value == token.derivationPath && - contractAddress.equals(token.contractAddress, ignoreCase = true) - } - } - } - override suspend fun findToken( userWalletId: UserWalletId, contractAddress: String, diff --git a/data/manage-tokens/src/main/kotlin/com/tangem/data/managetokens/DefaultManageTokensRepository.kt b/data/manage-tokens/src/main/kotlin/com/tangem/data/managetokens/DefaultManageTokensRepository.kt index 28b44ce20f..d053300248 100644 --- a/data/manage-tokens/src/main/kotlin/com/tangem/data/managetokens/DefaultManageTokensRepository.kt +++ b/data/manage-tokens/src/main/kotlin/com/tangem/data/managetokens/DefaultManageTokensRepository.kt @@ -17,7 +17,6 @@ import com.tangem.datasource.api.tangemTech.models.CoinsResponse import com.tangem.datasource.api.tangemTech.models.UserTokensResponse import com.tangem.datasource.api.tangemTech.models.orDefault import com.tangem.datasource.local.config.testnet.TestnetTokensStorage -import com.tangem.datasource.local.token.UserTokensResponseStore import com.tangem.domain.card.common.TapWorkarounds.isTestCard import com.tangem.domain.card.common.extensions.* import com.tangem.domain.card.common.util.cardTypesResolver @@ -28,7 +27,6 @@ import com.tangem.domain.managetokens.model.ManagedCryptoCurrency.SourceNetwork import com.tangem.domain.managetokens.repository.ManageTokensRepository import com.tangem.domain.models.account.AccountId import com.tangem.domain.models.account.DerivationIndex -import com.tangem.domain.models.network.Network import com.tangem.domain.models.wallet.UserWallet import com.tangem.domain.models.wallet.UserWalletId import com.tangem.pagination.BatchFetchResult @@ -44,7 +42,6 @@ internal class DefaultManageTokensRepository( private val tangemTechApi: TangemTechApi, private val userWalletsListRepository: UserWalletsListRepository, private val manageTokensUpdateFetcher: ManageTokensUpdateFetcher, - private val userTokensResponseStore: UserTokensResponseStore, private val testnetTokensStorage: TestnetTokensStorage, private val excludedBlockchains: ExcludedBlockchains, private val dispatchers: CoroutineDispatcherProvider, @@ -280,52 +277,6 @@ internal class DefaultManageTokensRepository( } // endregion - override suspend fun hasLinkedTokens( - userWalletId: UserWalletId, - network: Network, - tempAddedTokens: Map>, - tempRemovedTokens: Map>, - ): Boolean { - val addedTokens = tempAddedTokens.mapToResponseTokens() - val removedTokens = tempRemovedTokens.mapToResponseTokens() - - val storedTokens = requireNotNull( - value = getSavedUserTokensResponseSync(userWalletId), - lazyMessage = { "Unable to find tokens response for user wallet with provided ID: $userWalletId" }, - ) - val newTokensList = storedTokens.tokens + addedTokens - removedTokens.toSet() - - return newTokensList.any { token -> - token.contractAddress != null && - token.networkId == network.backendId && - token.derivationPath == network.derivationPath.value - } - } - - private fun Map>.mapToResponseTokens(): List { - return flatMap { (token, networks) -> - token.availableNetworks - .filter { sourceNetwork -> networks.contains(sourceNetwork.network) } - .map { sourceNetwork -> - val networkId = sourceNetwork.network.toBlockchain().toNetworkId() - - UserTokensResponse.Token( - id = token.id.value, - networkId = networkId, - derivationPath = sourceNetwork.network.derivationPath.value, - name = token.name, - symbol = token.symbol, - decimals = sourceNetwork.decimals, - contractAddress = (sourceNetwork as? SourceNetwork.Default)?.contractAddress, - ) - } - } - } - - private suspend fun getSavedUserTokensResponseSync(key: UserWalletId): UserTokensResponse? { - return userTokensResponseStore.getSyncOrNull(userWalletId = key) - } - override suspend fun checkCurrencyUnsupportedState( userWalletId: UserWalletId, sourceNetwork: SourceNetwork, diff --git a/data/manage-tokens/src/main/kotlin/com/tangem/data/managetokens/di/ManageTokensDataModule.kt b/data/manage-tokens/src/main/kotlin/com/tangem/data/managetokens/di/ManageTokensDataModule.kt index 01922b4996..2df7ecce2c 100644 --- a/data/manage-tokens/src/main/kotlin/com/tangem/data/managetokens/di/ManageTokensDataModule.kt +++ b/data/manage-tokens/src/main/kotlin/com/tangem/data/managetokens/di/ManageTokensDataModule.kt @@ -8,7 +8,6 @@ import com.tangem.data.managetokens.DefaultManageTokensRepository import com.tangem.data.managetokens.utils.ManageTokensUpdateFetcher import com.tangem.datasource.api.tangemTech.TangemTechApi import com.tangem.datasource.local.config.testnet.TestnetTokensStorage -import com.tangem.datasource.local.token.UserTokensResponseStore import com.tangem.domain.common.wallets.UserWalletsListRepository import com.tangem.domain.managetokens.repository.CustomTokensRepository import com.tangem.domain.managetokens.repository.ManageTokensRepository @@ -29,7 +28,6 @@ internal object ManageTokensDataModule { tangemTechApi: TangemTechApi, userWalletsListRepository: UserWalletsListRepository, manageTokensUpdateFetcher: ManageTokensUpdateFetcher, - userTokensResponseStore: UserTokensResponseStore, testnetTokensStorage: TestnetTokensStorage, dispatchers: CoroutineDispatcherProvider, excludedBlockchains: ExcludedBlockchains, @@ -40,7 +38,6 @@ internal object ManageTokensDataModule { tangemTechApi = tangemTechApi, userWalletsListRepository = userWalletsListRepository, manageTokensUpdateFetcher = manageTokensUpdateFetcher, - userTokensResponseStore = userTokensResponseStore, testnetTokensStorage = testnetTokensStorage, excludedBlockchains = excludedBlockchains, networkFactory = networkFactory, @@ -54,7 +51,6 @@ internal object ManageTokensDataModule { fun provideCustomTokensRepository( tangemTechApi: TangemTechApi, userWalletsListRepository: UserWalletsListRepository, - userTokensResponseStore: UserTokensResponseStore, dispatchers: CoroutineDispatcherProvider, excludedBlockchains: ExcludedBlockchains, networkFactory: NetworkFactory, @@ -62,7 +58,6 @@ internal object ManageTokensDataModule { return DefaultCustomTokensRepository( tangemTechApi = tangemTechApi, userWalletsListRepository = userWalletsListRepository, - userTokensResponseStore = userTokensResponseStore, excludedBlockchains = excludedBlockchains, dispatchers = dispatchers, networkFactory = networkFactory, diff --git a/data/tokens/src/main/kotlin/com/tangem/data/tokens/di/TokensDataModule.kt b/data/tokens/src/main/kotlin/com/tangem/data/tokens/di/TokensDataModule.kt index 2f577c7b2b..e0630ac246 100644 --- a/data/tokens/src/main/kotlin/com/tangem/data/tokens/di/TokensDataModule.kt +++ b/data/tokens/src/main/kotlin/com/tangem/data/tokens/di/TokensDataModule.kt @@ -3,7 +3,6 @@ package com.tangem.data.tokens.di import com.tangem.blockchainsdk.utils.ExcludedBlockchains import com.tangem.data.common.cache.CacheRegistry import com.tangem.data.common.currency.CardCryptoCurrencyFactory -import com.tangem.data.common.currency.ResponseCryptoCurrenciesFactory import com.tangem.data.tokens.repository.DefaultCurrenciesRepository import com.tangem.data.tokens.repository.DefaultCurrencyChecksRepository import com.tangem.data.tokens.repository.DefaultTokenReceiveWarningsViewedRepository @@ -11,7 +10,6 @@ import com.tangem.data.tokens.repository.DefaultYieldSupplyWarningsViewedReposit import com.tangem.datasource.api.tangemTech.TangemTechApi import com.tangem.datasource.local.preferences.AppPreferencesStore import com.tangem.datasource.local.token.TokenReceiveWarningActionStore -import com.tangem.datasource.local.token.UserTokensResponseStore import com.tangem.domain.common.wallets.UserWalletsListRepository import com.tangem.domain.express.ExpressServiceFetcher import com.tangem.domain.tokens.MultiWalletCryptoCurrenciesSupplier @@ -35,7 +33,6 @@ internal object TokensDataModule { @Singleton fun provideCurrenciesRepository( tangemTechApi: TangemTechApi, - userTokensResponseStore: UserTokensResponseStore, userWalletsListRepository: UserWalletsListRepository, walletManagersFacade: WalletManagersFacade, cacheRegistry: CacheRegistry, @@ -43,7 +40,6 @@ internal object TokensDataModule { expressServiceFetcher: ExpressServiceFetcher, excludedBlockchains: ExcludedBlockchains, cardCryptoCurrencyFactory: CardCryptoCurrencyFactory, - responseCryptoCurrenciesFactory: ResponseCryptoCurrenciesFactory, multiWalletCryptoCurrenciesSupplier: MultiWalletCryptoCurrenciesSupplier, ): CurrenciesRepository { return DefaultCurrenciesRepository( @@ -51,12 +47,10 @@ internal object TokensDataModule { userWalletsListRepository = userWalletsListRepository, walletManagersFacade = walletManagersFacade, cacheRegistry = cacheRegistry, - userTokensResponseStore = userTokensResponseStore, expressServiceFetcher = expressServiceFetcher, dispatchers = dispatchers, excludedBlockchains = excludedBlockchains, cardCryptoCurrencyFactory = cardCryptoCurrencyFactory, - responseCryptoCurrenciesFactory = responseCryptoCurrenciesFactory, multiWalletCryptoCurrenciesSupplier = multiWalletCryptoCurrenciesSupplier, ) } diff --git a/data/tokens/src/main/kotlin/com/tangem/data/tokens/repository/DefaultCurrenciesRepository.kt b/data/tokens/src/main/kotlin/com/tangem/data/tokens/repository/DefaultCurrenciesRepository.kt index 952b4aa680..9e5a67df59 100644 --- a/data/tokens/src/main/kotlin/com/tangem/data/tokens/repository/DefaultCurrenciesRepository.kt +++ b/data/tokens/src/main/kotlin/com/tangem/data/tokens/repository/DefaultCurrenciesRepository.kt @@ -8,12 +8,9 @@ import com.tangem.blockchainsdk.utils.toBlockchain import com.tangem.data.common.cache.CacheRegistry import com.tangem.data.common.currency.CardCryptoCurrencyFactory import com.tangem.data.common.currency.CryptoCurrencyFactory -import com.tangem.data.common.currency.ResponseCryptoCurrenciesFactory import com.tangem.data.common.currency.getTokenId import com.tangem.datasource.api.common.response.getOrThrow import com.tangem.datasource.api.tangemTech.TangemTechApi -import com.tangem.datasource.api.tangemTech.models.UserTokensResponse -import com.tangem.datasource.local.token.UserTokensResponseStore import com.tangem.domain.card.CardTypesResolver import com.tangem.domain.card.common.util.cardTypesResolver import com.tangem.domain.common.wallets.UserWalletsListRepository @@ -21,7 +18,6 @@ import com.tangem.domain.common.wallets.getSyncStrict import com.tangem.domain.core.error.DataError import com.tangem.domain.express.ExpressServiceFetcher import com.tangem.domain.express.models.ExpressAsset -import com.tangem.domain.models.account.DerivationIndex import com.tangem.domain.models.currency.CryptoCurrency import com.tangem.domain.models.currency.CryptoCurrencyStatus import com.tangem.domain.models.network.Network @@ -36,9 +32,7 @@ import com.tangem.domain.tokens.repository.CurrenciesRepository import com.tangem.domain.walletmanager.WalletManagersFacade import com.tangem.utils.coroutines.CoroutineDispatcherProvider import kotlinx.coroutines.coroutineScope -import kotlinx.coroutines.flow.* import kotlinx.coroutines.launch -import kotlinx.coroutines.plus import kotlinx.coroutines.withContext import timber.log.Timber import com.tangem.blockchain.common.FeePaidCurrency as FeePaidSdkCurrency @@ -52,28 +46,12 @@ internal class DefaultCurrenciesRepository( private val expressServiceFetcher: ExpressServiceFetcher, private val dispatchers: CoroutineDispatcherProvider, private val cardCryptoCurrencyFactory: CardCryptoCurrencyFactory, - private val userTokensResponseStore: UserTokensResponseStore, - private val responseCryptoCurrenciesFactory: ResponseCryptoCurrenciesFactory, private val multiWalletCryptoCurrenciesSupplier: MultiWalletCryptoCurrenciesSupplier, excludedBlockchains: ExcludedBlockchains, ) : CurrenciesRepository { private val cryptoCurrencyFactory = CryptoCurrencyFactory(excludedBlockchains) - override fun getWalletCurrenciesUpdates(userWalletId: UserWalletId): Flow> { - return channelFlow { - val userWallet = userWalletsListRepository.getSyncStrict(userWalletId) - - if (userWallet.isMultiCurrency) { - getMultiCurrencyWalletCurrenciesUpdates(userWalletId).collect(::send) - } else { - val currencies = getSingleCurrencyWalletWithCardCurrencies(userWalletId) - - send(currencies) - } - } - } - override suspend fun getSingleCurrencyWalletPrimaryCurrency( userWalletId: UserWalletId, refresh: Boolean, @@ -143,17 +121,6 @@ internal class DefaultCurrenciesRepository( } } - private fun getMultiCurrencyWalletCurrenciesUpdates(userWalletId: UserWalletId): Flow> { - return channelFlow { - val userWallet = userWalletsListRepository.getSyncStrict(userWalletId) - ensureIsCorrectUserWallet(userWallet, isMultiCurrencyWalletExpected = true) - - getMultiCurrencyWalletCurrencies(userWallet) - .onEach { send(it) } - .launchIn(scope = this + dispatchers.io) - } - } - override suspend fun getNetworkCoin( userWalletId: UserWalletId, networkId: Network.ID, @@ -281,16 +248,6 @@ internal class DefaultCurrenciesRepository( return (userWalletsListRepository.getSyncStrict(userWalletId) as? UserWallet.Cold)?.cardTypesResolver } - private fun getMultiCurrencyWalletCurrencies(userWallet: UserWallet): Flow> { - return getSavedUserTokensResponse(userWallet.walletId).map { storedTokens -> - responseCryptoCurrenciesFactory.createCurrencies( - response = storedTokens, - userWallet = userWallet, - accountIndex = DerivationIndex.Main, - ) - } - } - private suspend fun fetchExpressAssetsByNetworkIds( userWallet: UserWallet, cryptoCurrencies: List, @@ -338,8 +295,4 @@ internal class DefaultCurrenciesRepository( throw error } } - - private fun getSavedUserTokensResponse(key: UserWalletId): Flow { - return userTokensResponseStore.get(userWalletId = key).filterNotNull() - } } \ No newline at end of file diff --git a/domain/manage-tokens/src/main/kotlin/com/tangem/domain/managetokens/CheckHasLinkedTokensUseCase.kt b/domain/manage-tokens/src/main/kotlin/com/tangem/domain/managetokens/CheckHasLinkedTokensUseCase.kt deleted file mode 100644 index f839f26922..0000000000 --- a/domain/manage-tokens/src/main/kotlin/com/tangem/domain/managetokens/CheckHasLinkedTokensUseCase.kt +++ /dev/null @@ -1,28 +0,0 @@ -package com.tangem.domain.managetokens - -import arrow.core.Either -import com.tangem.domain.managetokens.model.ManagedCryptoCurrency -import com.tangem.domain.managetokens.repository.ManageTokensRepository -import com.tangem.domain.models.network.Network -import com.tangem.domain.models.wallet.UserWalletId - -class CheckHasLinkedTokensUseCase( - private val repository: ManageTokensRepository, -) { - - suspend operator fun invoke( - userWalletId: UserWalletId, - network: Network, - tempAddedTokens: Map>, - tempRemovedTokens: Map>, - ): Either { - return Either.catch { - repository.hasLinkedTokens( - userWalletId = userWalletId, - network = network, - tempAddedTokens = tempAddedTokens, - tempRemovedTokens = tempRemovedTokens, - ) - } - } -} \ No newline at end of file diff --git a/domain/manage-tokens/src/main/kotlin/com/tangem/domain/managetokens/CheckIsCurrencyNotAddedUseCase.kt b/domain/manage-tokens/src/main/kotlin/com/tangem/domain/managetokens/CheckIsCurrencyNotAddedUseCase.kt deleted file mode 100644 index 51b7543912..0000000000 --- a/domain/manage-tokens/src/main/kotlin/com/tangem/domain/managetokens/CheckIsCurrencyNotAddedUseCase.kt +++ /dev/null @@ -1,25 +0,0 @@ -package com.tangem.domain.managetokens - -import arrow.core.Either -import com.tangem.domain.managetokens.repository.CustomTokensRepository -import com.tangem.domain.models.network.Network -import com.tangem.domain.models.wallet.UserWalletId - -class CheckIsCurrencyNotAddedUseCase( - private val repository: CustomTokensRepository, -) { - - suspend operator fun invoke( - userWalletId: UserWalletId, - networkId: Network.ID, - derivationPath: Network.DerivationPath, - contractAddress: String?, - ): Either = Either.catch { - repository.isCurrencyNotAdded( - userWalletId = userWalletId, - networkId = networkId, - derivationPath = derivationPath, - contractAddress = contractAddress, - ) - } -} \ No newline at end of file diff --git a/domain/manage-tokens/src/main/kotlin/com/tangem/domain/managetokens/repository/CustomTokensRepository.kt b/domain/manage-tokens/src/main/kotlin/com/tangem/domain/managetokens/repository/CustomTokensRepository.kt index 219d138628..3d27222db6 100644 --- a/domain/manage-tokens/src/main/kotlin/com/tangem/domain/managetokens/repository/CustomTokensRepository.kt +++ b/domain/manage-tokens/src/main/kotlin/com/tangem/domain/managetokens/repository/CustomTokensRepository.kt @@ -10,13 +10,6 @@ interface CustomTokensRepository { suspend fun validateContractAddress(contractAddress: String, networkId: Network.ID): Boolean - suspend fun isCurrencyNotAdded( - userWalletId: UserWalletId, - networkId: Network.ID, - derivationPath: Network.DerivationPath, - contractAddress: String?, - ): Boolean - suspend fun findToken( userWalletId: UserWalletId, contractAddress: String, diff --git a/domain/manage-tokens/src/main/kotlin/com/tangem/domain/managetokens/repository/ManageTokensRepository.kt b/domain/manage-tokens/src/main/kotlin/com/tangem/domain/managetokens/repository/ManageTokensRepository.kt index 981bdac9b1..30dda9680b 100644 --- a/domain/manage-tokens/src/main/kotlin/com/tangem/domain/managetokens/repository/ManageTokensRepository.kt +++ b/domain/manage-tokens/src/main/kotlin/com/tangem/domain/managetokens/repository/ManageTokensRepository.kt @@ -4,7 +4,6 @@ import com.tangem.domain.managetokens.model.CurrencyUnsupportedState import com.tangem.domain.managetokens.model.ManageTokensListBatchFlow import com.tangem.domain.managetokens.model.ManageTokensListBatchingContext import com.tangem.domain.managetokens.model.ManagedCryptoCurrency -import com.tangem.domain.models.network.Network import com.tangem.domain.models.wallet.UserWalletId interface ManageTokensRepository { @@ -15,13 +14,6 @@ interface ManageTokensRepository { batchSize: Int, ): ManageTokensListBatchFlow - suspend fun hasLinkedTokens( - userWalletId: UserWalletId, - network: Network, - tempAddedTokens: Map>, - tempRemovedTokens: Map>, - ): Boolean - suspend fun checkCurrencyUnsupportedState( userWalletId: UserWalletId, sourceNetwork: ManagedCryptoCurrency.SourceNetwork, diff --git a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/repository/CurrenciesRepository.kt b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/repository/CurrenciesRepository.kt index c830032607..a7d60f9374 100644 --- a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/repository/CurrenciesRepository.kt +++ b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/repository/CurrenciesRepository.kt @@ -7,7 +7,6 @@ import com.tangem.domain.models.currency.CryptoCurrencyStatus import com.tangem.domain.models.network.Network import com.tangem.domain.models.wallet.UserWalletId import com.tangem.domain.tokens.model.FeePaidCurrency -import kotlinx.coroutines.flow.Flow /** * Repository for everything related to the tokens of user wallet @@ -15,18 +14,6 @@ import kotlinx.coroutines.flow.Flow @Suppress("TooManyFunctions") interface CurrenciesRepository { - /** - * Retrieves the list of cryptocurrencies within a user wallet. - * - * This method returns a list of cryptocurrencies associated with the user wallet regardless of whether - * it is a multi-currency or single-currency wallet. - * - * @param userWalletId The unique identifier of the user wallet. - * @return A list of [CryptoCurrency]. - */ - @Deprecated("Use MultiWalletCryptoCurrenciesSupplier") - fun getWalletCurrenciesUpdates(userWalletId: UserWalletId): Flow> - /** * Retrieves the primary cryptocurrency for a specific single-currency user wallet. *