From 2fc98b948f66978f4d287be8365e8b064e2fa966 Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 15 Jul 2024 23:23:27 +0400 Subject: [PATCH] Updated on 2026-08-14 --- .../configs/feature_toggles_config.json | 4 - .../domain/tokens/GetTokenListUseCase.kt | 42 +-- .../CurrenciesStatusesOperations.kt | 53 --- .../domain/tokens/GetTokenListUseCaseTest.kt | 322 ------------------ .../feature/wallet/di/FeatureTogglesModule.kt | 20 -- .../featuretoggle/WalletFeatureToggles.kt | 11 - .../organizetokens/OrganizeTokensViewModel.kt | 40 +-- .../domain/GetMultiWalletWarningsFactory.kt | 2 +- .../implementors/MultiWalletContentLoader.kt | 3 - .../MultiWalletContentLoaderFactory.kt | 3 - .../MultiWalletTokenListSubscriber.kt | 10 +- 11 files changed, 15 insertions(+), 495 deletions(-) delete mode 100644 domain/tokens/src/test/kotlin/com/tangem/domain/tokens/GetTokenListUseCaseTest.kt delete mode 100644 features/wallet/impl/src/main/java/com/tangem/feature/wallet/di/FeatureTogglesModule.kt delete mode 100644 features/wallet/impl/src/main/java/com/tangem/feature/wallet/featuretoggle/WalletFeatureToggles.kt diff --git a/core/featuretoggles/src/main/assets/configs/feature_toggles_config.json b/core/featuretoggles/src/main/assets/configs/feature_toggles_config.json index 7170767402..8c540a7cbd 100644 --- a/core/featuretoggles/src/main/assets/configs/feature_toggles_config.json +++ b/core/featuretoggles/src/main/assets/configs/feature_toggles_config.json @@ -19,10 +19,6 @@ "name": "WC_SOLANA_TX_SIGN_ENABLED", "version": "undefined" }, - { - "name": "TOKEN_LIST_LCE_ENABLED", - "version": "5.12.0" - }, { "name": "CARDANO_TOKENS_SUPPORT_ENABLED", "version": "5.12.0" diff --git a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/GetTokenListUseCase.kt b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/GetTokenListUseCase.kt index ef0b96e10b..9cd14a845c 100644 --- a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/GetTokenListUseCase.kt +++ b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/GetTokenListUseCase.kt @@ -1,8 +1,6 @@ package com.tangem.domain.tokens -import arrow.core.left import com.tangem.domain.core.lce.LceFlow -import com.tangem.domain.core.utils.EitherFlow import com.tangem.domain.core.utils.lceError import com.tangem.domain.core.utils.lceLoading import com.tangem.domain.core.utils.toLce @@ -12,7 +10,6 @@ import com.tangem.domain.tokens.error.mapper.mapToTokenListError import com.tangem.domain.tokens.model.CryptoCurrencyStatus import com.tangem.domain.tokens.model.TokenList import com.tangem.domain.tokens.operations.CurrenciesStatusesLceOperations -import com.tangem.domain.tokens.operations.CurrenciesStatusesOperations import com.tangem.domain.tokens.operations.TokenListOperations import com.tangem.domain.tokens.repository.CurrenciesRepository import com.tangem.domain.tokens.repository.NetworksRepository @@ -31,29 +28,7 @@ class GetTokenListUseCase( ) { @OptIn(ExperimentalCoroutinesApi::class) - fun launch(userWalletId: UserWalletId): EitherFlow { - val operations = CurrenciesStatusesOperations( - userWalletId = userWalletId, - currenciesRepository = currenciesRepository, - quotesRepository = quotesRepository, - networksRepository = networksRepository, - stakingRepository = stakingRepository, - ) - - return operations.getCurrenciesStatusesFlow().transformLatest { maybeTokens -> - maybeTokens.fold( - ifLeft = { error -> - emit(error.mapToTokenListError().left()) - }, - ifRight = { tokens -> - emitAll(createTokenList(userWalletId, tokens)) - }, - ) - } - } - - @OptIn(ExperimentalCoroutinesApi::class) - fun launchLce(userWalletId: UserWalletId): LceFlow { + fun launch(userWalletId: UserWalletId): LceFlow { val operations = CurrenciesStatusesLceOperations( currenciesRepository = currenciesRepository, quotesRepository = quotesRepository, @@ -78,21 +53,6 @@ class GetTokenListUseCase( } } - private fun createTokenList( - userWalletId: UserWalletId, - tokens: List, - ): EitherFlow { - val operations = TokenListOperations( - userWalletId = userWalletId, - tokens = tokens, - currenciesRepository = currenciesRepository, - ) - - return operations.getTokenListFlow().map { maybeTokenList -> - maybeTokenList.mapLeft(TokenListOperations.Error::mapToTokenListError) - } - } - private fun createTokenListLce( userWalletId: UserWalletId, currencies: List, diff --git a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/operations/CurrenciesStatusesOperations.kt b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/operations/CurrenciesStatusesOperations.kt index 24bb880d94..a1c6c428a3 100644 --- a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/operations/CurrenciesStatusesOperations.kt +++ b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/operations/CurrenciesStatusesOperations.kt @@ -24,52 +24,6 @@ internal class CurrenciesStatusesOperations( private val userWalletId: UserWalletId, ) { - @OptIn(ExperimentalCoroutinesApi::class) - fun getCurrenciesStatusesFlow(): EitherFlow> { - return getMultiCurrencyWalletCurrencies().transformLatest { maybeCurrencies -> - val nonEmptyCurrencies = maybeCurrencies.fold( - ifLeft = { error -> - emit(error.left()) - return@transformLatest - }, - ifRight = List::toNonEmptyListOrNull, - ) - - if (nonEmptyCurrencies == null) { - val emptyCurrenciesStatuses = emptyList() - - emit(emptyCurrenciesStatuses.right()) - return@transformLatest - } - - val maybeLoadingCurrenciesStatuses = createCurrenciesStatuses( - currencies = nonEmptyCurrencies, - maybeNetworkStatuses = null, - maybeQuotes = null, - maybeYieldBalances = null, - ) - - emit(maybeLoadingCurrenciesStatuses) - - val (networks, currenciesIds) = getIds(nonEmptyCurrencies) - - val currenciesFlow = combine( - getQuotes(currenciesIds), - getNetworksStatuses(networks), - getYieldBalances(), - ) { maybeQuotes, maybeNetworksStatuses, maybeYieldBalances -> - createCurrenciesStatuses( - currencies = nonEmptyCurrencies, - maybeQuotes = maybeQuotes, - maybeNetworkStatuses = maybeNetworksStatuses, - maybeYieldBalances = maybeYieldBalances, - ) - } - - emitAll(currenciesFlow) - } - } - suspend fun getCurrenciesStatusesSync(): Either> { return either { catch( @@ -360,13 +314,6 @@ internal class CurrenciesStatusesOperations( return currencyStatusOperations.createTokenStatus() } - private fun getMultiCurrencyWalletCurrencies(): Flow>> { - return currenciesRepository.getMultiCurrencyWalletCurrenciesUpdates(userWalletId) - .map, Either>> { it.right() } - .catch { emit(Error.DataError(it).left()) } - .onEmpty { emit(Error.EmptyCurrencies.left()) } - } - private suspend fun Raise.getMultiCurrencyWalletCurrency(currencyId: CryptoCurrency.ID): CryptoCurrency { return Either.catch { currenciesRepository.getMultiCurrencyWalletCurrency( diff --git a/domain/tokens/src/test/kotlin/com/tangem/domain/tokens/GetTokenListUseCaseTest.kt b/domain/tokens/src/test/kotlin/com/tangem/domain/tokens/GetTokenListUseCaseTest.kt deleted file mode 100644 index b5cd747c50..0000000000 --- a/domain/tokens/src/test/kotlin/com/tangem/domain/tokens/GetTokenListUseCaseTest.kt +++ /dev/null @@ -1,322 +0,0 @@ -package com.tangem.domain.tokens - -import arrow.core.Either -import arrow.core.left -import arrow.core.right -import com.tangem.domain.core.error.DataError -import com.tangem.domain.tokens.error.TokenListError -import com.tangem.domain.tokens.mock.MockNetworks -import com.tangem.domain.tokens.mock.MockQuotes -import com.tangem.domain.tokens.mock.MockTokenLists -import com.tangem.domain.tokens.mock.MockTokens -import com.tangem.domain.tokens.model.CryptoCurrency -import com.tangem.domain.tokens.model.NetworkStatus -import com.tangem.domain.tokens.model.Quote -import com.tangem.domain.tokens.model.TokenList -import com.tangem.domain.tokens.repository.MockCurrenciesRepository -import com.tangem.domain.tokens.repository.MockNetworksRepository -import com.tangem.domain.tokens.repository.MockQuotesRepository -import com.tangem.domain.tokens.repository.MockStakingRepository -import com.tangem.domain.wallets.models.UserWalletId -import junit.framework.TestCase.assertEquals -import kotlinx.coroutines.delay -import kotlinx.coroutines.flow.* -import kotlinx.coroutines.test.runTest -import org.junit.Ignore -import org.junit.Test - -internal class GetTokenListUseCaseTest { - - private val userWalletId = UserWalletId(value = null) - - @Ignore - @Test - fun `when list ungrouped and unsorted then correct token list should be returned`() = runTest { - // Given - val expectedResult = listOf( - MockTokenLists.loadingUngroupedTokenList.right(), - MockTokenLists.failedUngroupedTokenList.right(), - ) - - val useCase = getUseCase( - isGrouped = flowOf(false.right()), - isSortedByBalance = flowOf(false.right()), - ) - - // When - val result = useCase.launch(userWalletId) - .take(count = 2) - .toList() - - // Then - assertEquals(expectedResult, result) - } - - @Test - fun `when tokens getting failed then error should be received`() = runTest { - // Given - val expectedResult = TokenListError.DataError(DataError.NetworkError.NoInternetConnection).left() - - val useCase = getUseCase(tokens = flowOf(DataError.NetworkError.NoInternetConnection.left())) - - // When - val result = useCase.launch(userWalletId).first() - - // Then - assertEquals(expectedResult, result) - } - - @Test - fun `when quotes getting failed then token list without quotes should be received`() = runTest { - // Given - val expectedResult = listOf( - MockTokenLists.loadingUngroupedTokenList.right(), - MockTokenLists.noQuotesUngroupedTokenList.right(), - ) - - val useCase = getUseCase( - quotes = flowOf(DataError.NetworkError.NoInternetConnection.left()), - statuses = flowOf(MockNetworks.verifiedNetworksStatuses.right()), - ) - - // When - val result = useCase.launch(userWalletId) - .take(count = 2) - .toList() - - // Then - assertEquals(expectedResult, result) - } - - @Test - fun `when grouping type getting failed then error should be received`() = runTest { - // Given - val expectedResult = TokenListError.DataError(DataError.NetworkError.NoInternetConnection).left() - - val useCase = getUseCase(isGrouped = flowOf(DataError.NetworkError.NoInternetConnection.left())) - - // When - val result = useCase.launch(userWalletId).first() - - // Then - assertEquals(expectedResult, result) - } - - @Test - fun `when sorting type getting failed then error should be received`() = runTest { - // Given - val expectedResult = TokenListError.DataError(DataError.NetworkError.NoInternetConnection).left() - - val useCase = getUseCase(isSortedByBalance = flowOf(DataError.NetworkError.NoInternetConnection.left())) - - // When - val result = useCase.launch(userWalletId).first() - - // Then - assertEquals(expectedResult, result) - } - - @Ignore - @Test - fun `when tokens getting failed on second emit then error should be received`() = runTest { - // Given - val error = DataError.NetworkError.NoInternetConnection.left() - val expectedResult = listOf( - MockTokenLists.loadingUngroupedTokenList.right(), - MockTokenLists.failedUngroupedTokenList.right(), - TokenListError.DataError(DataError.NetworkError.NoInternetConnection).left(), - ) - - val useCase = getUseCase( - tokens = flowOf( - MockTokens.tokens.right(), - error, - ).map { delay(timeMillis = 1_000); it }, - ) - - // When - val result = useCase.launch(userWalletId) - .take(count = 3) - .toList() - - // Then - assertEquals(expectedResult, result) - } - - @Ignore - @Test - fun `when list grouped then correct token list should be received`() = runTest { - val expectedResult = listOf( - MockTokenLists.loadingGroupedTokenList.right(), - MockTokenLists.failedGroupedTokenList.right(), - ) - - val useCase = getUseCase(isGrouped = flowOf(true.right())) - - // When - val result = useCase.launch(userWalletId) - .take(count = 2) - .toList() - - // Then - assertEquals(expectedResult, result) - } - - @Test - fun `when list is sorted and ungrouped then correct token list should be received`() = runTest { - val expectedResult = listOf( - MockTokenLists.loadingUngroupedTokenList.copy(sortedBy = TokenList.SortType.BALANCE).right(), - MockTokenLists.sortedUngroupedTokenList.right(), - ) - - val useCase = getUseCase( - statuses = flowOf(MockNetworks.verifiedNetworksStatuses.right()), - isGrouped = flowOf(false.right()), - isSortedByBalance = flowOf(true.right()), - ) - - // When - val result = useCase.launch(userWalletId) - .take(count = 2) - .toList() - - // Then - assertEquals(expectedResult, result) - } - - @Test - fun `when list is sorted and grouped then correct token list should be received`() = runTest { - val expectedResult = listOf( - MockTokenLists.loadingGroupedTokenList.copy(sortedBy = TokenList.SortType.BALANCE).right(), - MockTokenLists.sortedGroupedTokenList.right(), - ) - - val useCase = getUseCase( - statuses = flowOf(MockNetworks.verifiedNetworksStatuses.right()), - isGrouped = flowOf(true.right()), - isSortedByBalance = flowOf(true.right()), - ) - - // When - val result = useCase.launch(userWalletId) - .take(count = 2) - .toList() - - // Then - assertEquals(expectedResult, result) - } - - @Test - fun `when tokens is empty then not initialized token list should be received`() = runTest { - val expectedResult = MockTokenLists.emptyTokenList.right() - - val useCase = getUseCase(tokens = flowOf(emptyList().right())) - - // When - val result = useCase.launch(userWalletId).first() - - // Then - assertEquals(expectedResult, result) - } - - @Test - fun `when tokens flow is empty then error should be received`() = runTest { - val expectedResult = TokenListError.EmptyTokens.left() - - val useCase = getUseCase(tokens = flowOf()) - - // When - val result = useCase.launch(userWalletId).first() - - // Then - assertEquals(expectedResult, result) - } - - @Test - fun `when networks statuses flow is empty then error should be received`() = runTest { - val expectedResult = listOf( - MockTokenLists.loadingUngroupedTokenList.right(), - TokenListError.EmptyTokens.left(), - ) - - val useCase = getUseCase(statuses = flowOf()) - - // When - val result = useCase.launch(userWalletId) - .take(count = 2) - .toList() - - // Then - assertEquals(expectedResult, result) - } - - @Test - fun `when networks statuses is empty then loading token list should be received`() = runTest { - val expectedResult = MockTokenLists.loadingUngroupedTokenList.right() - - val useCase = getUseCase(statuses = flowOf(emptySet().right())) - - // When - val result = useCase.launch(userWalletId).first() - - // Then - assertEquals(expectedResult, result) - } - - @Test - fun `when quotes flow is empty then list without quotes should be received`() = runTest { - val expectedResult = listOf( - MockTokenLists.loadingUngroupedTokenList.right(), - MockTokenLists.noQuotesUngroupedTokenList.right(), - ) - - val useCase = getUseCase( - statuses = flowOf(MockNetworks.verifiedNetworksStatuses.right()), - quotes = flowOf(emptySet().right()), - ) - - // When - val result = useCase.launch(userWalletId) - .take(count = 2) - .toList() - - // Then - assertEquals(expectedResult, result) - } - - @Test - fun `when quotes is empty and statuses verified then loading token list should be received`() = runTest { - val expectedResult = MockTokenLists.loadingUngroupedTokenList.right() - - val useCase = getUseCase( - statuses = flowOf(MockNetworks.verifiedNetworksStatuses.right()), - quotes = flowOf(emptySet().right()), - ) - - // When - val result = useCase.launch(userWalletId).first() - - // Then - assertEquals(expectedResult, result) - } - - private fun getUseCase( - tokens: Flow>> = flowOf(MockTokens.tokens.right()), - quotes: Flow>> = flowOf(MockQuotes.quotes.right()), - statuses: Flow>> = flowOf(MockNetworks.errorNetworksStatuses.right()), - isGrouped: Flow> = flowOf(MockTokenLists.isGrouped.right()), - isSortedByBalance: Flow> = flowOf(MockTokenLists.isSortedByBalance.right()), - ) = GetTokenListUseCase( - currenciesRepository = MockCurrenciesRepository( - sortTokensResult = Unit.right(), - removeCurrencyResult = Unit.right(), - token = MockTokens.token1.right(), - tokens = tokens, - isGrouped = isGrouped, - isSortedByBalance = isSortedByBalance, - ), - quotesRepository = MockQuotesRepository(quotes), - networksRepository = MockNetworksRepository(statuses), - stakingRepository = MockStakingRepository(), - ) -} \ No newline at end of file diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/di/FeatureTogglesModule.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/di/FeatureTogglesModule.kt deleted file mode 100644 index a358685961..0000000000 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/di/FeatureTogglesModule.kt +++ /dev/null @@ -1,20 +0,0 @@ -package com.tangem.feature.wallet.di - -import com.tangem.core.featuretoggle.manager.FeatureTogglesManager -import com.tangem.feature.wallet.featuretoggle.WalletFeatureToggles -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 FeatureTogglesModule { - - @Provides - @Singleton - fun provideWalletFeatureToggles(featureTogglesManager: FeatureTogglesManager): WalletFeatureToggles { - return WalletFeatureToggles(featureTogglesManager) - } -} \ No newline at end of file diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/featuretoggle/WalletFeatureToggles.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/featuretoggle/WalletFeatureToggles.kt deleted file mode 100644 index e0881eead6..0000000000 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/featuretoggle/WalletFeatureToggles.kt +++ /dev/null @@ -1,11 +0,0 @@ -package com.tangem.feature.wallet.featuretoggle - -import com.tangem.core.featuretoggle.manager.FeatureTogglesManager - -internal class WalletFeatureToggles( - private val featureTogglesManager: FeatureTogglesManager, -) { - - val isTokenListLceFlowEnabled: Boolean - get() = featureTogglesManager.isFeatureEnabled("TOKEN_LIST_LCE_ENABLED") -} \ No newline at end of file diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/organizetokens/OrganizeTokensViewModel.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/organizetokens/OrganizeTokensViewModel.kt index 2540a508f8..93c0aab777 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/organizetokens/OrganizeTokensViewModel.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/organizetokens/OrganizeTokensViewModel.kt @@ -13,9 +13,7 @@ import com.tangem.domain.tokens.GetTokenListUseCase import com.tangem.domain.tokens.ToggleTokenListGroupingUseCase import com.tangem.domain.tokens.ToggleTokenListSortingUseCase import com.tangem.domain.tokens.model.TokenList -import com.tangem.domain.tokens.model.TotalFiatBalance import com.tangem.domain.wallets.models.UserWalletId -import com.tangem.feature.wallet.featuretoggle.WalletFeatureToggles import com.tangem.feature.wallet.presentation.organizetokens.analytics.PortfolioOrganizeTokensAnalyticsEvent import com.tangem.feature.wallet.presentation.organizetokens.model.OrganizeTokensListState import com.tangem.feature.wallet.presentation.organizetokens.model.OrganizeTokensState @@ -42,7 +40,6 @@ internal class OrganizeTokensViewModel @Inject constructor( private val getSelectedAppCurrencyUseCase: GetSelectedAppCurrencyUseCase, private val getBalanceHidingSettingsUseCase: GetBalanceHidingSettingsUseCase, private val analyticsEventsHandler: AnalyticsEventHandler, - private val walletFeatureToggles: WalletFeatureToggles, private val dispatchers: CoroutineDispatcherProvider, savedStateHandle: SavedStateHandle, ) : ViewModel(), DefaultLifecycleObserver, OrganizeTokensIntents { @@ -173,34 +170,21 @@ internal class OrganizeTokensViewModel @Inject constructor( } private suspend fun getTokenList(): TokenList? { - return if (walletFeatureToggles.isTokenListLceFlowEnabled) { - val tokenList = getTokenListUseCase.launchLce(userWalletId) - .transform { maybeTokenList -> - val tokenList = maybeTokenList.getOrElse( - ifLoading = { return@transform }, - ifError = { error -> - stateHolder.updateStateWithError(error) + val tokenList = getTokenListUseCase.launch(userWalletId) + .transform { maybeTokenList -> + val tokenList = maybeTokenList.getOrElse( + ifLoading = { return@transform }, + ifError = { error -> + stateHolder.updateStateWithError(error) - return@transform - }, - ) + return@transform + }, + ) - emit(tokenList) - } - - tokenList.firstOrNull() - } else { - val maybeTokenList = getTokenListUseCase.launch(userWalletId) - .first { maybeTokenList -> - maybeTokenList.getOrNull()?.totalFiatBalance !is TotalFiatBalance.Loading - } - - maybeTokenList.getOrElse { error -> - stateHolder.updateStateWithError(error) - - null + emit(tokenList) } - } + + return tokenList.firstOrNull() } private fun bootstrapDragAndDropUpdates() { diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/domain/GetMultiWalletWarningsFactory.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/domain/GetMultiWalletWarningsFactory.kt index c28d7d5e70..e3bef9a24d 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/domain/GetMultiWalletWarningsFactory.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/domain/GetMultiWalletWarningsFactory.kt @@ -46,7 +46,7 @@ internal class GetMultiWalletWarningsFactory @Inject constructor( val promoFlow = flow { emit(promoRepository.getOkxPromoBanner()) } return combine( - flow = getTokenListUseCase.launchLce(userWallet.walletId), + flow = getTokenListUseCase.launch(userWallet.walletId), flow2 = isReadyToShowRateAppUseCase(), flow3 = isNeedToBackupUseCase(userWallet.walletId), flow4 = shouldShowSwapPromoWalletUseCase(), diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/loaders/implementors/MultiWalletContentLoader.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/loaders/implementors/MultiWalletContentLoader.kt index 0a3310ce92..7dc59658c4 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/loaders/implementors/MultiWalletContentLoader.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/loaders/implementors/MultiWalletContentLoader.kt @@ -5,7 +5,6 @@ import com.tangem.domain.tokens.ApplyTokenListSortingUseCase import com.tangem.domain.tokens.GetTokenListUseCase import com.tangem.domain.tokens.RunPolkadotAccountHealthCheckUseCase import com.tangem.domain.wallets.models.UserWallet -import com.tangem.feature.wallet.featuretoggle.WalletFeatureToggles import com.tangem.feature.wallet.presentation.wallet.analytics.utils.TokenListAnalyticsSender import com.tangem.feature.wallet.presentation.wallet.analytics.utils.WalletWarningsAnalyticsSender import com.tangem.feature.wallet.presentation.wallet.domain.GetMultiWalletWarningsFactory @@ -28,7 +27,6 @@ internal class MultiWalletContentLoader( private val getSelectedAppCurrencyUseCase: GetSelectedAppCurrencyUseCase, private val applyTokenListSortingUseCase: ApplyTokenListSortingUseCase, private val getMultiWalletWarningsFactory: GetMultiWalletWarningsFactory, - private val walletFeatureToggles: WalletFeatureToggles, private val runPolkadotAccountHealthCheckUseCase: RunPolkadotAccountHealthCheckUseCase, ) : WalletContentLoader(id = userWallet.walletId) { @@ -42,7 +40,6 @@ internal class MultiWalletContentLoader( walletWithFundsChecker = walletWithFundsChecker, getTokenListUseCase = getTokenListUseCase, getSelectedAppCurrencyUseCase = getSelectedAppCurrencyUseCase, - walletFeatureToggles = walletFeatureToggles, applyTokenListSortingUseCase = applyTokenListSortingUseCase, runPolkadotAccountHealthCheckUseCase = runPolkadotAccountHealthCheckUseCase, ), diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/loaders/implementors/MultiWalletContentLoaderFactory.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/loaders/implementors/MultiWalletContentLoaderFactory.kt index 13dbadebb3..1b405c8af6 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/loaders/implementors/MultiWalletContentLoaderFactory.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/loaders/implementors/MultiWalletContentLoaderFactory.kt @@ -5,7 +5,6 @@ import com.tangem.domain.tokens.ApplyTokenListSortingUseCase import com.tangem.domain.tokens.GetTokenListUseCase import com.tangem.domain.tokens.RunPolkadotAccountHealthCheckUseCase import com.tangem.domain.wallets.models.UserWallet -import com.tangem.feature.wallet.featuretoggle.WalletFeatureToggles import com.tangem.feature.wallet.presentation.wallet.analytics.utils.TokenListAnalyticsSender import com.tangem.feature.wallet.presentation.wallet.analytics.utils.WalletWarningsAnalyticsSender import com.tangem.feature.wallet.presentation.wallet.domain.GetMultiWalletWarningsFactory @@ -26,7 +25,6 @@ internal class MultiWalletContentLoaderFactory @Inject constructor( private val getSelectedAppCurrencyUseCase: GetSelectedAppCurrencyUseCase, private val applyTokenListSortingUseCase: ApplyTokenListSortingUseCase, private val walletWarningsAnalyticsSender: WalletWarningsAnalyticsSender, - private val walletFeatureToggles: WalletFeatureToggles, private val runPolkadotAccountHealthCheckUseCase: RunPolkadotAccountHealthCheckUseCase, ) { @@ -42,7 +40,6 @@ internal class MultiWalletContentLoaderFactory @Inject constructor( getMultiWalletWarningsFactory = getMultiWalletWarningsFactory, walletWarningsAnalyticsSender = walletWarningsAnalyticsSender, applyTokenListSortingUseCase = applyTokenListSortingUseCase, - walletFeatureToggles = walletFeatureToggles, runPolkadotAccountHealthCheckUseCase = runPolkadotAccountHealthCheckUseCase, ) } diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/subscribers/MultiWalletTokenListSubscriber.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/subscribers/MultiWalletTokenListSubscriber.kt index 6b19dfd81d..12d5115bcf 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/subscribers/MultiWalletTokenListSubscriber.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/subscribers/MultiWalletTokenListSubscriber.kt @@ -3,7 +3,6 @@ package com.tangem.feature.wallet.presentation.wallet.subscribers import com.tangem.domain.appcurrency.GetSelectedAppCurrencyUseCase import com.tangem.domain.core.lce.Lce import com.tangem.domain.core.lce.LceFlow -import com.tangem.domain.core.utils.toLce import com.tangem.domain.tokens.ApplyTokenListSortingUseCase import com.tangem.domain.tokens.GetTokenListUseCase import com.tangem.domain.tokens.RunPolkadotAccountHealthCheckUseCase @@ -12,19 +11,16 @@ import com.tangem.domain.tokens.model.CryptoCurrency import com.tangem.domain.tokens.model.TokenList import com.tangem.domain.tokens.model.TotalFiatBalance import com.tangem.domain.wallets.models.UserWallet -import com.tangem.feature.wallet.featuretoggle.WalletFeatureToggles import com.tangem.feature.wallet.presentation.wallet.analytics.utils.TokenListAnalyticsSender import com.tangem.feature.wallet.presentation.wallet.domain.WalletWithFundsChecker import com.tangem.feature.wallet.presentation.wallet.state.WalletStateController import com.tangem.feature.wallet.presentation.wallet.viewmodels.intents.WalletClickIntents -import kotlinx.coroutines.flow.map @Suppress("LongParameterList") internal class MultiWalletTokenListSubscriber( private val userWallet: UserWallet, private val getTokenListUseCase: GetTokenListUseCase, private val applyTokenListSortingUseCase: ApplyTokenListSortingUseCase, - private val walletFeatureToggles: WalletFeatureToggles, stateHolder: WalletStateController, clickIntents: WalletClickIntents, tokenListAnalyticsSender: TokenListAnalyticsSender, @@ -42,11 +38,7 @@ internal class MultiWalletTokenListSubscriber( ) { override fun tokenListFlow(): LceFlow { - return if (walletFeatureToggles.isTokenListLceFlowEnabled) { - getTokenListUseCase.launchLce(userWallet.walletId) - } else { - getTokenListUseCase.launch(userWallet.walletId).map { it.toLce() } - } + return getTokenListUseCase.launch(userWallet.walletId) } override suspend fun onTokenListReceived(maybeTokenList: Lce) {