From cb5f018d2ad749ccb74250d45bb5810ebe2104cb Mon Sep 17 00:00:00 2001 From: Tangem Date: Wed, 12 Apr 2023 16:33:33 +0900 Subject: [PATCH] Updated on 2026-08-14 --- .../data/converters/CoinsResponseConverter.kt | 1 + .../TestnetTokensConfigConverter.kt | 1 + .../tokens/di/TokensListInteractorModule.kt | 40 +++++++++++++++++++ .../tokens/di/TokensListRepositoryModule.kt | 37 ----------------- ...terModule.kt => TokensListRouterModule.kt} | 8 ++-- .../domain/DefaultTokensListInteractor.kt | 17 ++++++++ .../tokens/domain/TokensListInteractor.kt | 16 ++++++++ .../features/tokens/domain/models/Token.kt | 10 +++-- ...nsRouter.kt => DefaultTokensListRouter.kt} | 7 +--- ...AddTokensRouter.kt => TokensListRouter.kt} | 4 +- .../viewmodels/TokensListViewModel.kt | 4 +- 11 files changed, 91 insertions(+), 54 deletions(-) create mode 100644 app/src/main/java/com/tangem/tap/features/tokens/di/TokensListInteractorModule.kt delete mode 100644 app/src/main/java/com/tangem/tap/features/tokens/di/TokensListRepositoryModule.kt rename app/src/main/java/com/tangem/tap/features/tokens/di/{AddTokensRouterModule.kt => TokensListRouterModule.kt} (64%) create mode 100644 app/src/main/java/com/tangem/tap/features/tokens/domain/DefaultTokensListInteractor.kt create mode 100644 app/src/main/java/com/tangem/tap/features/tokens/domain/TokensListInteractor.kt rename app/src/main/java/com/tangem/tap/features/tokens/presentation/router/{DefaultAddTokensRouter.kt => DefaultTokensListRouter.kt} (65%) rename app/src/main/java/com/tangem/tap/features/tokens/presentation/router/{AddTokensRouter.kt => TokensListRouter.kt} (73%) diff --git a/app/src/main/java/com/tangem/tap/features/tokens/data/converters/CoinsResponseConverter.kt b/app/src/main/java/com/tangem/tap/features/tokens/data/converters/CoinsResponseConverter.kt index 9fa6492d80..d8b9477c16 100644 --- a/app/src/main/java/com/tangem/tap/features/tokens/data/converters/CoinsResponseConverter.kt +++ b/app/src/main/java/com/tangem/tap/features/tokens/data/converters/CoinsResponseConverter.kt @@ -29,6 +29,7 @@ internal object CoinsResponseConverter : Converter> { blockchain = blockchain, address = network.contractAddress, iconUrl = getIconUrl(network.networkId, value.imageHost), + decimalCount = network.decimalCount?.toInt(), ) }, ) diff --git a/app/src/main/java/com/tangem/tap/features/tokens/data/converters/TestnetTokensConfigConverter.kt b/app/src/main/java/com/tangem/tap/features/tokens/data/converters/TestnetTokensConfigConverter.kt index 6a3b684b51..b010b81704 100644 --- a/app/src/main/java/com/tangem/tap/features/tokens/data/converters/TestnetTokensConfigConverter.kt +++ b/app/src/main/java/com/tangem/tap/features/tokens/data/converters/TestnetTokensConfigConverter.kt @@ -29,6 +29,7 @@ internal object TestnetTokensConfigConverter : Converter> { + return repository.getAvailableTokens(searchText = searchText.ifBlank(defaultValue = { null })) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/tokens/domain/TokensListInteractor.kt b/app/src/main/java/com/tangem/tap/features/tokens/domain/TokensListInteractor.kt new file mode 100644 index 0000000000..1fab924630 --- /dev/null +++ b/app/src/main/java/com/tangem/tap/features/tokens/domain/TokensListInteractor.kt @@ -0,0 +1,16 @@ +package com.tangem.tap.features.tokens.domain + +import androidx.paging.PagingData +import com.tangem.tap.features.tokens.domain.models.Token +import kotlinx.coroutines.flow.Flow + +/** + * Interactor of tokens list feature + * +[REDACTED_AUTHOR] + */ +internal interface TokensListInteractor { + + /** Get tokens list using filter by text [searchText] */ + fun getTokensList(searchText: String): Flow> +} \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/tokens/domain/models/Token.kt b/app/src/main/java/com/tangem/tap/features/tokens/domain/models/Token.kt index d5724c314c..750dfc94f5 100644 --- a/app/src/main/java/com/tangem/tap/features/tokens/domain/models/Token.kt +++ b/app/src/main/java/com/tangem/tap/features/tokens/domain/models/Token.kt @@ -24,10 +24,11 @@ internal data class Token( /** * Domain model of network for tokens list screen * - * @property id network id - * @property blockchain blockchain - * @property address address. If address equals null, it means it is the main network of token - * @property iconUrl network icon url + * @property id network id + * @property blockchain blockchain + * @property address address. If address equals null, it means it is the main network of token + * @property iconUrl network icon url + * @property decimalCount decimal count * [REDACTED_AUTHOR] */ @@ -36,5 +37,6 @@ internal data class Token( val blockchain: Blockchain, val address: String?, val iconUrl: String, + val decimalCount: Int?, ) } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/tokens/presentation/router/DefaultAddTokensRouter.kt b/app/src/main/java/com/tangem/tap/features/tokens/presentation/router/DefaultTokensListRouter.kt similarity index 65% rename from app/src/main/java/com/tangem/tap/features/tokens/presentation/router/DefaultAddTokensRouter.kt rename to app/src/main/java/com/tangem/tap/features/tokens/presentation/router/DefaultTokensListRouter.kt index c2543a86cb..a016e91a00 100644 --- a/app/src/main/java/com/tangem/tap/features/tokens/presentation/router/DefaultAddTokensRouter.kt +++ b/app/src/main/java/com/tangem/tap/features/tokens/presentation/router/DefaultTokensListRouter.kt @@ -1,17 +1,15 @@ package com.tangem.tap.features.tokens.presentation.router -import com.tangem.core.analytics.Analytics -import com.tangem.tap.common.analytics.events.ManageTokens import com.tangem.tap.common.redux.navigation.NavigationAction import com.tangem.tap.features.tokens.redux.TokensAction import com.tangem.tap.store /** - * Router implementation for add tokens feature + * Default implementation of tokens list router * [REDACTED_AUTHOR] */ -internal class DefaultAddTokensRouter : AddTokensRouter { +internal class DefaultTokensListRouter : TokensListRouter { override fun popBackStack() { store.dispatch(NavigationAction.PopBackTo()) @@ -19,7 +17,6 @@ internal class DefaultAddTokensRouter : AddTokensRouter { } override fun openAddCustomTokenScreen() { - Analytics.send(ManageTokens.ButtonCustomToken()) store.dispatch(TokensAction.PrepareAndNavigateToAddCustomToken) } } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/tokens/presentation/router/AddTokensRouter.kt b/app/src/main/java/com/tangem/tap/features/tokens/presentation/router/TokensListRouter.kt similarity index 73% rename from app/src/main/java/com/tangem/tap/features/tokens/presentation/router/AddTokensRouter.kt rename to app/src/main/java/com/tangem/tap/features/tokens/presentation/router/TokensListRouter.kt index c0a4d91316..1ed3a068dc 100644 --- a/app/src/main/java/com/tangem/tap/features/tokens/presentation/router/AddTokensRouter.kt +++ b/app/src/main/java/com/tangem/tap/features/tokens/presentation/router/TokensListRouter.kt @@ -1,7 +1,7 @@ package com.tangem.tap.features.tokens.presentation.router -/** Add tokens feature router */ -internal interface AddTokensRouter { +/** Tokens list feature router */ +internal interface TokensListRouter { /** Return to last screen */ fun popBackStack() diff --git a/app/src/main/java/com/tangem/tap/features/tokens/presentation/viewmodels/TokensListViewModel.kt b/app/src/main/java/com/tangem/tap/features/tokens/presentation/viewmodels/TokensListViewModel.kt index 1b7c1fc3c0..a56973ee89 100644 --- a/app/src/main/java/com/tangem/tap/features/tokens/presentation/viewmodels/TokensListViewModel.kt +++ b/app/src/main/java/com/tangem/tap/features/tokens/presentation/viewmodels/TokensListViewModel.kt @@ -24,7 +24,7 @@ import com.tangem.tap.common.redux.AppDialog import com.tangem.tap.common.redux.AppState import com.tangem.tap.domain.tokens.Contract import com.tangem.tap.domain.tokens.Currency -import com.tangem.tap.features.tokens.presentation.router.AddTokensRouter +import com.tangem.tap.features.tokens.presentation.router.TokensListRouter import com.tangem.tap.features.tokens.presentation.states.NetworkItemState import com.tangem.tap.features.tokens.presentation.states.TokenItemState import com.tangem.tap.features.tokens.presentation.states.TokensListStateHolder @@ -55,7 +55,7 @@ import javax.inject.Inject */ @HiltViewModel internal class TokensListViewModel @Inject constructor( - private val router: AddTokensRouter, + private val router: TokensListRouter, private val dispatchers: AppCoroutineDispatcherProvider, ) : ViewModel() {