From 4a6e57a049ca7cc88c9b83f83566200ff9e3d678 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 25 Feb 2025 10:02:39 +0300 Subject: [PATCH] Updated on 2026-08-14 --- app/build.gradle.kts | 2 +- .../tangem/tap/routing/utils/ChildFactory.kt | 17 ++++- .../di/CoroutineDispatcherProviderModule.kt | 2 +- features/referral/api/.gitignore | 1 + features/referral/api/build.gradle.kts | 20 ++++++ .../feature/referral/api/ReferralComponent.kt | 14 +++++ features/referral/domain/build.gradle.kts | 1 + .../domain/di/ReferralDomainModule.kt | 8 +-- .../{presentation => impl}/.gitignore | 0 .../{presentation => impl}/build.gradle.kts | 4 ++ .../referral/DefaultReferralComponent.kt | 30 +++++++++ .../referral/analytics/ReferralEvents.kt | 0 .../feature/referral/di/ComponentModule.kt | 25 ++++++++ .../feature/referral/model/ReferralModel.kt} | 62 ++++++++----------- .../referral/models/DemoModeException.kt | 0 .../referral/models/ReferralStateHolder.kt | 0 .../feature/referral/ui/AgreementText.kt | 0 .../referral/ui/NonParticipateBottomBlock.kt | 0 .../referral/ui/ParticipateBottomBlock.kt | 0 .../feature/referral/ui/ReferralScreen.kt | 0 .../feature/referral/ReferralFragment.kt | 37 ----------- .../feature/referral/router/ReferralRouter.kt | 12 ---- settings.gradle.kts | 3 +- 23 files changed, 143 insertions(+), 95 deletions(-) create mode 100644 features/referral/api/.gitignore create mode 100644 features/referral/api/build.gradle.kts create mode 100644 features/referral/api/src/main/kotlin/com/tangem/feature/referral/api/ReferralComponent.kt rename features/referral/{presentation => impl}/.gitignore (100%) rename features/referral/{presentation => impl}/build.gradle.kts (93%) create mode 100644 features/referral/impl/src/main/java/com/tangem/feature/referral/DefaultReferralComponent.kt rename features/referral/{presentation => impl}/src/main/java/com/tangem/feature/referral/analytics/ReferralEvents.kt (100%) create mode 100644 features/referral/impl/src/main/java/com/tangem/feature/referral/di/ComponentModule.kt rename features/referral/{presentation/src/main/java/com/tangem/feature/referral/viewmodels/ReferralViewModel.kt => impl/src/main/java/com/tangem/feature/referral/model/ReferralModel.kt} (78%) rename features/referral/{presentation => impl}/src/main/java/com/tangem/feature/referral/models/DemoModeException.kt (100%) rename features/referral/{presentation => impl}/src/main/java/com/tangem/feature/referral/models/ReferralStateHolder.kt (100%) rename features/referral/{presentation => impl}/src/main/java/com/tangem/feature/referral/ui/AgreementText.kt (100%) rename features/referral/{presentation => impl}/src/main/java/com/tangem/feature/referral/ui/NonParticipateBottomBlock.kt (100%) rename features/referral/{presentation => impl}/src/main/java/com/tangem/feature/referral/ui/ParticipateBottomBlock.kt (100%) rename features/referral/{presentation => impl}/src/main/java/com/tangem/feature/referral/ui/ReferralScreen.kt (100%) delete mode 100644 features/referral/presentation/src/main/java/com/tangem/feature/referral/ReferralFragment.kt delete mode 100644 features/referral/presentation/src/main/java/com/tangem/feature/referral/router/ReferralRouter.kt diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 8fa9c93920..c3a1e5b24a 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -146,7 +146,7 @@ dependencies { /** Features */ implementation(projects.features.onboarding) - implementation(projects.features.referral.presentation) + implementation(projects.features.referral.impl) implementation(projects.features.referral.domain) implementation(projects.features.referral.data) implementation(projects.features.swap.api) 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 ff2cfe56d1..bcea27fccd 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 @@ -3,7 +3,7 @@ package com.tangem.tap.routing.utils import com.tangem.common.routing.AppRoute import com.tangem.core.decompose.context.AppComponentContext import com.tangem.feature.qrscanning.QrScanningComponent -import com.tangem.feature.referral.ReferralFragment +import com.tangem.feature.referral.api.ReferralComponent import com.tangem.feature.stories.api.StoriesComponent import com.tangem.feature.walletsettings.component.WalletSettingsComponent import com.tangem.features.details.component.DetailsComponent @@ -71,6 +71,7 @@ internal class ChildFactory @Inject constructor( private val appSettingsComponentFactory: AppSettingsComponent.Factory, private val securityModeComponentFactory: SecurityModeComponent.Factory, private val resetCardComponentFactory: ResetCardComponent.Factory, + private val referralComponentFactory: ReferralComponent.Factory, private val walletRouter: WalletRouter, private val testerRouter: TesterRouter, private val pushNotificationRouter: PushNotificationsRouter, @@ -342,12 +343,18 @@ internal class ChildFactory @Inject constructor( componentFactory = resetCardComponentFactory, ) } + is AppRoute.ReferralProgram -> { + createComponentChild( + contextProvider = contextProvider(route, contextFactory), + params = ReferralComponent.Params(route.userWalletId), + componentFactory = referralComponentFactory, + ) + } is AppRoute.SaveWallet, is AppRoute.OnboardingNote, is AppRoute.OnboardingOther, is AppRoute.OnboardingTwins, is AppRoute.OnboardingWallet, - is AppRoute.ReferralProgram, is AppRoute.Wallet, is AppRoute.PushNotification, -> error("Unsupported route: $route") @@ -475,7 +482,11 @@ internal class ChildFactory @Inject constructor( ) } is AppRoute.ReferralProgram -> { - route.asFragmentChild(Provider { ReferralFragment() }) + route.asComponentChild( + contextProvider = contextProvider(route, contextFactory), + params = ReferralComponent.Params(route.userWalletId), + componentFactory = referralComponentFactory, + ) } is AppRoute.ResetToFactory -> { route.asComponentChild( diff --git a/core/utils/src/main/java/com/tangem/utils/di/CoroutineDispatcherProviderModule.kt b/core/utils/src/main/java/com/tangem/utils/di/CoroutineDispatcherProviderModule.kt index 6dd1011462..cf0847f2f0 100644 --- a/core/utils/src/main/java/com/tangem/utils/di/CoroutineDispatcherProviderModule.kt +++ b/core/utils/src/main/java/com/tangem/utils/di/CoroutineDispatcherProviderModule.kt @@ -9,7 +9,7 @@ import dagger.hilt.components.SingletonComponent @Module @InstallIn(SingletonComponent::class) -interface CoroutineDispatcherProviderModule { +internal interface CoroutineDispatcherProviderModule { @Binds fun bindCoroutineDispatcherProvider( diff --git a/features/referral/api/.gitignore b/features/referral/api/.gitignore new file mode 100644 index 0000000000..796b96d1c4 --- /dev/null +++ b/features/referral/api/.gitignore @@ -0,0 +1 @@ +/build diff --git a/features/referral/api/build.gradle.kts b/features/referral/api/build.gradle.kts new file mode 100644 index 0000000000..22a3ba6fa3 --- /dev/null +++ b/features/referral/api/build.gradle.kts @@ -0,0 +1,20 @@ +plugins { + alias(deps.plugins.android.library) + alias(deps.plugins.kotlin.android) + alias(deps.plugins.kotlin.serialization) + id("kotlin-parcelize") + id("configuration") +} + +android { + namespace = "com.tangem.features.referral.api" +} + +dependencies { + /* Project - Core */ + implementation(projects.core.decompose) + implementation(projects.core.ui) + + /* Project - Domain */ + implementation(projects.domain.wallets.models) +} \ No newline at end of file diff --git a/features/referral/api/src/main/kotlin/com/tangem/feature/referral/api/ReferralComponent.kt b/features/referral/api/src/main/kotlin/com/tangem/feature/referral/api/ReferralComponent.kt new file mode 100644 index 0000000000..de0cda3a93 --- /dev/null +++ b/features/referral/api/src/main/kotlin/com/tangem/feature/referral/api/ReferralComponent.kt @@ -0,0 +1,14 @@ +package com.tangem.feature.referral.api + +import com.tangem.core.decompose.factory.ComponentFactory +import com.tangem.core.ui.decompose.ComposableContentComponent +import com.tangem.domain.wallets.models.UserWalletId + +interface ReferralComponent : ComposableContentComponent { + + data class Params( + val userWalletId: UserWalletId, + ) + + interface Factory : ComponentFactory +} \ No newline at end of file diff --git a/features/referral/domain/build.gradle.kts b/features/referral/domain/build.gradle.kts index a77d439bbb..0ca36ddd1a 100644 --- a/features/referral/domain/build.gradle.kts +++ b/features/referral/domain/build.gradle.kts @@ -13,6 +13,7 @@ dependencies { /** Libs */ implementation(projects.core.utils) + implementation(projects.core.decompose) /** Core modules */ implementation(projects.libs.crypto) diff --git a/features/referral/domain/src/main/java/com/tangem/feature/referral/domain/di/ReferralDomainModule.kt b/features/referral/domain/src/main/java/com/tangem/feature/referral/domain/di/ReferralDomainModule.kt index 172c41b27d..07ec550009 100644 --- a/features/referral/domain/src/main/java/com/tangem/feature/referral/domain/di/ReferralDomainModule.kt +++ b/features/referral/domain/src/main/java/com/tangem/feature/referral/domain/di/ReferralDomainModule.kt @@ -1,5 +1,7 @@ package com.tangem.feature.referral.domain.di +import com.tangem.core.decompose.di.ComponentScoped +import com.tangem.core.decompose.di.DecomposeComponent import com.tangem.domain.card.DerivePublicKeysUseCase import com.tangem.domain.tokens.AddCryptoCurrenciesUseCase import com.tangem.domain.wallets.usecase.GetUserWalletUseCase @@ -10,15 +12,13 @@ import com.tangem.lib.crypto.UserWalletManager 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) +@InstallIn(DecomposeComponent::class) class ReferralDomainModule { @Provides - @ViewModelScoped + @ComponentScoped fun provideReferralInteractor( referralRepository: ReferralRepository, userWalletManager: UserWalletManager, diff --git a/features/referral/presentation/.gitignore b/features/referral/impl/.gitignore similarity index 100% rename from features/referral/presentation/.gitignore rename to features/referral/impl/.gitignore diff --git a/features/referral/presentation/build.gradle.kts b/features/referral/impl/build.gradle.kts similarity index 93% rename from features/referral/presentation/build.gradle.kts rename to features/referral/impl/build.gradle.kts index 6ee99e86cb..cf2272bee5 100644 --- a/features/referral/presentation/build.gradle.kts +++ b/features/referral/impl/build.gradle.kts @@ -11,6 +11,9 @@ android { } dependencies { + /** Api */ + api(projects.features.referral.api) + /** Core modules */ implementation(projects.core.analytics) implementation(projects.core.analytics.models) @@ -18,6 +21,7 @@ dependencies { implementation(projects.core.res) implementation(projects.core.utils) implementation(projects.core.ui) + implementation(projects.core.decompose) implementation(projects.libs.crypto) implementation(projects.common.routing) diff --git a/features/referral/impl/src/main/java/com/tangem/feature/referral/DefaultReferralComponent.kt b/features/referral/impl/src/main/java/com/tangem/feature/referral/DefaultReferralComponent.kt new file mode 100644 index 0000000000..f30cefaab8 --- /dev/null +++ b/features/referral/impl/src/main/java/com/tangem/feature/referral/DefaultReferralComponent.kt @@ -0,0 +1,30 @@ +package com.tangem.feature.referral + +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import com.tangem.core.decompose.context.AppComponentContext +import com.tangem.core.decompose.model.getOrCreateModel +import com.tangem.feature.referral.api.ReferralComponent +import com.tangem.feature.referral.model.ReferralModel +import com.tangem.feature.referral.ui.ReferralScreen +import dagger.assisted.Assisted +import dagger.assisted.AssistedFactory +import dagger.assisted.AssistedInject + +class DefaultReferralComponent @AssistedInject constructor( + @Assisted appComponentContext: AppComponentContext, + @Assisted params: ReferralComponent.Params, +) : ReferralComponent, AppComponentContext by appComponentContext { + + private val model: ReferralModel = getOrCreateModel(params) + + @Composable + override fun Content(modifier: Modifier) { + ReferralScreen(stateHolder = model.uiState) + } + + @AssistedFactory + interface Factory : ReferralComponent.Factory { + override fun create(context: AppComponentContext, params: ReferralComponent.Params): DefaultReferralComponent + } +} \ No newline at end of file diff --git a/features/referral/presentation/src/main/java/com/tangem/feature/referral/analytics/ReferralEvents.kt b/features/referral/impl/src/main/java/com/tangem/feature/referral/analytics/ReferralEvents.kt similarity index 100% rename from features/referral/presentation/src/main/java/com/tangem/feature/referral/analytics/ReferralEvents.kt rename to features/referral/impl/src/main/java/com/tangem/feature/referral/analytics/ReferralEvents.kt diff --git a/features/referral/impl/src/main/java/com/tangem/feature/referral/di/ComponentModule.kt b/features/referral/impl/src/main/java/com/tangem/feature/referral/di/ComponentModule.kt new file mode 100644 index 0000000000..54355a0a6c --- /dev/null +++ b/features/referral/impl/src/main/java/com/tangem/feature/referral/di/ComponentModule.kt @@ -0,0 +1,25 @@ +package com.tangem.feature.referral.di + +import com.tangem.core.decompose.model.Model +import com.tangem.feature.referral.DefaultReferralComponent +import com.tangem.feature.referral.api.ReferralComponent +import com.tangem.feature.referral.model.ReferralModel +import dagger.Binds +import dagger.Module +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import dagger.multibindings.ClassKey +import dagger.multibindings.IntoMap + +@Module +@InstallIn(SingletonComponent::class) +internal interface ComponentModule { + + @Binds + fun provideReferralComponentFactory(impl: DefaultReferralComponent.Factory): ReferralComponent.Factory + + @Binds + @IntoMap + @ClassKey(ReferralModel::class) + fun bindModel(model: ReferralModel): Model +} \ No newline at end of file diff --git a/features/referral/presentation/src/main/java/com/tangem/feature/referral/viewmodels/ReferralViewModel.kt b/features/referral/impl/src/main/java/com/tangem/feature/referral/model/ReferralModel.kt similarity index 78% rename from features/referral/presentation/src/main/java/com/tangem/feature/referral/viewmodels/ReferralViewModel.kt rename to features/referral/impl/src/main/java/com/tangem/feature/referral/model/ReferralModel.kt index 57d35abc7d..621ddbe1aa 100644 --- a/features/referral/presentation/src/main/java/com/tangem/feature/referral/viewmodels/ReferralViewModel.kt +++ b/features/referral/impl/src/main/java/com/tangem/feature/referral/model/ReferralModel.kt @@ -1,21 +1,20 @@ -package com.tangem.feature.referral.viewmodels +package com.tangem.feature.referral.model -import android.os.Bundle +import androidx.compose.runtime.Stable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue -import androidx.lifecycle.SavedStateHandle -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope -import com.tangem.common.routing.AppRoute -import com.tangem.common.routing.bundle.unbundle +import com.tangem.common.routing.AppRouter import com.tangem.core.analytics.api.AnalyticsEventHandler +import com.tangem.core.decompose.di.ComponentScoped +import com.tangem.core.decompose.model.Model +import com.tangem.core.decompose.model.ParamsContainer import com.tangem.core.navigation.share.ShareManager import com.tangem.core.navigation.url.UrlOpener import com.tangem.domain.demo.IsDemoCardUseCase -import com.tangem.domain.wallets.models.UserWalletId import com.tangem.domain.wallets.usecase.GetUserWalletUseCase import com.tangem.feature.referral.analytics.ReferralEvents +import com.tangem.feature.referral.api.ReferralComponent import com.tangem.feature.referral.domain.ReferralInteractor import com.tangem.feature.referral.domain.errors.ReferralError import com.tangem.feature.referral.domain.models.DiscountType @@ -25,29 +24,26 @@ import com.tangem.feature.referral.models.DemoModeException import com.tangem.feature.referral.models.ReferralStateHolder import com.tangem.feature.referral.models.ReferralStateHolder.ErrorSnackbar import com.tangem.feature.referral.models.ReferralStateHolder.ReferralInfoState -import com.tangem.feature.referral.router.ReferralRouter -import dagger.hilt.android.lifecycle.HiltViewModel +import com.tangem.utils.coroutines.CoroutineDispatcherProvider import kotlinx.coroutines.launch import javax.inject.Inject -import kotlin.properties.Delegates @Suppress("LongParameterList") -@HiltViewModel -internal class ReferralViewModel @Inject constructor( +@Stable +@ComponentScoped +internal class ReferralModel @Inject constructor( + paramsContainer: ParamsContainer, + override val dispatchers: CoroutineDispatcherProvider, private val referralInteractor: ReferralInteractor, private val analyticsEventHandler: AnalyticsEventHandler, private val shareManager: ShareManager, private val urlOpener: UrlOpener, private val getUserWalletUseCase: GetUserWalletUseCase, private val isDemoCardUseCase: IsDemoCardUseCase, - savedStateHandle: SavedStateHandle, -) : ViewModel() { + private val appRouter: AppRouter, +) : Model() { - private val userWalletId = savedStateHandle.get(AppRoute.ReferralProgram.USER_WALLET_ID_KEY) - ?.unbundle(UserWalletId.serializer()) - ?: error("User wallet ID is required for Referral screen") - - private var referralRouter: ReferralRouter by Delegates.notNull() + private val params = paramsContainer.require() private var lastReferralData: ReferralData? = null @@ -55,20 +51,14 @@ internal class ReferralViewModel @Inject constructor( private set init { + analyticsEventHandler.send(ReferralEvents.ReferralScreenOpened) loadReferralData() } - fun setRouter(router: ReferralRouter) { - referralRouter = router - uiState = uiState.copy(headerState = ReferralStateHolder.HeaderState(onBackClicked = router::back)) - } - - fun onScreenOpened() { - analyticsEventHandler.send(ReferralEvents.ReferralScreenOpened) - } - private fun createInitiallyUiState() = ReferralStateHolder( - headerState = ReferralStateHolder.HeaderState(onBackClicked = { }), + headerState = ReferralStateHolder.HeaderState( + onBackClicked = appRouter::pop, + ), referralInfoState = ReferralInfoState.Loading, errorSnackbar = null, analytics = ReferralStateHolder.Analytics( @@ -80,9 +70,9 @@ internal class ReferralViewModel @Inject constructor( private fun loadReferralData() { uiState = uiState.copy(referralInfoState = ReferralInfoState.Loading) - viewModelScope.launch { + modelScope.launch { runCatching { - referralInteractor.getReferralStatus(userWalletId).apply { + referralInteractor.getReferralStatus(params.userWalletId).apply { lastReferralData = this } } @@ -92,15 +82,15 @@ internal class ReferralViewModel @Inject constructor( } private fun participate() { - val userWallet = getUserWalletUseCase(userWalletId).getOrNull() ?: error("User wallet not found") + val userWallet = getUserWalletUseCase(params.userWalletId).getOrNull() ?: error("User wallet not found") if (isDemoCardUseCase(cardId = userWallet.cardId)) { showErrorSnackbar(DemoModeException()) } else { analyticsEventHandler.send(ReferralEvents.ClickParticipate) uiState = uiState.copy(referralInfoState = ReferralInfoState.Loading) - viewModelScope.launch { - runCatching { referralInteractor.startReferral(userWalletId) } + modelScope.launch { + runCatching { referralInteractor.startReferral(params.userWalletId) } .onSuccess(::showContent) .onFailure { throwable -> if (throwable is ReferralError.UserCancelledException) { @@ -121,7 +111,7 @@ internal class ReferralViewModel @Inject constructor( private fun showErrorSnackbar(throwable: Throwable) { uiState = uiState.copy( - errorSnackbar = ErrorSnackbar(throwable = throwable, onOkClicked = referralRouter::back), + errorSnackbar = ErrorSnackbar(throwable = throwable, onOkClicked = appRouter::pop), ) } diff --git a/features/referral/presentation/src/main/java/com/tangem/feature/referral/models/DemoModeException.kt b/features/referral/impl/src/main/java/com/tangem/feature/referral/models/DemoModeException.kt similarity index 100% rename from features/referral/presentation/src/main/java/com/tangem/feature/referral/models/DemoModeException.kt rename to features/referral/impl/src/main/java/com/tangem/feature/referral/models/DemoModeException.kt diff --git a/features/referral/presentation/src/main/java/com/tangem/feature/referral/models/ReferralStateHolder.kt b/features/referral/impl/src/main/java/com/tangem/feature/referral/models/ReferralStateHolder.kt similarity index 100% rename from features/referral/presentation/src/main/java/com/tangem/feature/referral/models/ReferralStateHolder.kt rename to features/referral/impl/src/main/java/com/tangem/feature/referral/models/ReferralStateHolder.kt diff --git a/features/referral/presentation/src/main/java/com/tangem/feature/referral/ui/AgreementText.kt b/features/referral/impl/src/main/java/com/tangem/feature/referral/ui/AgreementText.kt similarity index 100% rename from features/referral/presentation/src/main/java/com/tangem/feature/referral/ui/AgreementText.kt rename to features/referral/impl/src/main/java/com/tangem/feature/referral/ui/AgreementText.kt diff --git a/features/referral/presentation/src/main/java/com/tangem/feature/referral/ui/NonParticipateBottomBlock.kt b/features/referral/impl/src/main/java/com/tangem/feature/referral/ui/NonParticipateBottomBlock.kt similarity index 100% rename from features/referral/presentation/src/main/java/com/tangem/feature/referral/ui/NonParticipateBottomBlock.kt rename to features/referral/impl/src/main/java/com/tangem/feature/referral/ui/NonParticipateBottomBlock.kt diff --git a/features/referral/presentation/src/main/java/com/tangem/feature/referral/ui/ParticipateBottomBlock.kt b/features/referral/impl/src/main/java/com/tangem/feature/referral/ui/ParticipateBottomBlock.kt similarity index 100% rename from features/referral/presentation/src/main/java/com/tangem/feature/referral/ui/ParticipateBottomBlock.kt rename to features/referral/impl/src/main/java/com/tangem/feature/referral/ui/ParticipateBottomBlock.kt diff --git a/features/referral/presentation/src/main/java/com/tangem/feature/referral/ui/ReferralScreen.kt b/features/referral/impl/src/main/java/com/tangem/feature/referral/ui/ReferralScreen.kt similarity index 100% rename from features/referral/presentation/src/main/java/com/tangem/feature/referral/ui/ReferralScreen.kt rename to features/referral/impl/src/main/java/com/tangem/feature/referral/ui/ReferralScreen.kt diff --git a/features/referral/presentation/src/main/java/com/tangem/feature/referral/ReferralFragment.kt b/features/referral/presentation/src/main/java/com/tangem/feature/referral/ReferralFragment.kt deleted file mode 100644 index cec296cc80..0000000000 --- a/features/referral/presentation/src/main/java/com/tangem/feature/referral/ReferralFragment.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.tangem.feature.referral - -import android.os.Bundle -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import androidx.fragment.app.viewModels -import com.tangem.common.routing.AppRouter -import com.tangem.core.ui.UiDependencies -import com.tangem.core.ui.screen.ComposeFragment -import com.tangem.feature.referral.router.ReferralRouter -import com.tangem.feature.referral.ui.ReferralScreen -import com.tangem.feature.referral.viewmodels.ReferralViewModel -import dagger.hilt.android.AndroidEntryPoint -import javax.inject.Inject - -@AndroidEntryPoint -class ReferralFragment : ComposeFragment() { - - @Inject - override lateinit var uiDependencies: UiDependencies - - @Inject - internal lateinit var appRouter: AppRouter - - private val viewModel by viewModels() - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - viewModel.onScreenOpened() - viewModel.setRouter(ReferralRouter(appRouter)) - } - - @Composable - override fun ScreenContent(modifier: Modifier) { - ReferralScreen(stateHolder = viewModel.uiState) - } -} \ No newline at end of file diff --git a/features/referral/presentation/src/main/java/com/tangem/feature/referral/router/ReferralRouter.kt b/features/referral/presentation/src/main/java/com/tangem/feature/referral/router/ReferralRouter.kt deleted file mode 100644 index a8ac11e54b..0000000000 --- a/features/referral/presentation/src/main/java/com/tangem/feature/referral/router/ReferralRouter.kt +++ /dev/null @@ -1,12 +0,0 @@ -package com.tangem.feature.referral.router - -import com.tangem.common.routing.AppRouter - -internal class ReferralRouter( - private val appRouter: AppRouter, -) { - - fun back() { - appRouter.pop() - } -} \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index b89a9482f9..ddb8968ba6 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -171,9 +171,10 @@ include(":features:onboarding") include(":features:onboarding-v2:api") include(":features:onboarding-v2:impl") +include(":features:referral:api") include(":features:referral:data") include(":features:referral:domain") -include(":features:referral:presentation") +include(":features:referral:impl") include(":features:swap:api") include(":features:swap:data")