diff --git a/core/deep-links/global/src/main/kotlin/com/tangem/core/deeplink/global/ReferralDeepLink.kt b/core/deep-links/global/src/main/kotlin/com/tangem/core/deeplink/global/ReferralDeepLink.kt index 763a6d80f7..5dcf6211d5 100644 --- a/core/deep-links/global/src/main/kotlin/com/tangem/core/deeplink/global/ReferralDeepLink.kt +++ b/core/deep-links/global/src/main/kotlin/com/tangem/core/deeplink/global/ReferralDeepLink.kt @@ -2,6 +2,7 @@ package com.tangem.core.deeplink.global import com.tangem.core.deeplink.DeepLink +@Deprecated("Use ReferralDeepLinkHandler") class ReferralDeepLink( val onReceive: () -> Unit, ) : DeepLink(shouldHandleDelayed = true) { diff --git a/features/referral/api/build.gradle.kts b/features/referral/api/build.gradle.kts index 22a3ba6fa3..da68554518 100644 --- a/features/referral/api/build.gradle.kts +++ b/features/referral/api/build.gradle.kts @@ -17,4 +17,7 @@ dependencies { /* Project - Domain */ implementation(projects.domain.wallets.models) + + /* Compose */ + implementation(deps.compose.runtime) } \ No newline at end of file diff --git a/features/referral/api/src/main/kotlin/com/tangem/feature/referral/api/deeplink/ReferralDeepLinkHandler.kt b/features/referral/api/src/main/kotlin/com/tangem/feature/referral/api/deeplink/ReferralDeepLinkHandler.kt new file mode 100644 index 0000000000..b405e43147 --- /dev/null +++ b/features/referral/api/src/main/kotlin/com/tangem/feature/referral/api/deeplink/ReferralDeepLinkHandler.kt @@ -0,0 +1,8 @@ +package com.tangem.feature.referral.api.deeplink + +interface ReferralDeepLinkHandler { + + interface Factory { + fun create(): ReferralDeepLinkHandler + } +} \ No newline at end of file diff --git a/features/referral/impl/build.gradle.kts b/features/referral/impl/build.gradle.kts index cf2272bee5..89e4f4f57c 100644 --- a/features/referral/impl/build.gradle.kts +++ b/features/referral/impl/build.gradle.kts @@ -39,12 +39,14 @@ dependencies { /** Domain */ implementation(projects.domain.demo) implementation(projects.domain.wallets) + implementation(projects.domain.legacy) implementation(projects.domain.wallets.models) implementation(projects.features.referral.domain) /** Other libraries */ implementation(deps.compose.shimmer) implementation(deps.compose.accompanist.systemUiController) + implementation(deps.timber) /** DI */ implementation(deps.hilt.android) diff --git a/features/referral/impl/src/main/java/com/tangem/feature/referral/deeplink/DefaultReferralDeepLinkHandler.kt b/features/referral/impl/src/main/java/com/tangem/feature/referral/deeplink/DefaultReferralDeepLinkHandler.kt new file mode 100644 index 0000000000..a4f80621ef --- /dev/null +++ b/features/referral/impl/src/main/java/com/tangem/feature/referral/deeplink/DefaultReferralDeepLinkHandler.kt @@ -0,0 +1,37 @@ +package com.tangem.feature.referral.deeplink + +import com.tangem.common.routing.AppRoute +import com.tangem.common.routing.AppRouter +import com.tangem.domain.common.util.cardTypesResolver +import com.tangem.domain.wallets.usecase.GetSelectedWalletSyncUseCase +import com.tangem.feature.referral.api.deeplink.ReferralDeepLinkHandler +import dagger.assisted.AssistedFactory +import dagger.assisted.AssistedInject +import timber.log.Timber + +internal class DefaultReferralDeepLinkHandler @AssistedInject constructor( + appRouter: AppRouter, + getSelectedWalletSyncUseCase: GetSelectedWalletSyncUseCase, +) : ReferralDeepLinkHandler { + + init { + // It is okay here, we are navigating from outside, and there is no other way to getting UserWallet + getSelectedWalletSyncUseCase().fold( + ifLeft = { + Timber.e("Error on getting user wallet: $it") + }, + ifRight = { userWallet -> + if (userWallet.cardTypesResolver.isTangemWallet()) { + appRouter.push( + AppRoute.ReferralProgram(userWalletId = userWallet.walletId), + ) + } + }, + ) + } + + @AssistedFactory + interface Factory : ReferralDeepLinkHandler.Factory { + override fun create(): DefaultReferralDeepLinkHandler + } +} \ No newline at end of file diff --git a/features/referral/impl/src/main/java/com/tangem/feature/referral/deeplink/di/ReferralDeepLinkModule.kt b/features/referral/impl/src/main/java/com/tangem/feature/referral/deeplink/di/ReferralDeepLinkModule.kt new file mode 100644 index 0000000000..6ba16abf7e --- /dev/null +++ b/features/referral/impl/src/main/java/com/tangem/feature/referral/deeplink/di/ReferralDeepLinkModule.kt @@ -0,0 +1,18 @@ +package com.tangem.feature.referral.deeplink.di + +import com.tangem.feature.referral.api.deeplink.ReferralDeepLinkHandler +import com.tangem.feature.referral.deeplink.DefaultReferralDeepLinkHandler +import dagger.Binds +import dagger.Module +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import javax.inject.Singleton + +@Module +@InstallIn(SingletonComponent::class) +internal interface ReferralDeepLinkModule { + + @Binds + @Singleton + fun bindFactory(impl: DefaultReferralDeepLinkHandler.Factory): ReferralDeepLinkHandler.Factory +} \ No newline at end of file