Updated on 2026-08-14

This commit is contained in:
Tangem 2026-07-03 18:03:15 +05:00
parent ba572cf71f
commit 77683181c7
20 changed files with 189 additions and 145 deletions

View file

@ -28,6 +28,7 @@ dependencies {
implementation(projects.common.routing)
/** Domain */
implementation(projects.domain.appsflyer)
implementation(projects.domain.common)
implementation(projects.domain.models)
implementation(projects.domain.core)
@ -41,9 +42,6 @@ dependencies {
implementation(projects.domain.feedback.models)
implementation(projects.domain.referral)
/** Referral */
implementation(projects.features.referral.domain)
/** AndroidX libraries */
implementation(deps.androidx.activity.compose)
implementation(deps.lifecycle.runtime.ktx)

View file

@ -18,6 +18,7 @@ import com.tangem.core.decompose.navigation.Router
import com.tangem.core.decompose.ui.UiMessageSender
import com.tangem.core.navigation.url.UrlOpener
import com.tangem.core.ui.message.dialog.Dialogs
import com.tangem.domain.appsflyer.usecase.IsReferralInstallUseCase
import com.tangem.domain.card.ScanCardProcessor
import com.tangem.domain.card.analytics.IntroductionProcess
import com.tangem.domain.card.analytics.Shop
@ -32,7 +33,6 @@ import com.tangem.domain.settings.usercountry.models.needApplyFCARestrictions
import com.tangem.domain.wallets.builder.ColdUserWalletBuilder
import com.tangem.domain.wallets.usecase.GenerateBuyTangemCardLinkUseCase
import com.tangem.domain.wallets.usecase.SaveWalletUseCase
import com.tangem.feature.referral.domain.ShouldShowMobileWalletPromoUseCase
import com.tangem.features.home.api.HomeComponent
import com.tangem.features.home.impl.ui.state.HomeUM
import com.tangem.features.home.impl.ui.state.Stories
@ -66,7 +66,7 @@ internal class HomeModel @Inject constructor(
private val generateBuyTangemCardLinkUseCase: GenerateBuyTangemCardLinkUseCase,
private val urlOpener: UrlOpener,
private val userWalletsListRepository: UserWalletsListRepository,
private val shouldShowMobileWalletPromoUseCase: ShouldShowMobileWalletPromoUseCase,
private val isReferralInstallUseCase: IsReferralInstallUseCase,
@GlobalUiMessageSender private val uiMessageSender: UiMessageSender,
) : Model() {
@ -136,7 +136,7 @@ internal class HomeModel @Inject constructor(
private fun onGetStartedClick() {
debouncer.debounce(modelScope) {
modelScope.launch {
val mode = if (shouldShowMobileWalletPromoUseCase()) {
val mode = if (isReferralInstallUseCase()) {
AppRoute.CreateWalletStart.Mode.HotWallet
} else {
AppRoute.CreateWalletStart.Mode.ColdWallet

View file

@ -1,26 +0,0 @@
package com.tangem.feature.referral.data
import androidx.datastore.preferences.core.booleanPreferencesKey
import com.tangem.datasource.local.preferences.AppPreferencesStore
import com.tangem.datasource.local.preferences.utils.getSyncOrDefault
import com.tangem.feature.referral.domain.MobileWalletPromoRepository
import javax.inject.Inject
internal class DefaultMobileWalletPromoRepository @Inject constructor(
private val appPreferencesStore: AppPreferencesStore,
) : MobileWalletPromoRepository {
override suspend fun shouldShowMobileWalletPromo(): Boolean {
return appPreferencesStore.getSyncOrDefault(key = SHOULD_SHOW_MOBILE_WALLET_PROMO_KEY, default = false)
}
override suspend fun setShouldShowMobileWalletPromo(shouldShowPromo: Boolean) {
appPreferencesStore.editData { preferences ->
preferences[SHOULD_SHOW_MOBILE_WALLET_PROMO_KEY] = shouldShowPromo
}
}
private companion object {
val SHOULD_SHOW_MOBILE_WALLET_PROMO_KEY = booleanPreferencesKey("should_show_mobile_wallet_promo")
}
}

View file

@ -2,13 +2,10 @@ package com.tangem.feature.referral.di
import com.tangem.blockchainsdk.utils.ExcludedBlockchains
import com.tangem.datasource.api.tangemTech.TangemTechApi
import com.tangem.datasource.local.preferences.AppPreferencesStore
import com.tangem.domain.common.wallets.UserWalletsListRepository
import com.tangem.feature.referral.converters.ReferralConverter
import com.tangem.feature.referral.data.DefaultMobileWalletPromoRepository
import com.tangem.feature.referral.data.ExternalReferralRepository
import com.tangem.feature.referral.data.ReferralRepositoryImpl
import com.tangem.feature.referral.domain.MobileWalletPromoRepository
import com.tangem.feature.referral.domain.ReferralRepository
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
import dagger.Module
@ -56,11 +53,4 @@ class ReferralRepositoryModule {
excludedBlockchains = excludedBlockchains,
)
}
@Provides
@Singleton
fun provideMobileWalletPromoRepository(appPreferencesStore: AppPreferencesStore): MobileWalletPromoRepository =
DefaultMobileWalletPromoRepository(
appPreferencesStore = appPreferencesStore,
)
}

View file

@ -1,8 +0,0 @@
package com.tangem.feature.referral.domain
interface MobileWalletPromoRepository {
suspend fun shouldShowMobileWalletPromo(): Boolean
suspend fun setShouldShowMobileWalletPromo(shouldShowPromo: Boolean)
}

View file

@ -1,18 +0,0 @@
package com.tangem.feature.referral.domain
import arrow.core.Either
import com.tangem.domain.common.wallets.UserWalletsListRepository
import javax.inject.Inject
class SetShouldShowMobileWalletPromoUseCase @Inject constructor(
private val mobileWalletPromoRepository: MobileWalletPromoRepository,
private val userWalletsListRepository: UserWalletsListRepository,
) {
suspend operator fun invoke(shouldShowPromo: Boolean): Either<Throwable, Unit> = Either.catch {
val wallets = userWalletsListRepository.userWallets.value
if (wallets.isNullOrEmpty()) {
mobileWalletPromoRepository.setShouldShowMobileWalletPromo(shouldShowPromo)
}
}
}

View file

@ -1,12 +0,0 @@
package com.tangem.feature.referral.domain
import javax.inject.Inject
class ShouldShowMobileWalletPromoUseCase @Inject constructor(
private val mobileWalletPromoRepository: MobileWalletPromoRepository,
) {
suspend operator fun invoke(): Boolean {
return mobileWalletPromoRepository.shouldShowMobileWalletPromo()
}
}