From 72725adfa99a0d6b7c5ff47f3a0e78fe1da85b46 Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 12 Feb 2026 19:47:34 +0700 Subject: [PATCH 1/2] Updated on 2026-08-14 --- .../java/com/tangem/tap/di/domain/WalletsDomainModule.kt | 7 +++++-- .../kotlin/com/tangem/common/TangemSiteUrlBuilder.kt | 4 ++++ .../tangem/data/wallets/DefaultWalletsPromoRepository.kt | 6 ++++++ .../java/com/tangem/data/wallets/di/WalletsDataModule.kt | 2 ++ .../domain/wallets/repository/WalletsPromoRepository.kt | 2 ++ .../wallets/usecase/GenerateBuyTangemCardLinkUseCase.kt | 9 +++++++-- features/details/impl/build.gradle.kts | 1 + 7 files changed, 27 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/di/domain/WalletsDomainModule.kt b/app/src/main/java/com/tangem/tap/di/domain/WalletsDomainModule.kt index 53c7fa8abd..d84fe82788 100644 --- a/app/src/main/java/com/tangem/tap/di/domain/WalletsDomainModule.kt +++ b/app/src/main/java/com/tangem/tap/di/domain/WalletsDomainModule.kt @@ -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 diff --git a/common/src/main/kotlin/com/tangem/common/TangemSiteUrlBuilder.kt b/common/src/main/kotlin/com/tangem/common/TangemSiteUrlBuilder.kt index 573b95bdfb..6dc7f0d926 100644 --- a/common/src/main/kotlin/com/tangem/common/TangemSiteUrlBuilder.kt +++ b/common/src/main/kotlin/com/tangem/common/TangemSiteUrlBuilder.kt @@ -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)}" diff --git a/data/wallets/src/main/java/com/tangem/data/wallets/DefaultWalletsPromoRepository.kt b/data/wallets/src/main/java/com/tangem/data/wallets/DefaultWalletsPromoRepository.kt index de2bbc191e..ea64bbd90d 100644 --- a/data/wallets/src/main/java/com/tangem/data/wallets/DefaultWalletsPromoRepository.kt +++ b/data/wallets/src/main/java/com/tangem/data/wallets/DefaultWalletsPromoRepository.kt @@ -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) } diff --git a/data/wallets/src/main/java/com/tangem/data/wallets/di/WalletsDataModule.kt b/data/wallets/src/main/java/com/tangem/data/wallets/di/WalletsDataModule.kt index c5a72a7e5a..6eb367a7f4 100644 --- a/data/wallets/src/main/java/com/tangem/data/wallets/di/WalletsDataModule.kt +++ b/data/wallets/src/main/java/com/tangem/data/wallets/di/WalletsDataModule.kt @@ -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, ) } } diff --git a/domain/wallets/src/main/java/com/tangem/domain/wallets/repository/WalletsPromoRepository.kt b/domain/wallets/src/main/java/com/tangem/domain/wallets/repository/WalletsPromoRepository.kt index d14afae786..e3c7b0594d 100644 --- a/domain/wallets/src/main/java/com/tangem/domain/wallets/repository/WalletsPromoRepository.kt +++ b/domain/wallets/src/main/java/com/tangem/domain/wallets/repository/WalletsPromoRepository.kt @@ -7,4 +7,6 @@ interface WalletsPromoRepository { suspend fun bindRefcodeWithWallets(conversionData: AppsFlyerConversionData) suspend fun retryBindRefcodeWithWallets() + + suspend fun getReferralCodeIfExists(): String? } \ No newline at end of file diff --git a/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/GenerateBuyTangemCardLinkUseCase.kt b/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/GenerateBuyTangemCardLinkUseCase.kt index 7a7cac1d2b..b146be18d6 100644 --- a/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/GenerateBuyTangemCardLinkUseCase.kt +++ b/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/GenerateBuyTangemCardLinkUseCase.kt @@ -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) { diff --git a/features/details/impl/build.gradle.kts b/features/details/impl/build.gradle.kts index 8da459c047..bd2572246b 100644 --- a/features/details/impl/build.gradle.kts +++ b/features/details/impl/build.gradle.kts @@ -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) From 6252cc6a4b13c4acb4a7e0813eb4465a0fa26c54 Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 12 Feb 2026 12:47:55 +0000 Subject: [PATCH 2/2] Updated on 2026-08-14 --- gradle/tangem_dependencies.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gradle/tangem_dependencies.toml b/gradle/tangem_dependencies.toml index 4372af7f4b..6d72aefb0d 100644 --- a/gradle/tangem_dependencies.toml +++ b/gradle/tangem_dependencies.toml @@ -5,13 +5,13 @@ # https://github.com/tangem/tangem-sdk-android/ # https://github.com/tangem/vico -tangemBlockchainSdk = "releases-5.33-1423" +tangemBlockchainSdk = "develop-1425" #tangemBlockchainSdk = "0.0.1" # Keep it! - used for local builds -tangemCardSdk = "releases-5.33-576" +tangemCardSdk = "develop-577" #tangemCardSdk = "0.0.1" # Keep it! - used for local builds ^ tangemVico = "2.0.0-alpha.25-tangem12" #tangemVico = "0.0.1" # Keep it! - used for local builds ^ -tangemHotSdk = "develop-545" +tangemHotSdk = "develop-539" #tangemHotSdk = "0.0.1" # Keep it! - used for local builds ^