From 04c90d11db481415d2d34c0bc3a062709c9ef393 Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 26 Jun 2025 12:56:37 +0500 Subject: [PATCH] Updated on 2026-08-14 --- .../com/tangem/tap/routing/utils/ChildFactory.kt | 13 +++++++++++++ .../kotlin/com/tangem/common/routing/AppRoute.kt | 10 ++++++++++ .../com/tangem/domain/swap/models/SwapCurrencies.kt | 9 ++++++++- features/swap-v2/impl/build.gradle.kts | 1 + .../chooseprovider/model/SwapChooseProviderModel.kt | 6 +++--- 5 files changed, 35 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/routing/utils/ChildFactory.kt b/app/src/main/java/com/tangem/tap/routing/utils/ChildFactory.kt index 7008e3f4ec..4c5089eeb5 100644 --- a/app/src/main/java/com/tangem/tap/routing/utils/ChildFactory.kt +++ b/app/src/main/java/com/tangem/tap/routing/utils/ChildFactory.kt @@ -10,6 +10,7 @@ import com.tangem.feature.usedesk.api.UsedeskComponent import com.tangem.feature.walletsettings.component.WalletSettingsComponent import com.tangem.features.details.component.DetailsComponent import com.tangem.features.disclaimer.api.components.DisclaimerComponent +import com.tangem.features.managetokens.component.ChooseManagedTokensComponent import com.tangem.features.managetokens.component.ManageTokensComponent import com.tangem.features.managetokens.component.ManageTokensSource import com.tangem.features.markets.details.MarketsTokenDetailsComponent @@ -78,6 +79,7 @@ internal class ChildFactory @Inject constructor( private val nftComponentFactory: NFTComponent.Factory, private val nftSendComponentFactory: NFTSendComponent.Factory, private val usedeskComponentFactory: UsedeskComponent.Factory, + private val chooseManagedTokensComponentFactory: ChooseManagedTokensComponent.Factory, private val testerRouter: TesterRouter, private val walletConnectFeatureToggles: WalletConnectFeatureToggles, ) { @@ -407,6 +409,17 @@ internal class ChildFactory @Inject constructor( componentFactory = usedeskComponentFactory, ) } + is AppRoute.ChooseManagedTokens -> { + createComponentChild( + context = context, + params = ChooseManagedTokensComponent.Params( + userWalletId = route.userWalletId, + initialCurrency = route.initialCurrency, + source = ChooseManagedTokensComponent.Source.valueOf(route.source.name), + ), + componentFactory = chooseManagedTokensComponentFactory, + ) + } } } } \ No newline at end of file diff --git a/common/routing/src/main/kotlin/com/tangem/common/routing/AppRoute.kt b/common/routing/src/main/kotlin/com/tangem/common/routing/AppRoute.kt index 4b7523311c..bfa14feda5 100644 --- a/common/routing/src/main/kotlin/com/tangem/common/routing/AppRoute.kt +++ b/common/routing/src/main/kotlin/com/tangem/common/routing/AppRoute.kt @@ -127,6 +127,16 @@ sealed class AppRoute(val path: String) : Route { } } + data class ChooseManagedTokens( + val userWalletId: UserWalletId, + val initialCurrency: CryptoCurrency, + val source: Source, + ) : AppRoute(path = "/$source/choose_managed_tokens/$userWalletId/${initialCurrency.id.value}") { + enum class Source { + SendViaSwap, + } + } + @Serializable data class WalletConnectSessions(val userWalletId: UserWalletId) : AppRoute(path = "/wallet_connect_sessions") diff --git a/domain/swap/models/src/main/java/com/tangem/domain/swap/models/SwapCurrencies.kt b/domain/swap/models/src/main/java/com/tangem/domain/swap/models/SwapCurrencies.kt index ef559c44e9..78630c8eb6 100644 --- a/domain/swap/models/src/main/java/com/tangem/domain/swap/models/SwapCurrencies.kt +++ b/domain/swap/models/src/main/java/com/tangem/domain/swap/models/SwapCurrencies.kt @@ -12,7 +12,14 @@ import com.tangem.domain.tokens.model.CryptoCurrencyStatus data class SwapCurrencies( val fromGroup: SwapCurrenciesGroup, val toGroup: SwapCurrenciesGroup, -) +) { + companion object { + val EMPTY = SwapCurrencies( + fromGroup = SwapCurrenciesGroup(emptyList(), emptyList(), false), + toGroup = SwapCurrenciesGroup(emptyList(), emptyList(), false), + ) + } +} /** * Return swap group depending on [swapDirection] diff --git a/features/swap-v2/impl/build.gradle.kts b/features/swap-v2/impl/build.gradle.kts index 456c959e50..817039a569 100644 --- a/features/swap-v2/impl/build.gradle.kts +++ b/features/swap-v2/impl/build.gradle.kts @@ -53,6 +53,7 @@ dependencies { implementation(projects.domain.manageTokens) implementation(projects.domain.transaction.models) implementation(projects.domain.transaction) + implementation(projects.domain.legacy) /** Compose */ implementation(deps.compose.foundation) diff --git a/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/chooseprovider/model/SwapChooseProviderModel.kt b/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/chooseprovider/model/SwapChooseProviderModel.kt index a4a4613f7f..52fe541a8d 100644 --- a/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/chooseprovider/model/SwapChooseProviderModel.kt +++ b/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/chooseprovider/model/SwapChooseProviderModel.kt @@ -21,9 +21,6 @@ internal class SwapChooseProviderModel @Inject constructor( private val params: SwapChooseProviderComponent.Params = paramsContainer.require() - val uiState: StateFlow - field: MutableStateFlow = MutableStateFlow(getInitialState()) - private val swapProviderListItemConverter by lazy(LazyThreadSafetyMode.NONE) { SwapProviderListItemConverter( cryptoCurrency = params.cryptoCurrency, @@ -31,6 +28,9 @@ internal class SwapChooseProviderModel @Inject constructor( ) } + val uiState: StateFlow + field: MutableStateFlow = MutableStateFlow(getInitialState()) + fun onProviderClick(quoteUM: SwapQuoteUM) { params.callback.onProviderResult(quoteUM) }