Updated on 2026-08-14
This commit is contained in:
parent
64fda96648
commit
72725adfa9
7 changed files with 27 additions and 4 deletions
|
|
@ -15,6 +15,7 @@ import com.tangem.domain.wallets.derivations.DerivationsRepository
|
|||
import com.tangem.domain.wallets.hot.HotWalletAccessor
|
||||
import com.tangem.domain.wallets.legacy.UserWalletsListManager
|
||||
import com.tangem.domain.wallets.repository.WalletNamesMigrationRepository
|
||||
import com.tangem.domain.wallets.repository.WalletsPromoRepository
|
||||
import com.tangem.domain.wallets.repository.WalletsRepository
|
||||
import com.tangem.domain.wallets.usecase.*
|
||||
import com.tangem.domain.yield.supply.YieldSupplyRepository
|
||||
|
|
@ -157,8 +158,10 @@ internal object WalletsDomainModule {
|
|||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun providesOpenBuyTangemCardUseCase(): GenerateBuyTangemCardLinkUseCase {
|
||||
return GenerateBuyTangemCardLinkUseCase()
|
||||
fun providesOpenBuyTangemCardUseCase(
|
||||
walletsPromoRepository: WalletsPromoRepository,
|
||||
): GenerateBuyTangemCardLinkUseCase {
|
||||
return GenerateBuyTangemCardLinkUseCase(walletsPromoRepository)
|
||||
}
|
||||
|
||||
@Provides
|
||||
|
|
|
|||
|
|
@ -17,6 +17,10 @@ object TangemSiteUrlBuilder {
|
|||
return "utm_source=tangem-app&utm_medium=app$utmCampaignPart$utmContent$appInstanceIdPart"
|
||||
}
|
||||
|
||||
fun getRefCodeTag(refCode: String?): String {
|
||||
return refCode?.let { "promocode=$it" }.orEmpty()
|
||||
}
|
||||
|
||||
suspend fun url(path: String, campaign: String): String {
|
||||
val normalizedPath = path.trim('/')
|
||||
return "https://tangem.com/$normalizedPath?${getUtmTags(campaign)}"
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import com.squareup.moshi.JsonClass
|
|||
import com.tangem.datasource.api.common.response.ApiResponse
|
||||
import com.tangem.datasource.api.tangemTech.TangemTechApi
|
||||
import com.tangem.datasource.api.tangemTech.models.BindWalletsByReferralCodeBody
|
||||
import com.tangem.datasource.local.appsflyer.AppsFlyerStore
|
||||
import com.tangem.datasource.local.preferences.AppPreferencesStore
|
||||
import com.tangem.datasource.local.preferences.utils.getObjectSyncOrNull
|
||||
import com.tangem.datasource.local.preferences.utils.storeObject
|
||||
|
|
@ -21,6 +22,7 @@ internal class DefaultWalletsPromoRepository(
|
|||
private val tangemTechApi: TangemTechApi,
|
||||
private val userWalletsStore: UserWalletsStore,
|
||||
private val dispatchers: CoroutineDispatcherProvider,
|
||||
private val appsFlyerStore: AppsFlyerStore,
|
||||
) : WalletsPromoRepository {
|
||||
|
||||
override suspend fun bindRefcodeWithWallets(conversionData: AppsFlyerConversionData) = withContext(dispatchers.io) {
|
||||
|
|
@ -49,6 +51,10 @@ internal class DefaultWalletsPromoRepository(
|
|||
}
|
||||
}
|
||||
|
||||
override suspend fun getReferralCodeIfExists(): String? {
|
||||
return appsFlyerStore.get()?.refcode
|
||||
}
|
||||
|
||||
private suspend fun getSavedBindingData(): ReferralWalletsBindingData? {
|
||||
return appPreferencesStore.getObjectSyncOrNull(key = REFERRAL_WALLETS_BINDING_DATA_KEY)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -76,12 +76,14 @@ internal object WalletsDataModule {
|
|||
tangemTechApi: TangemTechApi,
|
||||
userWalletsStore: UserWalletsStore,
|
||||
dispatchers: CoroutineDispatcherProvider,
|
||||
appsFlyerStore: AppsFlyerStore,
|
||||
): WalletsPromoRepository {
|
||||
return DefaultWalletsPromoRepository(
|
||||
appPreferencesStore = appPreferencesStore,
|
||||
tangemTechApi = tangemTechApi,
|
||||
userWalletsStore = userWalletsStore,
|
||||
dispatchers = dispatchers,
|
||||
appsFlyerStore = appsFlyerStore,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,4 +7,6 @@ interface WalletsPromoRepository {
|
|||
suspend fun bindRefcodeWithWallets(conversionData: AppsFlyerConversionData)
|
||||
|
||||
suspend fun retryBindRefcodeWithWallets()
|
||||
|
||||
suspend fun getReferralCodeIfExists(): String?
|
||||
}
|
||||
|
|
@ -1,18 +1,23 @@
|
|||
package com.tangem.domain.wallets.usecase
|
||||
|
||||
import com.tangem.common.TangemSiteUrlBuilder
|
||||
import com.tangem.domain.wallets.repository.WalletsPromoRepository
|
||||
import java.util.Locale
|
||||
|
||||
class GenerateBuyTangemCardLinkUseCase {
|
||||
class GenerateBuyTangemCardLinkUseCase(
|
||||
private val walletsPromoRepository: WalletsPromoRepository,
|
||||
) {
|
||||
|
||||
suspend operator fun invoke(source: Source): String {
|
||||
return invoke(source.utmCampaign)
|
||||
}
|
||||
|
||||
suspend operator fun invoke(utmCampaign: String?): String {
|
||||
val refCode = walletsPromoRepository.getReferralCodeIfExists()
|
||||
val refCodeTag = TangemSiteUrlBuilder.getRefCodeTag(refCode)
|
||||
val langCode = Locale.getDefault().language
|
||||
val utmTags = TangemSiteUrlBuilder.getUtmTags(utmCampaign)
|
||||
return "https://buy.tangem.com/$langCode?$utmTags"
|
||||
return "https://buy.tangem.com/$langCode?$utmTags&$refCodeTag"
|
||||
}
|
||||
|
||||
enum class Source(val utmCampaign: String) {
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ dependencies {
|
|||
implementation(projects.core.analytics.models)
|
||||
implementation(projects.common.routing)
|
||||
implementation(projects.common.ui)
|
||||
implementation(projects.core.datasource)
|
||||
|
||||
/* Project - Domain */
|
||||
implementation(projects.domain.models)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue