Updated on 2026-08-14

This commit is contained in:
Tangem 2025-05-16 12:26:58 +05:00
parent e70595047c
commit e56c34de0b
6 changed files with 69 additions and 0 deletions

View file

@ -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) {

View file

@ -17,4 +17,7 @@ dependencies {
/* Project - Domain */
implementation(projects.domain.wallets.models)
/* Compose */
implementation(deps.compose.runtime)
}

View file

@ -0,0 +1,8 @@
package com.tangem.feature.referral.api.deeplink
interface ReferralDeepLinkHandler {
interface Factory {
fun create(): ReferralDeepLinkHandler
}
}

View file

@ -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)

View file

@ -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
}
}

View file

@ -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
}