Updated on 2026-08-14
This commit is contained in:
parent
ba572cf71f
commit
77683181c7
20 changed files with 189 additions and 145 deletions
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
}
|
||||
}
|
||||
|
|
@ -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,
|
||||
)
|
||||
}
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
package com.tangem.feature.referral.domain
|
||||
|
||||
interface MobileWalletPromoRepository {
|
||||
|
||||
suspend fun shouldShowMobileWalletPromo(): Boolean
|
||||
|
||||
suspend fun setShouldShowMobileWalletPromo(shouldShowPromo: Boolean)
|
||||
}
|
||||
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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()
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue