From 80ac1d02c03e7d39ce01ccf3ddc90a74ec997dbb Mon Sep 17 00:00:00 2001 From: Tangem Date: Wed, 12 Jul 2023 09:52:20 +0300 Subject: [PATCH] Updated on 2026-08-14 --- app/build.gradle.kts | 2 + .../tap/di/domain/TokensDomainModule.kt | 26 ++++++++++++ data/tokens/.gitignore | 1 + data/tokens/build.gradle.kts | 17 ++++++++ .../tangem/data/tokens/di/TokensDataModule.kt | 30 +++++++++++++ .../repository/DefaultNetworksRepository.kt | 25 +++++++++++ .../repository/DefaultQuotesRepository.kt | 15 +++++++ .../repository/DefaultTokensRepository.kt | 32 ++++++++++++++ domain/tokens/.gitignore | 1 + domain/tokens/build.gradle.kts | 10 +++++ .../domain/tokens/GetTokenListUseCase.kt | 28 +++++++++++++ .../tangem/domain/tokens/error/TokensError.kt | 6 +++ .../com/tangem/domain/tokens/model/Network.kt | 10 +++++ .../domain/tokens/model/NetworkGroup.kt | 9 ++++ .../domain/tokens/model/NetworkStatus.kt | 23 ++++++++++ .../com/tangem/domain/tokens/model/Quote.kt | 9 ++++ .../com/tangem/domain/tokens/model/Token.kt | 14 +++++++ .../tangem/domain/tokens/model/TokenList.kt | 38 +++++++++++++++++ .../tangem/domain/tokens/model/TokenStatus.kt | 42 +++++++++++++++++++ .../tokens/repository/NetworksRepository.kt | 26 ++++++++++++ .../tokens/repository/QuotesRepository.kt | 18 ++++++++ .../tokens/repository/TokensRepository.kt | 29 +++++++++++++ features/wallet/impl/build.gradle.kts | 1 + .../router/DefaultWalletRouter.kt | 3 +- .../wallet/viewmodels/WalletViewModel.kt | 6 ++- settings.gradle.kts | 2 + 26 files changed, 421 insertions(+), 2 deletions(-) create mode 100644 app/src/main/java/com/tangem/tap/di/domain/TokensDomainModule.kt create mode 100644 data/tokens/.gitignore create mode 100644 data/tokens/build.gradle.kts create mode 100644 data/tokens/src/main/kotlin/com/tangem/data/tokens/di/TokensDataModule.kt create mode 100644 data/tokens/src/main/kotlin/com/tangem/data/tokens/repository/DefaultNetworksRepository.kt create mode 100644 data/tokens/src/main/kotlin/com/tangem/data/tokens/repository/DefaultQuotesRepository.kt create mode 100644 data/tokens/src/main/kotlin/com/tangem/data/tokens/repository/DefaultTokensRepository.kt create mode 100644 domain/tokens/.gitignore create mode 100644 domain/tokens/build.gradle.kts create mode 100644 domain/tokens/src/main/kotlin/com/tangem/domain/tokens/GetTokenListUseCase.kt create mode 100644 domain/tokens/src/main/kotlin/com/tangem/domain/tokens/error/TokensError.kt create mode 100644 domain/tokens/src/main/kotlin/com/tangem/domain/tokens/model/Network.kt create mode 100644 domain/tokens/src/main/kotlin/com/tangem/domain/tokens/model/NetworkGroup.kt create mode 100644 domain/tokens/src/main/kotlin/com/tangem/domain/tokens/model/NetworkStatus.kt create mode 100644 domain/tokens/src/main/kotlin/com/tangem/domain/tokens/model/Quote.kt create mode 100644 domain/tokens/src/main/kotlin/com/tangem/domain/tokens/model/Token.kt create mode 100644 domain/tokens/src/main/kotlin/com/tangem/domain/tokens/model/TokenList.kt create mode 100644 domain/tokens/src/main/kotlin/com/tangem/domain/tokens/model/TokenStatus.kt create mode 100644 domain/tokens/src/main/kotlin/com/tangem/domain/tokens/repository/NetworksRepository.kt create mode 100644 domain/tokens/src/main/kotlin/com/tangem/domain/tokens/repository/QuotesRepository.kt create mode 100644 domain/tokens/src/main/kotlin/com/tangem/domain/tokens/repository/TokensRepository.kt diff --git a/app/build.gradle.kts b/app/build.gradle.kts index b56b814c08..07f7cd8b81 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -28,6 +28,7 @@ dependencies { implementation(project(":domain:card")) implementation(project(":domain:wallets")) implementation(project(":domain:wallets:models")) + implementation(projects.domain.tokens) implementation(project(":common")) implementation(project(":core:analytics")) implementation(projects.core.analytics.models) @@ -40,6 +41,7 @@ dependencies { implementation(project(":libs:crypto")) implementation(project(":libs:auth")) implementation(project(":data:source:preferences")) + implementation(projects.data.tokens) /** Features */ implementation(project(":features:onboarding")) diff --git a/app/src/main/java/com/tangem/tap/di/domain/TokensDomainModule.kt b/app/src/main/java/com/tangem/tap/di/domain/TokensDomainModule.kt new file mode 100644 index 0000000000..bda1a7734d --- /dev/null +++ b/app/src/main/java/com/tangem/tap/di/domain/TokensDomainModule.kt @@ -0,0 +1,26 @@ +package com.tangem.tap.di.domain + +import com.tangem.domain.tokens.GetTokenListUseCase +import com.tangem.domain.tokens.repository.NetworksRepository +import com.tangem.domain.tokens.repository.QuotesRepository +import com.tangem.domain.tokens.repository.TokensRepository +import com.tangem.utils.coroutines.CoroutineDispatcherProvider +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.android.components.ViewModelComponent +import dagger.hilt.android.scopes.ViewModelScoped + +@Module +@InstallIn(ViewModelComponent::class) +internal object TokensDomainModule { + + @Provides + @ViewModelScoped + fun provideGetTokenListUseCase( + tokensRepository: TokensRepository, + quotesRepository: QuotesRepository, + networksRepository: NetworksRepository, + dispatchers: CoroutineDispatcherProvider, + ) = GetTokenListUseCase(tokensRepository, quotesRepository, networksRepository, dispatchers) +} \ No newline at end of file diff --git a/data/tokens/.gitignore b/data/tokens/.gitignore new file mode 100644 index 0000000000..796b96d1c4 --- /dev/null +++ b/data/tokens/.gitignore @@ -0,0 +1 @@ +/build diff --git a/data/tokens/build.gradle.kts b/data/tokens/build.gradle.kts new file mode 100644 index 0000000000..95abf3ed40 --- /dev/null +++ b/data/tokens/build.gradle.kts @@ -0,0 +1,17 @@ +plugins { + alias(deps.plugins.kotlin.jvm) + alias(deps.plugins.kotlin.kapt) + id("configuration") +} + +dependencies { + implementation(projects.domain.tokens) + implementation(projects.domain.wallets.models) + + implementation(deps.kotlin.coroutines) + + implementation(deps.arrow.core) + + implementation(deps.hilt.core) + kapt(deps.hilt.kapt) +} \ No newline at end of file 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 new file mode 100644 index 0000000000..9f88733061 --- /dev/null +++ b/data/tokens/src/main/kotlin/com/tangem/data/tokens/di/TokensDataModule.kt @@ -0,0 +1,30 @@ +package com.tangem.data.tokens.di + +import com.tangem.data.tokens.repository.DefaultNetworksRepository +import com.tangem.data.tokens.repository.DefaultQuotesRepository +import com.tangem.data.tokens.repository.DefaultTokensRepository +import com.tangem.domain.tokens.repository.NetworksRepository +import com.tangem.domain.tokens.repository.QuotesRepository +import com.tangem.domain.tokens.repository.TokensRepository +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 TokensDataModule { + + @Provides + @Singleton + fun provideTokensRepository(): TokensRepository = DefaultTokensRepository() + + @Provides + @Singleton + fun provideQuotesRepository(): QuotesRepository = DefaultQuotesRepository() + + @Provides + @Singleton + fun provideNetworksRepository(): NetworksRepository = DefaultNetworksRepository() +} \ No newline at end of file diff --git a/data/tokens/src/main/kotlin/com/tangem/data/tokens/repository/DefaultNetworksRepository.kt b/data/tokens/src/main/kotlin/com/tangem/data/tokens/repository/DefaultNetworksRepository.kt new file mode 100644 index 0000000000..dbad76f32b --- /dev/null +++ b/data/tokens/src/main/kotlin/com/tangem/data/tokens/repository/DefaultNetworksRepository.kt @@ -0,0 +1,25 @@ +package com.tangem.data.tokens.repository + +import arrow.core.Either +import com.tangem.domain.tokens.error.TokensError +import com.tangem.domain.tokens.model.Network +import com.tangem.domain.tokens.model.NetworkStatus +import com.tangem.domain.tokens.model.Token +import com.tangem.domain.tokens.repository.NetworksRepository +import com.tangem.domain.wallets.models.UserWalletId +import kotlinx.coroutines.flow.Flow + +internal class DefaultNetworksRepository : NetworksRepository { + + override fun getNetworks(networksIds: Set): Either> { + TODO("Not yet implemented") + } + + override fun getNetworkStatuses( + userWalletId: UserWalletId, + networks: Map>, + refresh: Boolean, + ): Flow>> { + TODO("Not yet implemented") + } +} \ No newline at end of file diff --git a/data/tokens/src/main/kotlin/com/tangem/data/tokens/repository/DefaultQuotesRepository.kt b/data/tokens/src/main/kotlin/com/tangem/data/tokens/repository/DefaultQuotesRepository.kt new file mode 100644 index 0000000000..087f265e96 --- /dev/null +++ b/data/tokens/src/main/kotlin/com/tangem/data/tokens/repository/DefaultQuotesRepository.kt @@ -0,0 +1,15 @@ +package com.tangem.data.tokens.repository + +import arrow.core.Either +import com.tangem.domain.tokens.error.TokensError +import com.tangem.domain.tokens.model.Quote +import com.tangem.domain.tokens.model.Token +import com.tangem.domain.tokens.repository.QuotesRepository +import kotlinx.coroutines.flow.Flow + +internal class DefaultQuotesRepository : QuotesRepository { + + override fun getQuotes(tokensIds: Set, refresh: Boolean): Flow>> { + TODO("Not yet implemented") + } +} \ No newline at end of file diff --git a/data/tokens/src/main/kotlin/com/tangem/data/tokens/repository/DefaultTokensRepository.kt b/data/tokens/src/main/kotlin/com/tangem/data/tokens/repository/DefaultTokensRepository.kt new file mode 100644 index 0000000000..cb7575e7fa --- /dev/null +++ b/data/tokens/src/main/kotlin/com/tangem/data/tokens/repository/DefaultTokensRepository.kt @@ -0,0 +1,32 @@ +package com.tangem.data.tokens.repository + +import arrow.core.Either +import com.tangem.domain.tokens.error.TokensError +import com.tangem.domain.tokens.model.Token +import com.tangem.domain.tokens.repository.TokensRepository +import com.tangem.domain.wallets.models.UserWalletId +import kotlinx.coroutines.flow.Flow + +internal class DefaultTokensRepository : TokensRepository { + + override suspend fun sortTokens( + userWalletId: UserWalletId, + sortedTokensIds: Set, + isGrouped: Boolean, + isSortedByBalance: Boolean, + ): Either { + TODO("Not yet implemented") + } + + override fun getTokens(userWalletId: UserWalletId, refresh: Boolean): Flow>> { + TODO("Not yet implemented") + } + + override fun isTokensGrouped(userWalletId: UserWalletId): Flow> { + TODO("Not yet implemented") + } + + override fun isTokensSortedByBalance(userWalletId: UserWalletId): Flow> { + TODO("Not yet implemented") + } +} \ No newline at end of file diff --git a/domain/tokens/.gitignore b/domain/tokens/.gitignore new file mode 100644 index 0000000000..796b96d1c4 --- /dev/null +++ b/domain/tokens/.gitignore @@ -0,0 +1 @@ +/build diff --git a/domain/tokens/build.gradle.kts b/domain/tokens/build.gradle.kts new file mode 100644 index 0000000000..d4297e1590 --- /dev/null +++ b/domain/tokens/build.gradle.kts @@ -0,0 +1,10 @@ +plugins { + alias(deps.plugins.kotlin.jvm) + id("configuration") +} + +dependencies { + implementation(projects.domain.core) + implementation(projects.domain.wallets.models) + implementation(projects.core.utils) +} \ No newline at end of file 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 new file mode 100644 index 0000000000..0f52a195f9 --- /dev/null +++ b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/GetTokenListUseCase.kt @@ -0,0 +1,28 @@ +// TODO: [REDACTED_JIRA] +@file:Suppress("unused", "unused_parameter") + +package com.tangem.domain.tokens + +import arrow.core.Either +import arrow.core.left +import com.tangem.domain.tokens.error.TokensError +import com.tangem.domain.tokens.model.TokenList +import com.tangem.domain.tokens.repository.NetworksRepository +import com.tangem.domain.tokens.repository.QuotesRepository +import com.tangem.domain.tokens.repository.TokensRepository +import com.tangem.domain.wallets.models.UserWalletId +import com.tangem.utils.coroutines.CoroutineDispatcherProvider +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.flowOf + +class GetTokenListUseCase( + private val tokensRepository: TokensRepository, + private val quotesRepository: QuotesRepository, + private val networksRepository: NetworksRepository, + private val dispatchers: CoroutineDispatcherProvider, +) { + + operator fun invoke(userWalletId: UserWalletId, refresh: Boolean = true): Flow> { + return flowOf(TokensError.EmptyTokens.left()) + } +} \ No newline at end of file diff --git a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/error/TokensError.kt b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/error/TokensError.kt new file mode 100644 index 0000000000..4647779219 --- /dev/null +++ b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/error/TokensError.kt @@ -0,0 +1,6 @@ +package com.tangem.domain.tokens.error + +sealed class TokensError { + + object EmptyTokens : TokensError() +} \ No newline at end of file diff --git a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/model/Network.kt b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/model/Network.kt new file mode 100644 index 0000000000..b4b7628aa4 --- /dev/null +++ b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/model/Network.kt @@ -0,0 +1,10 @@ +package com.tangem.domain.tokens.model + +data class Network( + val id: ID, + val name: String, +) { + + @JvmInline + value class ID(val value: String) +} \ No newline at end of file diff --git a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/model/NetworkGroup.kt b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/model/NetworkGroup.kt new file mode 100644 index 0000000000..ea33623175 --- /dev/null +++ b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/model/NetworkGroup.kt @@ -0,0 +1,9 @@ +package com.tangem.domain.tokens.model + +import arrow.core.NonEmptySet + +data class NetworkGroup( + val networkId: Network.ID, + val name: String, + val tokens: NonEmptySet, +) \ No newline at end of file diff --git a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/model/NetworkStatus.kt b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/model/NetworkStatus.kt new file mode 100644 index 0000000000..36d1bc30e6 --- /dev/null +++ b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/model/NetworkStatus.kt @@ -0,0 +1,23 @@ +package com.tangem.domain.tokens.model + +import java.math.BigDecimal + +data class NetworkStatus( + val networkId: Network.ID, + val value: Status, +) { + + sealed class Status { + open val amounts: Map? = null + } + + object Unreachable : Status() + + object MissedDerivation : Status() + + data class TransactionInProgress(override val amounts: Map) : Status() + + data class Verified(override val amounts: Map) : Status() + + data class NoAccount(val amountToCreateAccount: BigDecimal) : Status() +} \ No newline at end of file diff --git a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/model/Quote.kt b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/model/Quote.kt new file mode 100644 index 0000000000..fad3db3666 --- /dev/null +++ b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/model/Quote.kt @@ -0,0 +1,9 @@ +package com.tangem.domain.tokens.model + +import java.math.BigDecimal + +data class Quote( + val tokenId: Token.ID, + val fiatRate: BigDecimal, + val priceChange: BigDecimal, +) \ No newline at end of file diff --git a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/model/Token.kt b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/model/Token.kt new file mode 100644 index 0000000000..cbaa05d20e --- /dev/null +++ b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/model/Token.kt @@ -0,0 +1,14 @@ +package com.tangem.domain.tokens.model + +data class Token( + val id: ID, + val networkId: Network.ID, + val name: String, + val symbol: String, + val isCustom: Boolean, + val isCoin: Boolean, +) { + + @JvmInline + value class ID(val value: String) +} \ No newline at end of file diff --git a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/model/TokenList.kt b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/model/TokenList.kt new file mode 100644 index 0000000000..e94a89de44 --- /dev/null +++ b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/model/TokenList.kt @@ -0,0 +1,38 @@ +package com.tangem.domain.tokens.model + +import arrow.core.NonEmptySet +import java.math.BigDecimal + +sealed class TokenList { + open val totalFiatBalance: FiatBalance = FiatBalance.Loading + open val sortedBy: SortType = SortType.NONE + + data class GroupedByNetwork( + val groups: NonEmptySet, + override val totalFiatBalance: FiatBalance, + override val sortedBy: SortType, + ) : TokenList() + + data class Ungrouped( + val tokens: NonEmptySet, + override val totalFiatBalance: FiatBalance, + override val sortedBy: SortType, + ) : TokenList() + + object NotInitialized : TokenList() + + enum class SortType { + NONE, BALANCE, + } + + sealed class FiatBalance { + object Loading : FiatBalance() + + object Failed : FiatBalance() + + data class Loaded( + val amount: BigDecimal, + val isAllAmountsSummarized: Boolean, + ) : FiatBalance() + } +} \ No newline at end of file diff --git a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/model/TokenStatus.kt b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/model/TokenStatus.kt new file mode 100644 index 0000000000..153caf20ba --- /dev/null +++ b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/model/TokenStatus.kt @@ -0,0 +1,42 @@ +package com.tangem.domain.tokens.model + +import java.math.BigDecimal + +data class TokenStatus( + val id: Token.ID, + val networkId: Network.ID, + val name: String, + val symbol: String, + val isCoin: Boolean, + val value: Status, +) { + + sealed class Status { + open val amount: BigDecimal? = null + open val fiatAmount: BigDecimal? = null + open val priceChange: BigDecimal? = null + open val hasTransactionsInProgress: Boolean = false + } + + object Loading : Status() + + object Unreachable : Status() + + object MissedDerivation : Status() + + object NoAccount : Status() + + data class Loaded( + override val amount: BigDecimal, + override val fiatAmount: BigDecimal, + override val priceChange: BigDecimal, + override val hasTransactionsInProgress: Boolean, + ) : Status() + + data class Custom( + override val amount: BigDecimal, + override val fiatAmount: BigDecimal?, + override val priceChange: BigDecimal?, + override val hasTransactionsInProgress: Boolean, + ) : Status() +} \ No newline at end of file diff --git a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/repository/NetworksRepository.kt b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/repository/NetworksRepository.kt new file mode 100644 index 0000000000..df231dd283 --- /dev/null +++ b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/repository/NetworksRepository.kt @@ -0,0 +1,26 @@ +package com.tangem.domain.tokens.repository + +import arrow.core.Either +import com.tangem.domain.tokens.error.TokensError +import com.tangem.domain.tokens.model.Network +import com.tangem.domain.tokens.model.NetworkStatus +import com.tangem.domain.tokens.model.Token +import com.tangem.domain.wallets.models.UserWalletId +import kotlinx.coroutines.flow.Flow + +// FIXME: Use Raise as context instead of Effect when context receivers become stable +// [REDACTED_JIRA] + +/** + * Repository for everything related to the blockchain networks + * */ +interface NetworksRepository { + + fun getNetworks(networksIds: Set): Either> + + fun getNetworkStatuses( + userWalletId: UserWalletId, + networks: Map>, + refresh: Boolean, + ): Flow>> +} \ No newline at end of file diff --git a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/repository/QuotesRepository.kt b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/repository/QuotesRepository.kt new file mode 100644 index 0000000000..314c1d1177 --- /dev/null +++ b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/repository/QuotesRepository.kt @@ -0,0 +1,18 @@ +package com.tangem.domain.tokens.repository + +import arrow.core.Either +import com.tangem.domain.tokens.error.TokensError +import com.tangem.domain.tokens.model.Quote +import com.tangem.domain.tokens.model.Token +import kotlinx.coroutines.flow.Flow + +// FIXME: Use Raise as context instead of Effect when context receivers become stable +// [REDACTED_JIRA] + +/** + * Repository for everything related to the quotes of tokens + * */ +interface QuotesRepository { + + fun getQuotes(tokensIds: Set, refresh: Boolean): Flow>> +} \ No newline at end of file diff --git a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/repository/TokensRepository.kt b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/repository/TokensRepository.kt new file mode 100644 index 0000000000..4b1ed804c3 --- /dev/null +++ b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/repository/TokensRepository.kt @@ -0,0 +1,29 @@ +package com.tangem.domain.tokens.repository + +import arrow.core.Either +import com.tangem.domain.tokens.error.TokensError +import com.tangem.domain.tokens.model.Token +import com.tangem.domain.wallets.models.UserWalletId +import kotlinx.coroutines.flow.Flow + +// FIXME: Use Raise as context instead of Effect when context receivers become stable +// [REDACTED_JIRA] + +/** + * Repository for everything related to the tokens of user wallet + * */ +interface TokensRepository { + + suspend fun sortTokens( + userWalletId: UserWalletId, + sortedTokensIds: Set, + isGrouped: Boolean, + isSortedByBalance: Boolean, + ): Either + + fun getTokens(userWalletId: UserWalletId, refresh: Boolean): Flow>> + + fun isTokensGrouped(userWalletId: UserWalletId): Flow> + + fun isTokensSortedByBalance(userWalletId: UserWalletId): Flow> +} \ No newline at end of file diff --git a/features/wallet/impl/build.gradle.kts b/features/wallet/impl/build.gradle.kts index 64139b1ecb..c0f88c2b7e 100644 --- a/features/wallet/impl/build.gradle.kts +++ b/features/wallet/impl/build.gradle.kts @@ -50,4 +50,5 @@ dependencies { implementation(project(":domain:models")) implementation(project(":domain:wallets")) implementation(project(":domain:wallets:models")) + implementation(projects.domain.tokens) } \ No newline at end of file diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/router/DefaultWalletRouter.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/router/DefaultWalletRouter.kt index 12a164c4fa..2406ada436 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/router/DefaultWalletRouter.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/router/DefaultWalletRouter.kt @@ -40,7 +40,8 @@ internal class DefaultWalletRouter(private val navigationStateHolder: Navigation startDestination = WalletScreens.WALLET.name, ) { composable(WalletScreens.WALLET.name) { - val viewModel = hiltViewModel().apply { router = this@DefaultWalletRouter } + val viewModel = hiltViewModel() + .apply { router = this@DefaultWalletRouter } WalletScreen(state = viewModel.uiState) } diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/viewmodels/WalletViewModel.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/viewmodels/WalletViewModel.kt index 4cdda4fe30..9c80b75b31 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/viewmodels/WalletViewModel.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/viewmodels/WalletViewModel.kt @@ -5,6 +5,7 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue import androidx.lifecycle.ViewModel +import com.tangem.domain.tokens.GetTokenListUseCase import com.tangem.feature.wallet.presentation.common.WalletPreviewData import com.tangem.feature.wallet.presentation.router.InnerWalletRouter import com.tangem.feature.wallet.presentation.wallet.state.WalletStateHolder @@ -19,7 +20,10 @@ import kotlin.properties.Delegates [REDACTED_AUTHOR] */ @HiltViewModel -internal class WalletViewModel @Inject constructor() : ViewModel() { +internal class WalletViewModel @Inject constructor( + @Suppress("unused") // TODO: [REDACTED_JIRA] + private val getTokenListUseCase: GetTokenListUseCase, +) : ViewModel() { /** Feature router */ var router: InnerWalletRouter by Delegates.notNull() diff --git a/settings.gradle.kts b/settings.gradle.kts index 9a14394b73..423368f3d8 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -81,8 +81,10 @@ include(":domain:core") include(":domain:card") include(":domain:wallets") include(":domain:wallets:models") +include(":domain:tokens") // endregion Domain modules // region Data modules +include(":data:tokens") include(":data:source:preferences") // endregion Data modules \ No newline at end of file