diff --git a/app/build.gradle.kts b/app/build.gradle.kts index a990a9f3d7..4031596459 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -145,7 +145,7 @@ dependencies { implementation(projects.features.referral.domain) implementation(projects.features.referral.data) implementation(projects.features.swap.api) - implementation(projects.features.swap.presentation) + implementation(projects.features.swap.impl) implementation(projects.features.swap.domain) implementation(projects.features.swap.domain.api) implementation(projects.features.swap.data) diff --git a/features/swap/api/build.gradle.kts b/features/swap/api/build.gradle.kts index 099edf86ca..0462a57d0e 100644 --- a/features/swap/api/build.gradle.kts +++ b/features/swap/api/build.gradle.kts @@ -7,4 +7,14 @@ plugins { android { namespace = "com.tangem.features.swap.api" +} + +dependencies { + /** Project - Core */ + implementation(projects.core.decompose) + implementation(projects.core.ui) + + /** Project - Domain */ + implementation(projects.domain.tokens.models) + implementation(projects.domain.wallets.models) } \ No newline at end of file diff --git a/features/swap/api/src/main/kotlin/com/tangem/features/swap/SwapComponent.kt b/features/swap/api/src/main/kotlin/com/tangem/features/swap/SwapComponent.kt new file mode 100644 index 0000000000..75ec9732ce --- /dev/null +++ b/features/swap/api/src/main/kotlin/com/tangem/features/swap/SwapComponent.kt @@ -0,0 +1,18 @@ +package com.tangem.features.swap + +import com.tangem.core.decompose.factory.ComponentFactory +import com.tangem.core.ui.decompose.ComposableContentComponent +import com.tangem.domain.tokens.model.CryptoCurrency +import com.tangem.domain.wallets.models.UserWalletId + +interface SwapComponent : ComposableContentComponent { + + data class Params( + val currencyFrom: CryptoCurrency, + val currencyTo: CryptoCurrency? = null, + val userWalletId: UserWalletId, + val isInitialReverseOrder: Boolean = false, + ) + + interface Factory : ComponentFactory +} \ No newline at end of file diff --git a/features/swap/presentation/.gitignore b/features/swap/impl/.gitignore similarity index 100% rename from features/swap/presentation/.gitignore rename to features/swap/impl/.gitignore diff --git a/features/swap/presentation/build.gradle.kts b/features/swap/impl/build.gradle.kts similarity index 100% rename from features/swap/presentation/build.gradle.kts rename to features/swap/impl/build.gradle.kts diff --git a/features/swap/impl/src/main/java/com/tangem/feature/swap/DefaultSwapComponent.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/DefaultSwapComponent.kt new file mode 100644 index 0000000000..c98473a08e --- /dev/null +++ b/features/swap/impl/src/main/java/com/tangem/feature/swap/DefaultSwapComponent.kt @@ -0,0 +1,26 @@ +package com.tangem.feature.swap + +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import com.tangem.core.decompose.context.AppComponentContext +import com.tangem.features.swap.SwapComponent +import dagger.assisted.Assisted +import dagger.assisted.AssistedFactory +import dagger.assisted.AssistedInject + +@Suppress("UnusedPrivateMember") +internal class DefaultSwapComponent @AssistedInject constructor( + @Assisted appComponentContext: AppComponentContext, + @Assisted params: SwapComponent.Params, +) : SwapComponent, AppComponentContext by appComponentContext { + + @Composable + override fun Content(modifier: Modifier) { + TODO("Not yet implemented") + } + + @AssistedFactory + interface Factory : SwapComponent.Factory { + override fun create(context: AppComponentContext, params: SwapComponent.Params): DefaultSwapComponent + } +} \ No newline at end of file diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/DefaultSwapFeatureToggles.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/DefaultSwapFeatureToggles.kt similarity index 100% rename from features/swap/presentation/src/main/java/com/tangem/feature/swap/DefaultSwapFeatureToggles.kt rename to features/swap/impl/src/main/java/com/tangem/feature/swap/DefaultSwapFeatureToggles.kt diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/analytics/SwapEvents.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/analytics/SwapEvents.kt similarity index 100% rename from features/swap/presentation/src/main/java/com/tangem/feature/swap/analytics/SwapEvents.kt rename to features/swap/impl/src/main/java/com/tangem/feature/swap/analytics/SwapEvents.kt diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/converters/SwapTransactionErrorStateConverter.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/converters/SwapTransactionErrorStateConverter.kt similarity index 100% rename from features/swap/presentation/src/main/java/com/tangem/feature/swap/converters/SwapTransactionErrorStateConverter.kt rename to features/swap/impl/src/main/java/com/tangem/feature/swap/converters/SwapTransactionErrorStateConverter.kt diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/converters/TokensDataConverter.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/converters/TokensDataConverter.kt similarity index 100% rename from features/swap/presentation/src/main/java/com/tangem/feature/swap/converters/TokensDataConverter.kt rename to features/swap/impl/src/main/java/com/tangem/feature/swap/converters/TokensDataConverter.kt diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/di/SwapFeatureModule.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/di/SwapFeatureModule.kt similarity index 65% rename from features/swap/presentation/src/main/java/com/tangem/feature/swap/di/SwapFeatureModule.kt rename to features/swap/impl/src/main/java/com/tangem/feature/swap/di/SwapFeatureModule.kt index f2b92be438..5b732e9051 100644 --- a/features/swap/presentation/src/main/java/com/tangem/feature/swap/di/SwapFeatureModule.kt +++ b/features/swap/impl/src/main/java/com/tangem/feature/swap/di/SwapFeatureModule.kt @@ -1,8 +1,11 @@ package com.tangem.feature.swap.di import com.tangem.core.configtoggle.feature.FeatureTogglesManager +import com.tangem.feature.swap.DefaultSwapComponent import com.tangem.feature.swap.DefaultSwapFeatureToggles +import com.tangem.features.swap.SwapComponent import com.tangem.features.swap.SwapFeatureToggles +import dagger.Binds import dagger.Module import dagger.Provides import dagger.hilt.InstallIn @@ -18,4 +21,13 @@ internal object SwapFeatureModule { fun provideSwapFeatureToggles(featureToggles: FeatureTogglesManager): SwapFeatureToggles { return DefaultSwapFeatureToggles(featureToggles) } +} + +@Module +@InstallIn(SingletonComponent::class) +internal interface SwapFeatureModuleBinds { + + @Binds + @Singleton + fun provideSwapComponentFactory(impl: DefaultSwapComponent.Factory): SwapComponent.Factory } \ No newline at end of file diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/di/SwapSingletonModule.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/di/SwapSingletonModule.kt similarity index 100% rename from features/swap/presentation/src/main/java/com/tangem/feature/swap/di/SwapSingletonModule.kt rename to features/swap/impl/src/main/java/com/tangem/feature/swap/di/SwapSingletonModule.kt diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/di/impl/DefaultAmountFormatter.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/di/impl/DefaultAmountFormatter.kt similarity index 100% rename from features/swap/presentation/src/main/java/com/tangem/feature/swap/di/impl/DefaultAmountFormatter.kt rename to features/swap/impl/src/main/java/com/tangem/feature/swap/di/impl/DefaultAmountFormatter.kt diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/models/CurrenciesGroupWithFromCurrency.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/models/CurrenciesGroupWithFromCurrency.kt similarity index 100% rename from features/swap/presentation/src/main/java/com/tangem/feature/swap/models/CurrenciesGroupWithFromCurrency.kt rename to features/swap/impl/src/main/java/com/tangem/feature/swap/models/CurrenciesGroupWithFromCurrency.kt diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/models/SwapAlertUM.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/models/SwapAlertUM.kt similarity index 100% rename from features/swap/presentation/src/main/java/com/tangem/feature/swap/models/SwapAlertUM.kt rename to features/swap/impl/src/main/java/com/tangem/feature/swap/models/SwapAlertUM.kt diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/models/SwapSelectTokenStateHolder.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/models/SwapSelectTokenStateHolder.kt similarity index 100% rename from features/swap/presentation/src/main/java/com/tangem/feature/swap/models/SwapSelectTokenStateHolder.kt rename to features/swap/impl/src/main/java/com/tangem/feature/swap/models/SwapSelectTokenStateHolder.kt diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/models/SwapStateHolder.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/models/SwapStateHolder.kt similarity index 100% rename from features/swap/presentation/src/main/java/com/tangem/feature/swap/models/SwapStateHolder.kt rename to features/swap/impl/src/main/java/com/tangem/feature/swap/models/SwapStateHolder.kt diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/models/SwapSuccessStateHolder.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/models/SwapSuccessStateHolder.kt similarity index 100% rename from features/swap/presentation/src/main/java/com/tangem/feature/swap/models/SwapSuccessStateHolder.kt rename to features/swap/impl/src/main/java/com/tangem/feature/swap/models/SwapSuccessStateHolder.kt diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/models/UiActions.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/models/UiActions.kt similarity index 100% rename from features/swap/presentation/src/main/java/com/tangem/feature/swap/models/UiActions.kt rename to features/swap/impl/src/main/java/com/tangem/feature/swap/models/UiActions.kt diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/models/states/ChooseFeeBottomSheetConfig.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/models/states/ChooseFeeBottomSheetConfig.kt similarity index 100% rename from features/swap/presentation/src/main/java/com/tangem/feature/swap/models/states/ChooseFeeBottomSheetConfig.kt rename to features/swap/impl/src/main/java/com/tangem/feature/swap/models/states/ChooseFeeBottomSheetConfig.kt diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/models/states/ChooseProviderBottomSheetConfig.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/models/states/ChooseProviderBottomSheetConfig.kt similarity index 100% rename from features/swap/presentation/src/main/java/com/tangem/feature/swap/models/states/ChooseProviderBottomSheetConfig.kt rename to features/swap/impl/src/main/java/com/tangem/feature/swap/models/states/ChooseProviderBottomSheetConfig.kt diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/models/states/FeeItemState.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/models/states/FeeItemState.kt similarity index 100% rename from features/swap/presentation/src/main/java/com/tangem/feature/swap/models/states/FeeItemState.kt rename to features/swap/impl/src/main/java/com/tangem/feature/swap/models/states/FeeItemState.kt diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/models/states/ProviderState.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/models/states/ProviderState.kt similarity index 100% rename from features/swap/presentation/src/main/java/com/tangem/feature/swap/models/states/ProviderState.kt rename to features/swap/impl/src/main/java/com/tangem/feature/swap/models/states/ProviderState.kt diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/models/states/SwapNotificationUM.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/models/states/SwapNotificationUM.kt similarity index 100% rename from features/swap/presentation/src/main/java/com/tangem/feature/swap/models/states/SwapNotificationUM.kt rename to features/swap/impl/src/main/java/com/tangem/feature/swap/models/states/SwapNotificationUM.kt diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/models/states/events/SwapEvent.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/models/states/events/SwapEvent.kt similarity index 100% rename from features/swap/presentation/src/main/java/com/tangem/feature/swap/models/states/events/SwapEvent.kt rename to features/swap/impl/src/main/java/com/tangem/feature/swap/models/states/events/SwapEvent.kt diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/presentation/SwapFragment.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/presentation/SwapFragment.kt similarity index 100% rename from features/swap/presentation/src/main/java/com/tangem/feature/swap/presentation/SwapFragment.kt rename to features/swap/impl/src/main/java/com/tangem/feature/swap/presentation/SwapFragment.kt diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/presentation/SwapNotificationsFactory.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/presentation/SwapNotificationsFactory.kt similarity index 100% rename from features/swap/presentation/src/main/java/com/tangem/feature/swap/presentation/SwapNotificationsFactory.kt rename to features/swap/impl/src/main/java/com/tangem/feature/swap/presentation/SwapNotificationsFactory.kt diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/preview/FeeItemStatePreview.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/preview/FeeItemStatePreview.kt similarity index 100% rename from features/swap/presentation/src/main/java/com/tangem/feature/swap/preview/FeeItemStatePreview.kt rename to features/swap/impl/src/main/java/com/tangem/feature/swap/preview/FeeItemStatePreview.kt diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/preview/SwapSuccessStatePreview.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/preview/SwapSuccessStatePreview.kt similarity index 100% rename from features/swap/presentation/src/main/java/com/tangem/feature/swap/preview/SwapSuccessStatePreview.kt rename to features/swap/impl/src/main/java/com/tangem/feature/swap/preview/SwapSuccessStatePreview.kt diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/router/SwapRouter.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/router/SwapRouter.kt similarity index 100% rename from features/swap/presentation/src/main/java/com/tangem/feature/swap/router/SwapRouter.kt rename to features/swap/impl/src/main/java/com/tangem/feature/swap/router/SwapRouter.kt diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/AutosizeTextField.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/ui/AutosizeTextField.kt similarity index 100% rename from features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/AutosizeTextField.kt rename to features/swap/impl/src/main/java/com/tangem/feature/swap/ui/AutosizeTextField.kt diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/ChooseFeeBottomSheet.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/ui/ChooseFeeBottomSheet.kt similarity index 100% rename from features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/ChooseFeeBottomSheet.kt rename to features/swap/impl/src/main/java/com/tangem/feature/swap/ui/ChooseFeeBottomSheet.kt diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/ChooseProviderBottomSheet.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/ui/ChooseProviderBottomSheet.kt similarity index 100% rename from features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/ChooseProviderBottomSheet.kt rename to features/swap/impl/src/main/java/com/tangem/feature/swap/ui/ChooseProviderBottomSheet.kt diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/FeeItem.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/ui/FeeItem.kt similarity index 100% rename from features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/FeeItem.kt rename to features/swap/impl/src/main/java/com/tangem/feature/swap/ui/FeeItem.kt diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/ProviderItem.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/ui/ProviderItem.kt similarity index 100% rename from features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/ProviderItem.kt rename to features/swap/impl/src/main/java/com/tangem/feature/swap/ui/ProviderItem.kt diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/StateBuilder.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/ui/StateBuilder.kt similarity index 100% rename from features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/StateBuilder.kt rename to features/swap/impl/src/main/java/com/tangem/feature/swap/ui/StateBuilder.kt diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/SwapEventEffect.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/ui/SwapEventEffect.kt similarity index 100% rename from features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/SwapEventEffect.kt rename to features/swap/impl/src/main/java/com/tangem/feature/swap/ui/SwapEventEffect.kt diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/SwapScreen.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/ui/SwapScreen.kt similarity index 100% rename from features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/SwapScreen.kt rename to features/swap/impl/src/main/java/com/tangem/feature/swap/ui/SwapScreen.kt diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/SwapScreenContent.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/ui/SwapScreenContent.kt similarity index 100% rename from features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/SwapScreenContent.kt rename to features/swap/impl/src/main/java/com/tangem/feature/swap/ui/SwapScreenContent.kt diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/SwapSelectTokenScreen.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/ui/SwapSelectTokenScreen.kt similarity index 100% rename from features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/SwapSelectTokenScreen.kt rename to features/swap/impl/src/main/java/com/tangem/feature/swap/ui/SwapSelectTokenScreen.kt diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/SwapSuccessScreen.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/ui/SwapSuccessScreen.kt similarity index 100% rename from features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/SwapSuccessScreen.kt rename to features/swap/impl/src/main/java/com/tangem/feature/swap/ui/SwapSuccessScreen.kt diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/TransactionCard.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/ui/TransactionCard.kt similarity index 100% rename from features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/TransactionCard.kt rename to features/swap/impl/src/main/java/com/tangem/feature/swap/ui/TransactionCard.kt diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/utils/SwapUtils.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/utils/SwapUtils.kt similarity index 100% rename from features/swap/presentation/src/main/java/com/tangem/feature/swap/utils/SwapUtils.kt rename to features/swap/impl/src/main/java/com/tangem/feature/swap/utils/SwapUtils.kt diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/viewmodels/SwapProcessDataState.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/viewmodels/SwapProcessDataState.kt similarity index 100% rename from features/swap/presentation/src/main/java/com/tangem/feature/swap/viewmodels/SwapProcessDataState.kt rename to features/swap/impl/src/main/java/com/tangem/feature/swap/viewmodels/SwapProcessDataState.kt diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/viewmodels/SwapViewModel.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/viewmodels/SwapViewModel.kt similarity index 100% rename from features/swap/presentation/src/main/java/com/tangem/feature/swap/viewmodels/SwapViewModel.kt rename to features/swap/impl/src/main/java/com/tangem/feature/swap/viewmodels/SwapViewModel.kt diff --git a/features/swap/presentation/src/main/res/drawable-night/ill_one_inch_powered.webp b/features/swap/impl/src/main/res/drawable-night/ill_one_inch_powered.webp similarity index 100% rename from features/swap/presentation/src/main/res/drawable-night/ill_one_inch_powered.webp rename to features/swap/impl/src/main/res/drawable-night/ill_one_inch_powered.webp diff --git a/features/swap/presentation/src/main/res/drawable/ill_one_inch_powered.webp b/features/swap/impl/src/main/res/drawable/ill_one_inch_powered.webp similarity index 100% rename from features/swap/presentation/src/main/res/drawable/ill_one_inch_powered.webp rename to features/swap/impl/src/main/res/drawable/ill_one_inch_powered.webp diff --git a/settings.gradle.kts b/settings.gradle.kts index 627292c89e..7d45b0e97e 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -165,7 +165,7 @@ include(":features:swap:data") include(":features:swap:domain") include(":features:swap:domain:models") include(":features:swap:domain:api") -include(":features:swap:presentation") +include(":features:swap:impl") include(":features:tester:api") include(":features:tester:impl")