From cd78832ff19422441ccf51297e701a079e2aa00a Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 4 Aug 2023 15:48:39 +0800 Subject: [PATCH] Updated on 2026-08-14 --- .../tap/di/domain/WalletsDomainModule.kt | 8 ++++++++ data/tokens/build.gradle.kts | 1 + .../tangem/data/tokens/mock/MockNetworks.kt | 2 +- .../repository/MockNetworksRepository.kt | 2 +- .../data/tokens/utils/TokensOperations.kt | 2 +- domain/legacy/build.gradle.kts | 1 + .../DefaultWalletManagersFacade.kt | 19 ++++++++++++++++++- .../walletmanager/WalletManagersFacade.kt | 4 +++- domain/tokens/build.gradle.kts | 1 + domain/tokens/models/.gitignore | 1 + domain/tokens/models/build.gradle.kts | 4 ++++ .../tangem/domain/tokens/models}/Network.kt | 7 ++----- .../tokens/ApplyTokenListSortingUseCase.kt | 2 +- .../tokens/ToggleTokenListGroupingUseCase.kt | 2 +- .../domain/tokens/model/CryptoCurrency.kt | 2 ++ .../domain/tokens/model/NetworkGroup.kt | 2 ++ .../domain/tokens/model/NetworkStatus.kt | 1 + .../CurrenciesStatusesOperations.kt | 1 + .../tokens/operations/TokenListOperations.kt | 2 +- .../operations/TokenListSortingOperations.kt | 2 +- .../tokens/repository/NetworksRepository.kt | 2 +- .../domain/tokens/GetTokenListUseCaseTest.kt | 2 +- .../tokens/ToggleTokenListGroupingTest.kt | 2 +- .../tangem/domain/tokens/mock/MockNetworks.kt | 2 +- .../repository/MockNetworksRepository.kt | 2 +- domain/wallets/build.gradle.kts | 7 ++++--- .../wallets/usecase/GetExploreUrlUseCase.kt | 12 ++++++++++++ features/wallet/impl/build.gradle.kts | 1 + .../wallet/viewmodels/WalletViewModel.kt | 15 ++++++++++++++- settings.gradle.kts | 1 + 30 files changed, 89 insertions(+), 23 deletions(-) create mode 100644 domain/tokens/models/.gitignore create mode 100644 domain/tokens/models/build.gradle.kts rename domain/tokens/{src/main/kotlin/com/tangem/domain/tokens/model => models/src/main/java/com/tangem/domain/tokens/models}/Network.kt (88%) create mode 100644 domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/GetExploreUrlUseCase.kt diff --git a/app/src/main/java/com/tangem/tap/di/domain/WalletsDomainModule.kt b/app/src/main/java/com/tangem/tap/di/domain/WalletsDomainModule.kt index 6fedc25c0e..9321638b94 100644 --- a/app/src/main/java/com/tangem/tap/di/domain/WalletsDomainModule.kt +++ b/app/src/main/java/com/tangem/tap/di/domain/WalletsDomainModule.kt @@ -1,6 +1,8 @@ package com.tangem.tap.di.domain +import com.tangem.domain.walletmanager.WalletManagersFacade import com.tangem.domain.wallets.legacy.WalletsStateHolder +import com.tangem.domain.wallets.usecase.GetExploreUrlUseCase import com.tangem.domain.wallets.usecase.GetWalletsUseCase import com.tangem.domain.wallets.usecase.SaveWalletUseCase import dagger.Module @@ -24,4 +26,10 @@ internal object WalletsDomainModule { fun providesSaveWalletUseCase(walletsStateHolder: WalletsStateHolder): SaveWalletUseCase { return SaveWalletUseCase(walletsStateHolder = walletsStateHolder) } + + @Provides + @ViewModelScoped + fun providesGetExploreUrlUseCase(walletsManagersFacade: WalletManagersFacade): GetExploreUrlUseCase { + return GetExploreUrlUseCase(walletsManagersFacade = walletsManagersFacade) + } } \ No newline at end of file diff --git a/data/tokens/build.gradle.kts b/data/tokens/build.gradle.kts index 3a9ee305bf..5b3c4c0e7a 100644 --- a/data/tokens/build.gradle.kts +++ b/data/tokens/build.gradle.kts @@ -15,6 +15,7 @@ dependencies { implementation(projects.domain.core) implementation(projects.domain.models) implementation(projects.domain.tokens) + implementation(projects.domain.tokens.models) implementation(projects.domain.demo) implementation(projects.domain.wallets.models) diff --git a/data/tokens/src/main/kotlin/com/tangem/data/tokens/mock/MockNetworks.kt b/data/tokens/src/main/kotlin/com/tangem/data/tokens/mock/MockNetworks.kt index 12256c2120..8278cce392 100644 --- a/data/tokens/src/main/kotlin/com/tangem/data/tokens/mock/MockNetworks.kt +++ b/data/tokens/src/main/kotlin/com/tangem/data/tokens/mock/MockNetworks.kt @@ -1,7 +1,7 @@ package com.tangem.data.tokens.mock -import com.tangem.domain.tokens.model.Network import com.tangem.domain.tokens.model.NetworkStatus +import com.tangem.domain.tokens.models.Network import java.math.BigDecimal @Suppress("MemberVisibilityCanBePrivate") diff --git a/data/tokens/src/main/kotlin/com/tangem/data/tokens/repository/MockNetworksRepository.kt b/data/tokens/src/main/kotlin/com/tangem/data/tokens/repository/MockNetworksRepository.kt index c6919ea86b..3455d66764 100644 --- a/data/tokens/src/main/kotlin/com/tangem/data/tokens/repository/MockNetworksRepository.kt +++ b/data/tokens/src/main/kotlin/com/tangem/data/tokens/repository/MockNetworksRepository.kt @@ -2,8 +2,8 @@ package com.tangem.data.tokens.repository import com.tangem.data.tokens.mock.MockNetworks import com.tangem.domain.tokens.model.CryptoCurrency -import com.tangem.domain.tokens.model.Network import com.tangem.domain.tokens.model.NetworkStatus +import com.tangem.domain.tokens.models.Network import com.tangem.domain.tokens.repository.NetworksRepository import com.tangem.domain.wallets.models.UserWalletId import kotlinx.coroutines.flow.Flow diff --git a/data/tokens/src/main/kotlin/com/tangem/data/tokens/utils/TokensOperations.kt b/data/tokens/src/main/kotlin/com/tangem/data/tokens/utils/TokensOperations.kt index 627f30111d..2d0b915285 100644 --- a/data/tokens/src/main/kotlin/com/tangem/data/tokens/utils/TokensOperations.kt +++ b/data/tokens/src/main/kotlin/com/tangem/data/tokens/utils/TokensOperations.kt @@ -7,7 +7,7 @@ import com.tangem.domain.common.extensions.toCoinId import com.tangem.domain.common.extensions.toNetworkId import com.tangem.domain.models.scan.CardDTO import com.tangem.domain.tokens.model.CryptoCurrency -import com.tangem.domain.tokens.model.Network +import com.tangem.domain.tokens.models.Network import com.tangem.blockchain.common.Token as SdkToken private const val DEFAULT_TOKENS_ICONS_HOST = "https://s3.eu-central-1.amazonaws.com/tangem.api/coins" diff --git a/domain/legacy/build.gradle.kts b/domain/legacy/build.gradle.kts index a649d1ced1..99665896d3 100644 --- a/domain/legacy/build.gradle.kts +++ b/domain/legacy/build.gradle.kts @@ -12,6 +12,7 @@ dependencies { implementation(projects.domain.demo) implementation(projects.domain.models) implementation(projects.domain.tokens) + implementation(projects.domain.tokens.models) implementation(projects.domain.wallets.models) /** Tangem libraries */ diff --git a/domain/legacy/src/main/java/com/tangem/domain/walletmanager/DefaultWalletManagersFacade.kt b/domain/legacy/src/main/java/com/tangem/domain/walletmanager/DefaultWalletManagersFacade.kt index dabbd65f90..09bc5ac1dd 100644 --- a/domain/legacy/src/main/java/com/tangem/domain/walletmanager/DefaultWalletManagersFacade.kt +++ b/domain/legacy/src/main/java/com/tangem/domain/walletmanager/DefaultWalletManagersFacade.kt @@ -11,7 +11,7 @@ import com.tangem.domain.common.TapWorkarounds.derivationStyle import com.tangem.domain.common.util.hasDerivation import com.tangem.domain.demo.DemoConfig import com.tangem.domain.tokens.model.CryptoCurrency -import com.tangem.domain.tokens.model.Network +import com.tangem.domain.tokens.models.Network import com.tangem.domain.walletmanager.model.UpdateWalletManagerResult import com.tangem.domain.walletmanager.utils.SdkTokenConverter import com.tangem.domain.walletmanager.utils.UpdateWalletManagerResultFactory @@ -46,6 +46,23 @@ class DefaultWalletManagersFacade( return getAndUpdateWalletManager(userWallet, blockchain, extraTokens) } + override suspend fun getExploreUrl(userWalletId: UserWalletId, networkId: Network.ID): String { + val userWallet = requireNotNull(userWalletsStore.getSyncOrNull(userWalletId)) { + "Unable to find a user wallet with provided ID: $userWalletId" + } + + val blockchain = Blockchain.fromId(networkId.value) + + return getOrCreateWalletManager( + userWallet = userWallet, + blockchain = blockchain, + derivationPath = blockchain.derivationPath(userWallet.scanResponse.card.derivationStyle), + ) + ?.wallet + ?.getExploreUrl() + .orEmpty() + } + private suspend fun getAndUpdateWalletManager( userWallet: UserWallet, blockchain: Blockchain, diff --git a/domain/legacy/src/main/java/com/tangem/domain/walletmanager/WalletManagersFacade.kt b/domain/legacy/src/main/java/com/tangem/domain/walletmanager/WalletManagersFacade.kt index 4c4fd8d26d..a2ed074675 100644 --- a/domain/legacy/src/main/java/com/tangem/domain/walletmanager/WalletManagersFacade.kt +++ b/domain/legacy/src/main/java/com/tangem/domain/walletmanager/WalletManagersFacade.kt @@ -1,7 +1,7 @@ package com.tangem.domain.walletmanager import com.tangem.domain.tokens.model.CryptoCurrency -import com.tangem.domain.tokens.model.Network +import com.tangem.domain.tokens.models.Network import com.tangem.domain.walletmanager.model.UpdateWalletManagerResult import com.tangem.domain.wallets.models.UserWalletId @@ -24,4 +24,6 @@ interface WalletManagersFacade { networkId: Network.ID, extraTokens: Set, ): UpdateWalletManagerResult + + suspend fun getExploreUrl(userWalletId: UserWalletId, networkId: Network.ID): String } \ No newline at end of file diff --git a/domain/tokens/build.gradle.kts b/domain/tokens/build.gradle.kts index d6c92daddb..4099f104eb 100644 --- a/domain/tokens/build.gradle.kts +++ b/domain/tokens/build.gradle.kts @@ -5,6 +5,7 @@ plugins { dependencies { implementation(projects.domain.core) + implementation(projects.domain.tokens.models) implementation(projects.domain.wallets.models) implementation(projects.core.utils) diff --git a/domain/tokens/models/.gitignore b/domain/tokens/models/.gitignore new file mode 100644 index 0000000000..42afabfd2a --- /dev/null +++ b/domain/tokens/models/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/domain/tokens/models/build.gradle.kts b/domain/tokens/models/build.gradle.kts new file mode 100644 index 0000000000..7ff7fb7522 --- /dev/null +++ b/domain/tokens/models/build.gradle.kts @@ -0,0 +1,4 @@ +plugins { + alias(deps.plugins.kotlin.jvm) + id("configuration") +} \ No newline at end of file diff --git a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/model/Network.kt b/domain/tokens/models/src/main/java/com/tangem/domain/tokens/models/Network.kt similarity index 88% rename from domain/tokens/src/main/kotlin/com/tangem/domain/tokens/model/Network.kt rename to domain/tokens/models/src/main/java/com/tangem/domain/tokens/models/Network.kt index 402ae364eb..48ba69226f 100644 --- a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/model/Network.kt +++ b/domain/tokens/models/src/main/java/com/tangem/domain/tokens/models/Network.kt @@ -1,4 +1,4 @@ -package com.tangem.domain.tokens.model +package com.tangem.domain.tokens.models /** * Represents a blockchain network, identified by a unique ID and a human-readable name. @@ -8,10 +8,7 @@ package com.tangem.domain.tokens.model * * @throws IllegalArgumentException If the name or ID is blank. */ -data class Network( - val id: ID, - val name: String, -) { +data class Network(val id: ID, val name: String) { init { require(name.isNotBlank()) { "Network name must not be blank" } diff --git a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/ApplyTokenListSortingUseCase.kt b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/ApplyTokenListSortingUseCase.kt index c1bad61702..89d9776a18 100644 --- a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/ApplyTokenListSortingUseCase.kt +++ b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/ApplyTokenListSortingUseCase.kt @@ -8,7 +8,7 @@ import arrow.core.raise.ensureNotNull import arrow.core.toNonEmptySetOrNull import com.tangem.domain.tokens.error.TokenListSortingError import com.tangem.domain.tokens.model.CryptoCurrency -import com.tangem.domain.tokens.model.Network +import com.tangem.domain.tokens.models.Network import com.tangem.domain.tokens.repository.TokensRepository import com.tangem.domain.wallets.models.UserWalletId import com.tangem.utils.coroutines.CoroutineDispatcherProvider diff --git a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/ToggleTokenListGroupingUseCase.kt b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/ToggleTokenListGroupingUseCase.kt index cb53f81ec2..fe70f6aacd 100644 --- a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/ToggleTokenListGroupingUseCase.kt +++ b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/ToggleTokenListGroupingUseCase.kt @@ -7,8 +7,8 @@ import arrow.core.raise.either import arrow.core.raise.ensure import com.tangem.domain.tokens.error.TokenListSortingError import com.tangem.domain.tokens.error.mapper.mapToTokenListSortingError -import com.tangem.domain.tokens.model.Network import com.tangem.domain.tokens.model.TokenList +import com.tangem.domain.tokens.models.Network import com.tangem.domain.tokens.operations.TokenListSortingOperations import com.tangem.domain.tokens.repository.NetworksRepository import com.tangem.utils.coroutines.CoroutineDispatcherProvider diff --git a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/model/CryptoCurrency.kt b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/model/CryptoCurrency.kt index 504e7ef421..5143f90497 100644 --- a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/model/CryptoCurrency.kt +++ b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/model/CryptoCurrency.kt @@ -1,5 +1,7 @@ package com.tangem.domain.tokens.model +import com.tangem.domain.tokens.models.Network + /** * Represents a generic cryptocurrency. * 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 index b244d7252f..89264ac332 100644 --- 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 @@ -1,5 +1,7 @@ package com.tangem.domain.tokens.model +import com.tangem.domain.tokens.models.Network + /** * Represents a group of cryptocurrencies associated with a specific network. * 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 index 454480611c..17bbaa392f 100644 --- 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 @@ -1,5 +1,6 @@ package com.tangem.domain.tokens.model +import com.tangem.domain.tokens.models.Network import java.math.BigDecimal /** 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 41b8fbae2e..6ce5fc8b60 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 @@ -6,6 +6,7 @@ import arrow.core.raise.catch import com.tangem.domain.core.raise.DelegatedRaise import com.tangem.domain.tokens.GetTokenListUseCase import com.tangem.domain.tokens.model.* +import com.tangem.domain.tokens.models.Network import com.tangem.domain.tokens.repository.NetworksRepository import com.tangem.domain.tokens.repository.QuotesRepository import com.tangem.domain.tokens.repository.TokensRepository diff --git a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/operations/TokenListOperations.kt b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/operations/TokenListOperations.kt index a39720b230..37b96a781c 100644 --- a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/operations/TokenListOperations.kt +++ b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/operations/TokenListOperations.kt @@ -8,8 +8,8 @@ import arrow.core.toNonEmptySetOrNull import com.tangem.domain.core.raise.DelegatedRaise import com.tangem.domain.tokens.GetTokenListUseCase import com.tangem.domain.tokens.model.CryptoCurrencyStatus -import com.tangem.domain.tokens.model.Network import com.tangem.domain.tokens.model.TokenList +import com.tangem.domain.tokens.models.Network import com.tangem.domain.tokens.repository.NetworksRepository import com.tangem.domain.tokens.repository.TokensRepository import com.tangem.domain.wallets.models.UserWalletId diff --git a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/operations/TokenListSortingOperations.kt b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/operations/TokenListSortingOperations.kt index debb451f54..06c3041651 100644 --- a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/operations/TokenListSortingOperations.kt +++ b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/operations/TokenListSortingOperations.kt @@ -7,9 +7,9 @@ import arrow.core.raise.ensureNotNull import arrow.core.toNonEmptySetOrNull import com.tangem.domain.core.raise.DelegatedRaise import com.tangem.domain.tokens.model.CryptoCurrencyStatus -import com.tangem.domain.tokens.model.Network import com.tangem.domain.tokens.model.NetworkGroup import com.tangem.domain.tokens.model.TokenList +import com.tangem.domain.tokens.models.Network import com.tangem.utils.coroutines.CoroutineDispatcherProvider import kotlinx.coroutines.withContext import java.math.BigDecimal 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 index dfb3a25ef1..5acf293b11 100644 --- 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 @@ -1,8 +1,8 @@ package com.tangem.domain.tokens.repository import com.tangem.domain.tokens.model.CryptoCurrency -import com.tangem.domain.tokens.model.Network import com.tangem.domain.tokens.model.NetworkStatus +import com.tangem.domain.tokens.models.Network import com.tangem.domain.wallets.models.UserWalletId import kotlinx.coroutines.flow.Flow 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 index 57101b51f6..204bf4af9c 100644 --- a/domain/tokens/src/test/kotlin/com/tangem/domain/tokens/GetTokenListUseCaseTest.kt +++ b/domain/tokens/src/test/kotlin/com/tangem/domain/tokens/GetTokenListUseCaseTest.kt @@ -10,9 +10,9 @@ 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.Network import com.tangem.domain.tokens.model.NetworkStatus import com.tangem.domain.tokens.model.Quote +import com.tangem.domain.tokens.models.Network import com.tangem.domain.tokens.repository.MockNetworksRepository import com.tangem.domain.tokens.repository.MockQuotesRepository import com.tangem.domain.tokens.repository.MockTokensRepository diff --git a/domain/tokens/src/test/kotlin/com/tangem/domain/tokens/ToggleTokenListGroupingTest.kt b/domain/tokens/src/test/kotlin/com/tangem/domain/tokens/ToggleTokenListGroupingTest.kt index 0faaff77ea..8e34224394 100644 --- a/domain/tokens/src/test/kotlin/com/tangem/domain/tokens/ToggleTokenListGroupingTest.kt +++ b/domain/tokens/src/test/kotlin/com/tangem/domain/tokens/ToggleTokenListGroupingTest.kt @@ -7,7 +7,7 @@ import com.tangem.domain.core.error.DataError import com.tangem.domain.tokens.error.TokenListSortingError import com.tangem.domain.tokens.mock.MockNetworks import com.tangem.domain.tokens.mock.MockTokenLists -import com.tangem.domain.tokens.model.Network +import com.tangem.domain.tokens.models.Network import com.tangem.domain.tokens.repository.MockNetworksRepository import com.tangem.utils.coroutines.TestingCoroutineDispatcherProvider import junit.framework.TestCase.assertEquals diff --git a/domain/tokens/src/test/kotlin/com/tangem/domain/tokens/mock/MockNetworks.kt b/domain/tokens/src/test/kotlin/com/tangem/domain/tokens/mock/MockNetworks.kt index a2194499b2..4bf559f4c7 100644 --- a/domain/tokens/src/test/kotlin/com/tangem/domain/tokens/mock/MockNetworks.kt +++ b/domain/tokens/src/test/kotlin/com/tangem/domain/tokens/mock/MockNetworks.kt @@ -2,8 +2,8 @@ package com.tangem.domain.tokens.mock import arrow.core.NonEmptySet import arrow.core.nonEmptySetOf -import com.tangem.domain.tokens.model.Network import com.tangem.domain.tokens.model.NetworkStatus +import com.tangem.domain.tokens.models.Network import java.math.BigDecimal @Suppress("MemberVisibilityCanBePrivate") diff --git a/domain/tokens/src/test/kotlin/com/tangem/domain/tokens/repository/MockNetworksRepository.kt b/domain/tokens/src/test/kotlin/com/tangem/domain/tokens/repository/MockNetworksRepository.kt index 649cd7808c..ced27621b7 100644 --- a/domain/tokens/src/test/kotlin/com/tangem/domain/tokens/repository/MockNetworksRepository.kt +++ b/domain/tokens/src/test/kotlin/com/tangem/domain/tokens/repository/MockNetworksRepository.kt @@ -4,8 +4,8 @@ import arrow.core.Either import arrow.core.getOrElse import com.tangem.domain.core.error.DataError import com.tangem.domain.tokens.model.CryptoCurrency -import com.tangem.domain.tokens.model.Network import com.tangem.domain.tokens.model.NetworkStatus +import com.tangem.domain.tokens.models.Network import com.tangem.domain.wallets.models.UserWalletId import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map diff --git a/domain/wallets/build.gradle.kts b/domain/wallets/build.gradle.kts index 31807a9a48..3216145e52 100644 --- a/domain/wallets/build.gradle.kts +++ b/domain/wallets/build.gradle.kts @@ -11,9 +11,10 @@ android { dependencies { // region Domain modules - implementation(project(":domain:legacy")) - implementation(project(":domain:models")) - implementation(project(":domain:wallets:models")) + implementation(projects.domain.legacy) + implementation(projects.domain.models) + implementation(projects.domain.tokens.models) + implementation(projects.domain.wallets.models) // endregion // region Tangem libraries diff --git a/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/GetExploreUrlUseCase.kt b/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/GetExploreUrlUseCase.kt new file mode 100644 index 0000000000..564192c4f8 --- /dev/null +++ b/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/GetExploreUrlUseCase.kt @@ -0,0 +1,12 @@ +package com.tangem.domain.wallets.usecase + +import com.tangem.domain.tokens.models.Network +import com.tangem.domain.walletmanager.WalletManagersFacade +import com.tangem.domain.wallets.models.UserWalletId + +class GetExploreUrlUseCase(private val walletsManagersFacade: WalletManagersFacade) { + + suspend operator fun invoke(userWalletId: UserWalletId, networkId: Network.ID): String { + return walletsManagersFacade.getExploreUrl(userWalletId, networkId) + } +} \ No newline at end of file diff --git a/features/wallet/impl/build.gradle.kts b/features/wallet/impl/build.gradle.kts index 606d847a63..265fb7ce41 100644 --- a/features/wallet/impl/build.gradle.kts +++ b/features/wallet/impl/build.gradle.kts @@ -51,6 +51,7 @@ dependencies { implementation(projects.domain.models) implementation(projects.domain.settings) implementation(projects.domain.tokens) + implementation(projects.domain.tokens.models) implementation(projects.domain.txhistory) implementation(projects.domain.wallets) implementation(projects.domain.wallets.models) 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 b0ee734fe4..4c1275a2bd 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 @@ -16,10 +16,12 @@ import com.tangem.domain.demo.IsDemoCardUseCase import com.tangem.domain.settings.IsUserAlreadyRateAppUseCase import com.tangem.domain.tokens.GetTokenListUseCase import com.tangem.domain.tokens.model.TokenList +import com.tangem.domain.tokens.models.Network import com.tangem.domain.txhistory.usecase.GetTxHistoryItemsCountUseCase import com.tangem.domain.txhistory.usecase.GetTxHistoryItemsUseCase import com.tangem.domain.userwallets.UserWalletBuilder import com.tangem.domain.wallets.models.UserWallet +import com.tangem.domain.wallets.usecase.GetExploreUrlUseCase import com.tangem.domain.wallets.usecase.GetWalletsUseCase import com.tangem.domain.wallets.usecase.SaveWalletUseCase import com.tangem.feature.wallet.presentation.router.InnerWalletRouter @@ -52,6 +54,7 @@ internal class WalletViewModel @Inject constructor( private val scanCardProcessor: ScanCardProcessor, private val txHistoryItemsCountUseCase: GetTxHistoryItemsCountUseCase, private val txHistoryItemsUseCase: GetTxHistoryItemsUseCase, + private val getExploreUrlUseCase: GetExploreUrlUseCase, private val dispatchers: CoroutineDispatcherProvider, ) : ViewModel(), DefaultLifecycleObserver, WalletClickIntents { @@ -263,6 +266,16 @@ internal class WalletViewModel @Inject constructor( } override fun onExploreClick() { - router.openTxHistoryWebsite(url = "") // TODO + viewModelScope.launch(dispatchers.io) { + val wallet = getWallet(uiState.walletsListConfig.selectedWalletIndex) + router.openTxHistoryWebsite( + url = getExploreUrlUseCase( + userWalletId = wallet.walletId, + networkId = Network.ID( + value = wallet.scanResponse.cardTypesResolver.getBlockchain().id, + ), + ), + ) + } } } \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index 18308d4085..7378b7b744 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -103,6 +103,7 @@ include(":domain:core") include(":domain:demo") include(":domain:settings") include(":domain:tokens") +include(":domain:tokens:models") include(":domain:wallets") include(":domain:wallets:models") include(":domain:txhistory")