From 64cd1ae5a9ed9418ac1ead1e2296762521b45efb Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 26 Jan 2026 20:34:55 +0400 Subject: [PATCH] Updated on 2026-08-14 --- .../AppsFlyerReferralParamsHandler.kt | 6 ++-- .../appsflyer/AppsFlyerAnalyticsClient.kt | 21 +++++++++++ .../AppsFlyerReferralParamsHandlerTest.kt | 16 ++++----- .../NotificationApplicationCreateBody.kt | 1 + .../di/AppsFlyerConversionStoreModule.kt | 8 ++--- ...erConversionStore.kt => AppsFlyerStore.kt} | 6 +++- ...rsionStore.kt => DefaultAppsFlyerStore.kt} | 35 ++++++++++++++----- .../data/common/currency/UserTokensSaver.kt | 6 ++-- .../tangem/data/common/di/DataCommonModule.kt | 10 +++--- .../wallet/DefaultWalletServerBinder.kt | 6 ++-- .../common/currency/UserTokensSaverTest.kt | 6 ++-- .../wallet/DefaultWalletServerBinderTest.kt | 34 +++++++++--------- .../DefaultPushNotificationsRepository.kt | 10 ++++-- .../DefaultPushNotificationsRepositoryTest.kt | 17 ++++++--- .../data/wallets/DefaultWalletsRepository.kt | 6 ++-- .../data/wallets/di/WalletsDataModule.kt | 6 ++-- .../wallets/DefaultWalletsRepositoryTest.kt | 12 +++---- .../deeplink/DefaultPromoDeeplinkHandler.kt | 6 ++-- .../DefaultPromoDeeplinkHandlerTest.kt | 32 ++++++++--------- 19 files changed, 149 insertions(+), 95 deletions(-) rename core/datasource/src/main/java/com/tangem/datasource/local/appsflyer/{AppsFlyerConversionStore.kt => AppsFlyerStore.kt} (71%) rename core/datasource/src/main/java/com/tangem/datasource/local/appsflyer/{DefaultAppsFlyerConversionStore.kt => DefaultAppsFlyerStore.kt} (53%) diff --git a/app/src/main/java/com/tangem/tap/common/analytics/appsflyer/AppsFlyerReferralParamsHandler.kt b/app/src/main/java/com/tangem/tap/common/analytics/appsflyer/AppsFlyerReferralParamsHandler.kt index 21c04dbcac..ed1ca3be0a 100644 --- a/app/src/main/java/com/tangem/tap/common/analytics/appsflyer/AppsFlyerReferralParamsHandler.kt +++ b/app/src/main/java/com/tangem/tap/common/analytics/appsflyer/AppsFlyerReferralParamsHandler.kt @@ -1,7 +1,7 @@ package com.tangem.tap.common.analytics.appsflyer import com.appsflyer.deeplink.DeepLink -import com.tangem.datasource.local.appsflyer.AppsFlyerConversionStore +import com.tangem.datasource.local.appsflyer.AppsFlyerStore import com.tangem.domain.wallets.models.AppsFlyerConversionData import com.tangem.utils.coroutines.CoroutineDispatcherProvider import kotlinx.coroutines.CoroutineScope @@ -17,7 +17,7 @@ import kotlin.contracts.contract @Singleton class AppsFlyerReferralParamsHandler @Inject constructor( - private val appsFlyerConversionStore: AppsFlyerConversionStore, + private val appsFlyerStore: AppsFlyerStore, dispatchers: CoroutineDispatcherProvider, ) { @@ -69,7 +69,7 @@ class AppsFlyerReferralParamsHandler @Inject constructor( private fun storeConversionData(refcode: String, campaign: String?) { coroutineScope.launch { mutex.withLock { - appsFlyerConversionStore.storeIfAbsent( + appsFlyerStore.storeIfAbsent( value = AppsFlyerConversionData(refcode = refcode, campaign = campaign), ) } diff --git a/app/src/main/java/com/tangem/tap/common/analytics/handlers/appsflyer/AppsFlyerAnalyticsClient.kt b/app/src/main/java/com/tangem/tap/common/analytics/handlers/appsflyer/AppsFlyerAnalyticsClient.kt index 77227aa7c2..f5aa24257d 100644 --- a/app/src/main/java/com/tangem/tap/common/analytics/handlers/appsflyer/AppsFlyerAnalyticsClient.kt +++ b/app/src/main/java/com/tangem/tap/common/analytics/handlers/appsflyer/AppsFlyerAnalyticsClient.kt @@ -5,13 +5,18 @@ import com.appsflyer.AppsFlyerLib import com.appsflyer.attribution.AppsFlyerRequestListener import com.tangem.core.analytics.api.EventLogger import com.tangem.core.analytics.api.UserIdHolder +import com.tangem.datasource.local.appsflyer.AppsFlyerStore import com.tangem.tap.common.analytics.appsflyer.AppsFlyerDeepLinkListener import com.tangem.tap.common.analytics.appsflyer.TangemAFConversionListener import com.tangem.tap.common.analytics.handlers.firebase.UnderscoreAnalyticsEventConverter +import com.tangem.utils.coroutines.CoroutineDispatcherProvider import dagger.assisted.Assisted import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject import dagger.hilt.android.qualifiers.ApplicationContext +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.SupervisorJob +import kotlinx.coroutines.launch import timber.log.Timber interface AppsFlyerAnalyticsClient : EventLogger, UserIdHolder @@ -21,11 +26,15 @@ class AppsFlyerClient @AssistedInject constructor( @ApplicationContext private val context: Context, appsFlyerDeepLinkListener: AppsFlyerDeepLinkListener, tangemAFConversionListener: TangemAFConversionListener, + dispatchers: CoroutineDispatcherProvider, + private val appsFlyerStore: AppsFlyerStore, ) : AppsFlyerAnalyticsClient { private val appsFlyerLib: AppsFlyerLib = AppsFlyerLib.getInstance() private val eventConverter = UnderscoreAnalyticsEventConverter() + private val coroutineScope = CoroutineScope(SupervisorJob() + dispatchers.default) + init { with(appsFlyerLib) { setAppId(context.packageName) @@ -38,6 +47,8 @@ class AppsFlyerClient @AssistedInject constructor( Timber.i("Starting AppsFlyer SDK") start(context, apiKey, InitializationListener) Timber.i("AppsFlyer SDK started") + + saveUID() } } @@ -59,6 +70,16 @@ class AppsFlyerClient @AssistedInject constructor( ) } + private fun saveUID() { + coroutineScope.launch { + val appsFlyerUID = appsFlyerLib.getAppsFlyerUID(context) + + if (appsFlyerUID != null) { + appsFlyerStore.storeUIDIfAbsent(appsFlyerUID) + } + } + } + private object InitializationListener : AppsFlyerRequestListener { override fun onSuccess() { Timber.d("AppsFlyer initialized successfully") diff --git a/app/src/test/kotlin/com/tangem/tap/common/analytics/appsflyer/AppsFlyerReferralParamsHandlerTest.kt b/app/src/test/kotlin/com/tangem/tap/common/analytics/appsflyer/AppsFlyerReferralParamsHandlerTest.kt index 41e17cbddc..5b7dfd4403 100644 --- a/app/src/test/kotlin/com/tangem/tap/common/analytics/appsflyer/AppsFlyerReferralParamsHandlerTest.kt +++ b/app/src/test/kotlin/com/tangem/tap/common/analytics/appsflyer/AppsFlyerReferralParamsHandlerTest.kt @@ -1,7 +1,7 @@ package com.tangem.tap.common.analytics.appsflyer import com.appsflyer.deeplink.DeepLink -import com.tangem.datasource.local.appsflyer.AppsFlyerConversionStore +import com.tangem.datasource.local.appsflyer.AppsFlyerStore import com.tangem.domain.wallets.models.AppsFlyerConversionData import com.tangem.test.core.ProvideTestModels import com.tangem.utils.coroutines.TestingCoroutineDispatcherProvider @@ -21,15 +21,15 @@ import org.junit.jupiter.params.ParameterizedTest @TestInstance(TestInstance.Lifecycle.PER_CLASS) class AppsFlyerReferralParamsHandlerTest { - private val appsFlyerConversionStore: AppsFlyerConversionStore = mockk(relaxUnitFun = true) + private val appsFlyerStore: AppsFlyerStore = mockk(relaxUnitFun = true) private val handler = AppsFlyerReferralParamsHandler( - appsFlyerConversionStore = appsFlyerConversionStore, + appsFlyerStore = appsFlyerStore, dispatchers = TestingCoroutineDispatcherProvider(), ) @AfterEach fun tearDown() { - clearMocks(appsFlyerConversionStore) + clearMocks(appsFlyerStore) } @Nested @@ -43,9 +43,9 @@ class AppsFlyerReferralParamsHandlerTest { if (model.shouldStore) { val value = AppsFlyerConversionData(refcode = SUCCESS_REFCODE, campaign = SUCCESS_CAMPAIGN) - coVerify { appsFlyerConversionStore.storeIfAbsent(value = value) } + coVerify { appsFlyerStore.storeIfAbsent(value = value) } } else { - coVerify(inverse = true) { appsFlyerConversionStore.storeIfAbsent(value = any()) } + coVerify(inverse = true) { appsFlyerStore.storeIfAbsent(value = any()) } } } @@ -112,9 +112,9 @@ class AppsFlyerReferralParamsHandlerTest { if (model.shouldStore) { val value = AppsFlyerConversionData(refcode = SUCCESS_REFCODE, campaign = SUCCESS_CAMPAIGN) - coVerify { appsFlyerConversionStore.storeIfAbsent(value = value) } + coVerify { appsFlyerStore.storeIfAbsent(value = value) } } else { - coVerify(inverse = true) { appsFlyerConversionStore.storeIfAbsent(value = any()) } + coVerify(inverse = true) { appsFlyerStore.storeIfAbsent(value = any()) } } } diff --git a/core/datasource/src/main/java/com/tangem/datasource/api/tangemTech/models/NotificationApplicationCreateBody.kt b/core/datasource/src/main/java/com/tangem/datasource/api/tangemTech/models/NotificationApplicationCreateBody.kt index cd8e66f46e..a4742dfeaf 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/api/tangemTech/models/NotificationApplicationCreateBody.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/api/tangemTech/models/NotificationApplicationCreateBody.kt @@ -12,4 +12,5 @@ data class NotificationApplicationCreateBody( @Json(name = "version") val version: String? = null, @Json(name = "language") val language: String? = null, @Json(name = "timezone") val timezone: String? = null, + @Json(name = "appsflyerId") val appsflyerId: String? = null, ) \ No newline at end of file diff --git a/core/datasource/src/main/java/com/tangem/datasource/di/AppsFlyerConversionStoreModule.kt b/core/datasource/src/main/java/com/tangem/datasource/di/AppsFlyerConversionStoreModule.kt index d9222d32e3..8ef5043106 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/di/AppsFlyerConversionStoreModule.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/di/AppsFlyerConversionStoreModule.kt @@ -1,7 +1,7 @@ package com.tangem.datasource.di -import com.tangem.datasource.local.appsflyer.AppsFlyerConversionStore -import com.tangem.datasource.local.appsflyer.DefaultAppsFlyerConversionStore +import com.tangem.datasource.local.appsflyer.AppsFlyerStore +import com.tangem.datasource.local.appsflyer.DefaultAppsFlyerStore import com.tangem.datasource.local.preferences.AppPreferencesStore import dagger.Module import dagger.Provides @@ -15,7 +15,7 @@ internal object AppsFlyerConversionStoreModule { @Provides @Singleton - fun provideAppFlyerConversionStore(appPreferencesStore: AppPreferencesStore): AppsFlyerConversionStore { - return DefaultAppsFlyerConversionStore(appPreferencesStore = appPreferencesStore) + fun provideAppFlyerStore(appPreferencesStore: AppPreferencesStore): AppsFlyerStore { + return DefaultAppsFlyerStore(appPreferencesStore = appPreferencesStore) } } \ No newline at end of file diff --git a/core/datasource/src/main/java/com/tangem/datasource/local/appsflyer/AppsFlyerConversionStore.kt b/core/datasource/src/main/java/com/tangem/datasource/local/appsflyer/AppsFlyerStore.kt similarity index 71% rename from core/datasource/src/main/java/com/tangem/datasource/local/appsflyer/AppsFlyerConversionStore.kt rename to core/datasource/src/main/java/com/tangem/datasource/local/appsflyer/AppsFlyerStore.kt index 300c4c6f20..42ba74a49e 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/local/appsflyer/AppsFlyerConversionStore.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/local/appsflyer/AppsFlyerStore.kt @@ -2,11 +2,15 @@ package com.tangem.datasource.local.appsflyer import com.tangem.domain.wallets.models.AppsFlyerConversionData -interface AppsFlyerConversionStore { +interface AppsFlyerStore { suspend fun get(): AppsFlyerConversionData? + suspend fun getUID(): String? + suspend fun store(value: AppsFlyerConversionData) suspend fun storeIfAbsent(value: AppsFlyerConversionData) + + suspend fun storeUIDIfAbsent(value: String) } \ No newline at end of file diff --git a/core/datasource/src/main/java/com/tangem/datasource/local/appsflyer/DefaultAppsFlyerConversionStore.kt b/core/datasource/src/main/java/com/tangem/datasource/local/appsflyer/DefaultAppsFlyerStore.kt similarity index 53% rename from core/datasource/src/main/java/com/tangem/datasource/local/appsflyer/DefaultAppsFlyerConversionStore.kt rename to core/datasource/src/main/java/com/tangem/datasource/local/appsflyer/DefaultAppsFlyerStore.kt index c6a8044516..bc349dac1c 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/local/appsflyer/DefaultAppsFlyerConversionStore.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/local/appsflyer/DefaultAppsFlyerStore.kt @@ -5,44 +5,61 @@ import com.squareup.moshi.Json import com.squareup.moshi.JsonClass import com.tangem.datasource.local.preferences.AppPreferencesStore import com.tangem.datasource.local.preferences.utils.getObjectSyncOrNull +import com.tangem.datasource.local.preferences.utils.getSyncOrNull import com.tangem.datasource.local.preferences.utils.storeObject import com.tangem.domain.wallets.models.AppsFlyerConversionData import timber.log.Timber -internal class DefaultAppsFlyerConversionStore( +internal class DefaultAppsFlyerStore( private val appPreferencesStore: AppPreferencesStore, -) : AppsFlyerConversionStore { +) : AppsFlyerStore { override suspend fun get(): AppsFlyerConversionData? { - val dto = appPreferencesStore.getObjectSyncOrNull(KEY) ?: return null + val dto = appPreferencesStore.getObjectSyncOrNull(CONVERSION_DATA_KEY) ?: return null return ConversionDataConverter.convertBack(value = dto).also { Timber.i("Getting conversion data from store: $it") } } + override suspend fun getUID(): String? = appPreferencesStore.getSyncOrNull(UID_KEY) + override suspend fun store(value: AppsFlyerConversionData) { Timber.i("Storing conversion data to store: $value") val dto = ConversionDataConverter.convert(value) - appPreferencesStore.storeObject(KEY, dto) + appPreferencesStore.storeObject(CONVERSION_DATA_KEY, dto) } override suspend fun storeIfAbsent(value: AppsFlyerConversionData) { Timber.i("Storing conversion data to store if absent: $value") + appPreferencesStore.editData { preferences -> + val saved = preferences[CONVERSION_DATA_KEY] - val dto = appPreferencesStore.getObjectSyncOrNull(KEY) + if (saved == null) { + Timber.i("Conversion data is absent, storing $value") + preferences.setObject(CONVERSION_DATA_KEY, ConversionDataConverter.convert(value)) + } + } + } - if (dto == null) { - Timber.i("Conversion data is absent, storing $value") - appPreferencesStore.storeObject(KEY, ConversionDataConverter.convert(value)) + override suspend fun storeUIDIfAbsent(value: String) { + Timber.i("Storing UID to store if absent: $value") + appPreferencesStore.editData { preferences -> + val saved = preferences[UID_KEY] + + if (saved == null) { + Timber.i("UID is absent, storing $value") + preferences[UID_KEY] = value + } } } private companion object { - val KEY = stringPreferencesKey("APPS_FLYER_CONVERSION_DATA") + val UID_KEY = stringPreferencesKey("APPS_FLYER_UID") + val CONVERSION_DATA_KEY = stringPreferencesKey("APPS_FLYER_CONVERSION_DATA") } } diff --git a/data/common/src/main/kotlin/com/tangem/data/common/currency/UserTokensSaver.kt b/data/common/src/main/kotlin/com/tangem/data/common/currency/UserTokensSaver.kt index e0ae509ee6..fbd5ac40a1 100644 --- a/data/common/src/main/kotlin/com/tangem/data/common/currency/UserTokensSaver.kt +++ b/data/common/src/main/kotlin/com/tangem/data/common/currency/UserTokensSaver.kt @@ -9,7 +9,7 @@ import com.tangem.datasource.api.common.response.isNetworkError import com.tangem.datasource.api.tangemTech.TangemTechApi import com.tangem.datasource.api.tangemTech.models.UserTokensResponse import com.tangem.datasource.api.tangemTech.models.WalletType -import com.tangem.datasource.local.appsflyer.AppsFlyerConversionStore +import com.tangem.datasource.local.appsflyer.AppsFlyerStore import com.tangem.datasource.local.token.UserTokensResponseStore import com.tangem.datasource.local.userwallet.UserWalletsStore import com.tangem.domain.account.featuretoggle.AccountsFeatureToggles @@ -29,7 +29,7 @@ class UserTokensSaver( private val dispatchers: CoroutineDispatcherProvider, private val addressesEnricher: UserTokensResponseAddressesEnricher, private val walletServerBinder: WalletServerBinder, - private val appsFlyerConversionStore: AppsFlyerConversionStore, + private val appsFlyerStore: AppsFlyerStore, private val accountsFeatureToggles: AccountsFeatureToggles, private val pushTokensRetryerPool: RetryerPool, ) { @@ -72,7 +72,7 @@ class UserTokensSaver( pushNew(userWallet = userWallet, response = enrichedResponse, onFailSend = onFailSend) } else { - val conversionData = appsFlyerConversionStore.get() + val conversionData = appsFlyerStore.get() val enrichedResponse = response.enrichIf(userWalletId = userWalletId, condition = useEnricher).copy( walletName = userWallet.name, diff --git a/data/common/src/main/kotlin/com/tangem/data/common/di/DataCommonModule.kt b/data/common/src/main/kotlin/com/tangem/data/common/di/DataCommonModule.kt index 9cc64b8160..c81b908703 100644 --- a/data/common/src/main/kotlin/com/tangem/data/common/di/DataCommonModule.kt +++ b/data/common/src/main/kotlin/com/tangem/data/common/di/DataCommonModule.kt @@ -10,7 +10,7 @@ import com.tangem.data.common.quote.QuotesFetcher import com.tangem.data.common.wallet.DefaultWalletServerBinder import com.tangem.data.common.wallet.WalletServerBinder import com.tangem.datasource.api.tangemTech.TangemTechApi -import com.tangem.datasource.local.appsflyer.AppsFlyerConversionStore +import com.tangem.datasource.local.appsflyer.AppsFlyerStore import com.tangem.datasource.local.preferences.AppPreferencesStore import com.tangem.datasource.local.token.UserTokensResponseStore import com.tangem.datasource.local.userwallet.UserWalletsStore @@ -76,7 +76,7 @@ internal object DataCommonModule { dispatchers: CoroutineDispatcherProvider, addressesEnricher: UserTokensResponseAddressesEnricher, walletServerBinder: WalletServerBinder, - appsFlyerConversionStore: AppsFlyerConversionStore, + appsFlyerStore: AppsFlyerStore, accountsFeatureToggles: AccountsFeatureToggles, ): UserTokensSaver { return UserTokensSaver( @@ -90,7 +90,7 @@ internal object DataCommonModule { coroutineScope = CoroutineScope(SupervisorJob() + dispatchers.default), ), walletServerBinder = walletServerBinder, - appsFlyerConversionStore = appsFlyerConversionStore, + appsFlyerStore = appsFlyerStore, ) } @@ -110,13 +110,13 @@ internal object DataCommonModule { @Singleton fun provideWalletServerBinder( userWalletsStore: UserWalletsStore, - appsFlyerConversionStore: AppsFlyerConversionStore, + appsFlyerStore: AppsFlyerStore, tangemTechApi: TangemTechApi, dispatchers: CoroutineDispatcherProvider, ): WalletServerBinder { return DefaultWalletServerBinder( userWalletsStore = userWalletsStore, - appsFlyerConversionStore = appsFlyerConversionStore, + appsFlyerStore = appsFlyerStore, tangemTechApi = tangemTechApi, dispatchers = dispatchers, ) diff --git a/data/common/src/main/kotlin/com/tangem/data/common/wallet/DefaultWalletServerBinder.kt b/data/common/src/main/kotlin/com/tangem/data/common/wallet/DefaultWalletServerBinder.kt index 376f29fb84..f34c04f916 100644 --- a/data/common/src/main/kotlin/com/tangem/data/common/wallet/DefaultWalletServerBinder.kt +++ b/data/common/src/main/kotlin/com/tangem/data/common/wallet/DefaultWalletServerBinder.kt @@ -3,7 +3,7 @@ package com.tangem.data.common.wallet import com.tangem.datasource.api.common.response.ApiResponse import com.tangem.datasource.api.tangemTech.TangemTechApi import com.tangem.datasource.api.tangemTech.converters.WalletIdBodyConverter -import com.tangem.datasource.local.appsflyer.AppsFlyerConversionStore +import com.tangem.datasource.local.appsflyer.AppsFlyerStore import com.tangem.datasource.local.userwallet.UserWalletsStore import com.tangem.domain.models.wallet.UserWallet import com.tangem.domain.models.wallet.UserWalletId @@ -12,7 +12,7 @@ import kotlinx.coroutines.withContext internal class DefaultWalletServerBinder( private val userWalletsStore: UserWalletsStore, - private val appsFlyerConversionStore: AppsFlyerConversionStore, + private val appsFlyerStore: AppsFlyerStore, private val tangemTechApi: TangemTechApi, private val dispatchers: CoroutineDispatcherProvider, ) : WalletServerBinder { @@ -24,7 +24,7 @@ internal class DefaultWalletServerBinder( } override suspend fun bind(userWallet: UserWallet): ApiResponse { - val conversionData = appsFlyerConversionStore.get() + val conversionData = appsFlyerStore.get() return withContext(dispatchers.io) { tangemTechApi.createWallet( diff --git a/data/common/src/test/kotlin/com/tangem/data/common/currency/UserTokensSaverTest.kt b/data/common/src/test/kotlin/com/tangem/data/common/currency/UserTokensSaverTest.kt index 64fe198777..dec3ba2885 100644 --- a/data/common/src/test/kotlin/com/tangem/data/common/currency/UserTokensSaverTest.kt +++ b/data/common/src/test/kotlin/com/tangem/data/common/currency/UserTokensSaverTest.kt @@ -6,7 +6,7 @@ import com.tangem.datasource.api.common.response.ApiResponseError import com.tangem.datasource.api.tangemTech.TangemTechApi import com.tangem.datasource.api.tangemTech.models.UserTokensResponse import com.tangem.datasource.api.tangemTech.models.WalletType -import com.tangem.datasource.local.appsflyer.AppsFlyerConversionStore +import com.tangem.datasource.local.appsflyer.AppsFlyerStore import com.tangem.datasource.local.token.UserTokensResponseStore import com.tangem.datasource.local.userwallet.UserWalletsStore import com.tangem.domain.account.featuretoggle.AccountsFeatureToggles @@ -30,7 +30,7 @@ class UserTokensSaverTest { every { this@mockk.isFeatureEnabled } returns true } private val walletServerBinder: WalletServerBinder = mockk() - private val appsFlyerConversionStore: AppsFlyerConversionStore = mockk() + private val appsFlyerStore: AppsFlyerStore = mockk() private val userTokensSaver: UserTokensSaver = UserTokensSaver( tangemTechApi = tangemTechApi, @@ -39,7 +39,7 @@ class UserTokensSaverTest { dispatchers = TestingCoroutineDispatcherProvider(), addressesEnricher = enricher, walletServerBinder = walletServerBinder, - appsFlyerConversionStore = appsFlyerConversionStore, + appsFlyerStore = appsFlyerStore, accountsFeatureToggles = accountsFeatureToggles, pushTokensRetryerPool = mockk(), ) diff --git a/data/common/src/test/kotlin/com/tangem/data/common/wallet/DefaultWalletServerBinderTest.kt b/data/common/src/test/kotlin/com/tangem/data/common/wallet/DefaultWalletServerBinderTest.kt index 620f841b4a..6da352653b 100644 --- a/data/common/src/test/kotlin/com/tangem/data/common/wallet/DefaultWalletServerBinderTest.kt +++ b/data/common/src/test/kotlin/com/tangem/data/common/wallet/DefaultWalletServerBinderTest.kt @@ -6,7 +6,7 @@ import com.tangem.datasource.api.common.response.ApiResponseError import com.tangem.datasource.api.tangemTech.TangemTechApi import com.tangem.datasource.api.tangemTech.models.WalletIdBody import com.tangem.datasource.api.tangemTech.models.WalletType -import com.tangem.datasource.local.appsflyer.AppsFlyerConversionStore +import com.tangem.datasource.local.appsflyer.AppsFlyerStore import com.tangem.datasource.local.userwallet.UserWalletsStore import com.tangem.domain.models.wallet.UserWallet import com.tangem.domain.models.wallet.UserWalletId @@ -27,13 +27,13 @@ import org.junit.jupiter.api.TestInstance internal class DefaultWalletServerBinderTest { private val userWalletsStore: UserWalletsStore = mockk() - private val appsFlyerConversionStore: AppsFlyerConversionStore = mockk() + private val appsFlyerStore: AppsFlyerStore = mockk() private val tangemTechApi: TangemTechApi = mockk() private val dispatchers: CoroutineDispatcherProvider = TestingCoroutineDispatcherProvider() private val binder = DefaultWalletServerBinder( userWalletsStore = userWalletsStore, - appsFlyerConversionStore = appsFlyerConversionStore, + appsFlyerStore = appsFlyerStore, tangemTechApi = tangemTechApi, dispatchers = dispatchers ) @@ -47,7 +47,7 @@ internal class DefaultWalletServerBinderTest { @AfterEach fun tearDown() { - clearMocks(userWalletsStore, appsFlyerConversionStore, tangemTechApi) + clearMocks(userWalletsStore, appsFlyerStore, tangemTechApi) } @Nested @@ -66,7 +66,7 @@ internal class DefaultWalletServerBinderTest { val apiResponse = ApiResponse.Success(Unit) coEvery { userWalletsStore.getSyncOrNull(userWalletId) } returns userWallet - coEvery { appsFlyerConversionStore.get() } returns conversionData + coEvery { appsFlyerStore.get() } returns conversionData coEvery { tangemTechApi.createWallet(requestBody) } returns apiResponse val actual = binder.bind(userWalletId = userWalletId) @@ -75,7 +75,7 @@ internal class DefaultWalletServerBinderTest { coVerifyOrder { userWalletsStore.getSyncOrNull(userWalletId) - appsFlyerConversionStore.get() + appsFlyerStore.get() tangemTechApi.createWallet(requestBody) } } @@ -93,7 +93,7 @@ internal class DefaultWalletServerBinderTest { } coVerify(inverse = true) { - appsFlyerConversionStore.get() + appsFlyerStore.get() tangemTechApi.createWallet(any()) } } @@ -108,7 +108,7 @@ internal class DefaultWalletServerBinderTest { val apiResponse = ApiResponse.Success(Unit) coEvery { userWalletsStore.getSyncOrNull(userWalletId) } returns userWallet - coEvery { appsFlyerConversionStore.get() } returns null + coEvery { appsFlyerStore.get() } returns null coEvery { tangemTechApi.createWallet(requestBody) } returns apiResponse val actual = binder.bind(userWalletId = userWalletId) @@ -117,7 +117,7 @@ internal class DefaultWalletServerBinderTest { coVerifyOrder { userWalletsStore.getSyncOrNull(userWalletId) - appsFlyerConversionStore.get() + appsFlyerStore.get() tangemTechApi.createWallet(requestBody) } } @@ -134,7 +134,7 @@ internal class DefaultWalletServerBinderTest { val apiResponse = ApiResponse.Error(ApiResponseError.TimeoutException()) as ApiResponse coEvery { userWalletsStore.getSyncOrNull(userWalletId) } returns userWallet - coEvery { appsFlyerConversionStore.get() } returns conversionData + coEvery { appsFlyerStore.get() } returns conversionData coEvery { tangemTechApi.createWallet(requestBody) } returns apiResponse val actual = binder.bind(userWalletId = userWalletId) @@ -143,7 +143,7 @@ internal class DefaultWalletServerBinderTest { coVerifyOrder { userWalletsStore.getSyncOrNull(userWalletId) - appsFlyerConversionStore.get() + appsFlyerStore.get() tangemTechApi.createWallet(requestBody) } } @@ -164,7 +164,7 @@ internal class DefaultWalletServerBinderTest { ) val apiResponse = ApiResponse.Success(Unit) - coEvery { appsFlyerConversionStore.get() } returns conversionData + coEvery { appsFlyerStore.get() } returns conversionData coEvery { tangemTechApi.createWallet(requestBody) } returns apiResponse val actual = binder.bind(userWallet = userWallet) @@ -172,7 +172,7 @@ internal class DefaultWalletServerBinderTest { Truth.assertThat(actual).isEqualTo(apiResponse) coVerifyOrder { - appsFlyerConversionStore.get() + appsFlyerStore.get() tangemTechApi.createWallet(requestBody) } } @@ -186,7 +186,7 @@ internal class DefaultWalletServerBinderTest { ) val apiResponse = ApiResponse.Success(Unit) - coEvery { appsFlyerConversionStore.get() } returns null + coEvery { appsFlyerStore.get() } returns null coEvery { tangemTechApi.createWallet(requestBody) } returns apiResponse val actual = binder.bind(userWallet = userWallet) @@ -194,7 +194,7 @@ internal class DefaultWalletServerBinderTest { Truth.assertThat(actual).isEqualTo(apiResponse) coVerifyOrder { - appsFlyerConversionStore.get() + appsFlyerStore.get() tangemTechApi.createWallet(requestBody) } } @@ -210,7 +210,7 @@ internal class DefaultWalletServerBinderTest { ) val apiResponse = ApiResponse.Error(ApiResponseError.TimeoutException()) as ApiResponse - coEvery { appsFlyerConversionStore.get() } returns conversionData + coEvery { appsFlyerStore.get() } returns conversionData coEvery { tangemTechApi.createWallet(requestBody) } returns apiResponse val actual = binder.bind(userWallet = userWallet) @@ -218,7 +218,7 @@ internal class DefaultWalletServerBinderTest { Truth.assertThat(actual).isEqualTo(apiResponse) coVerifyOrder { - appsFlyerConversionStore.get() + appsFlyerStore.get() tangemTechApi.createWallet(requestBody) } } diff --git a/data/notifications/src/main/java/com/tangem/data/notifications/DefaultPushNotificationsRepository.kt b/data/notifications/src/main/java/com/tangem/data/notifications/DefaultPushNotificationsRepository.kt index f01830c332..f2ccf3954d 100644 --- a/data/notifications/src/main/java/com/tangem/data/notifications/DefaultPushNotificationsRepository.kt +++ b/data/notifications/src/main/java/com/tangem/data/notifications/DefaultPushNotificationsRepository.kt @@ -4,14 +4,16 @@ import com.tangem.data.notifications.converters.NotificationsEligibleNetworkConv import com.tangem.datasource.api.common.response.getOrThrow import com.tangem.datasource.api.tangemTech.TangemTechApi import com.tangem.datasource.api.tangemTech.models.NotificationApplicationCreateBody -import com.tangem.utils.info.AppInfoProvider +import com.tangem.datasource.local.appsflyer.AppsFlyerStore import com.tangem.datasource.local.preferences.AppPreferencesStore import com.tangem.datasource.local.preferences.PreferencesKeys -import com.tangem.datasource.local.preferences.utils.* +import com.tangem.datasource.local.preferences.utils.getSyncOrNull +import com.tangem.datasource.local.preferences.utils.store import com.tangem.domain.notifications.models.ApplicationId -import com.tangem.domain.notifications.repository.PushNotificationsRepository import com.tangem.domain.notifications.models.NotificationsEligibleNetwork +import com.tangem.domain.notifications.repository.PushNotificationsRepository import com.tangem.utils.coroutines.CoroutineDispatcherProvider +import com.tangem.utils.info.AppInfoProvider import kotlinx.coroutines.withContext import javax.inject.Inject @@ -19,6 +21,7 @@ internal class DefaultPushNotificationsRepository @Inject constructor( private val tangemTechApi: TangemTechApi, private val appInfoProvider: AppInfoProvider, private val appPreferencesStore: AppPreferencesStore, + private val appsFlyerStore: AppsFlyerStore, private val dispatchers: CoroutineDispatcherProvider, ) : PushNotificationsRepository { @@ -32,6 +35,7 @@ internal class DefaultPushNotificationsRepository @Inject constructor( timezone = appInfoProvider.timezone, version = appInfoProvider.appVersion, pushToken = pushToken, + appsflyerId = appsFlyerStore.getUID(), ), ).getOrThrow().appId diff --git a/data/notifications/src/test/java/com/tangem/data/notifications/DefaultPushNotificationsRepositoryTest.kt b/data/notifications/src/test/java/com/tangem/data/notifications/DefaultPushNotificationsRepositoryTest.kt index b423cb27ed..fafefdb60a 100644 --- a/data/notifications/src/test/java/com/tangem/data/notifications/DefaultPushNotificationsRepositoryTest.kt +++ b/data/notifications/src/test/java/com/tangem/data/notifications/DefaultPushNotificationsRepositoryTest.kt @@ -3,17 +3,20 @@ package com.tangem.data.notifications import androidx.datastore.core.DataStore import androidx.datastore.preferences.core.Preferences import androidx.datastore.preferences.core.stringPreferencesKey -import com.tangem.datasource.api.tangemTech.TangemTechApi -import com.tangem.utils.info.AppInfoProvider -import com.tangem.datasource.local.preferences.AppPreferencesStore -import com.tangem.datasource.local.preferences.PreferencesKeys import com.google.common.truth.Truth.assertThat import com.squareup.moshi.Moshi import com.tangem.data.notifications.converters.NotificationsEligibleNetworkConverter import com.tangem.datasource.api.common.response.ApiResponse -import com.tangem.datasource.api.tangemTech.models.* +import com.tangem.datasource.api.tangemTech.TangemTechApi +import com.tangem.datasource.api.tangemTech.models.CryptoNetworkResponse +import com.tangem.datasource.api.tangemTech.models.NotificationApplicationCreateBody +import com.tangem.datasource.api.tangemTech.models.NotificationApplicationIdResponse +import com.tangem.datasource.local.appsflyer.AppsFlyerStore +import com.tangem.datasource.local.preferences.AppPreferencesStore +import com.tangem.datasource.local.preferences.PreferencesKeys import com.tangem.domain.notifications.models.ApplicationId import com.tangem.utils.coroutines.TestingCoroutineDispatcherProvider +import com.tangem.utils.info.AppInfoProvider import io.mockk.coEvery import io.mockk.coVerify import io.mockk.every @@ -31,10 +34,12 @@ class DefaultPushNotificationsRepositoryTest { dispatchers = TestingCoroutineDispatcherProvider(), preferencesDataStore = preferencesDataStore, ) + private val appsFlyerStore: AppsFlyerStore = mockk() private val repository = DefaultPushNotificationsRepository( tangemTechApi = tangemTechApi, appInfoProvider = appInfoProvider, appPreferencesStore = appPreferencesStore, + appsFlyerStore = appsFlyerStore, dispatchers = TestingCoroutineDispatcherProvider(), ) @@ -52,6 +57,7 @@ class DefaultPushNotificationsRepositoryTest { coEvery { appInfoProvider.language } returns "en" coEvery { appInfoProvider.appVersion } returns "5.21.1" coEvery { appInfoProvider.timezone } returns "UTC" + coEvery { appsFlyerStore.getUID() } returns "UID" coEvery { tangemTechApi.createApplicationId(any()) } returns ApiResponse.Success( expectedAppIdResponse, ) @@ -71,6 +77,7 @@ class DefaultPushNotificationsRepositoryTest { timezone = "UTC", version = "5.21.1", pushToken = pushToken, + appsflyerId = "UID", ), ) } diff --git a/data/wallets/src/main/java/com/tangem/data/wallets/DefaultWalletsRepository.kt b/data/wallets/src/main/java/com/tangem/data/wallets/DefaultWalletsRepository.kt index ab7d7a4c66..d2e807c047 100644 --- a/data/wallets/src/main/java/com/tangem/data/wallets/DefaultWalletsRepository.kt +++ b/data/wallets/src/main/java/com/tangem/data/wallets/DefaultWalletsRepository.kt @@ -15,7 +15,7 @@ import com.tangem.datasource.api.tangemTech.TangemTechApi import com.tangem.datasource.api.tangemTech.converters.WalletIdBodyConverter import com.tangem.datasource.api.tangemTech.models.* import com.tangem.datasource.api.tangemTech.models.SeedPhraseNotificationDTO.Status -import com.tangem.datasource.local.appsflyer.AppsFlyerConversionStore +import com.tangem.datasource.local.appsflyer.AppsFlyerStore import com.tangem.datasource.local.datastore.RuntimeStateStore import com.tangem.datasource.local.preferences.AppPreferencesStore import com.tangem.datasource.local.preferences.PreferencesKeys @@ -49,7 +49,7 @@ internal class DefaultWalletsRepository( private val dispatchers: CoroutineDispatcherProvider, private val authProvider: AuthProvider, private val walletServerBinder: WalletServerBinder, - private val appsFlyerConversionStore: AppsFlyerConversionStore, + private val appsFlyerStore: AppsFlyerStore, private val accountsFeatureToggles: AccountsFeatureToggles, private val moshi: com.squareup.moshi.Moshi, ) : WalletsRepository { @@ -411,7 +411,7 @@ internal class DefaultWalletsRepository( associateApplicationIdWithWallets().getOrThrow() } } else { - val conversionData = appsFlyerConversionStore.get() + val conversionData = appsFlyerStore.get() val publicKeys = authProvider.getCardsPublicKeys() val walletsBody = wallets.map { userWallet -> WalletIdBodyConverter.convert( 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 b36b580da9..c5a72a7e5a 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 @@ -12,7 +12,7 @@ import com.tangem.data.wallets.hot.DefaultHotWalletAccessCodeAttemptsRepository import com.tangem.datasource.api.common.AuthProvider import com.tangem.datasource.api.tangemTech.TangemTechApi import com.tangem.datasource.di.NetworkMoshi -import com.tangem.datasource.local.appsflyer.AppsFlyerConversionStore +import com.tangem.datasource.local.appsflyer.AppsFlyerStore import com.tangem.datasource.local.datastore.RuntimeStateStore import com.tangem.datasource.local.preferences.AppPreferencesStore import com.tangem.datasource.local.userwallet.UserWalletsStore @@ -45,7 +45,7 @@ internal object WalletsDataModule { dispatchers: CoroutineDispatcherProvider, authProvider: AuthProvider, walletServerBinder: WalletServerBinder, - appsFlyerConversionStore: AppsFlyerConversionStore, + appsFlyerStore: AppsFlyerStore, accountsFeatureToggles: AccountsFeatureToggles, @NetworkMoshi moshi: Moshi, ): WalletsRepository { @@ -57,7 +57,7 @@ internal object WalletsDataModule { dispatchers = dispatchers, authProvider = authProvider, walletServerBinder = walletServerBinder, - appsFlyerConversionStore = appsFlyerConversionStore, + appsFlyerStore = appsFlyerStore, accountsFeatureToggles = accountsFeatureToggles, moshi = moshi, ) diff --git a/data/wallets/src/test/java/com/tangem/data/wallets/DefaultWalletsRepositoryTest.kt b/data/wallets/src/test/java/com/tangem/data/wallets/DefaultWalletsRepositoryTest.kt index 22bbfbdf5c..9fbe71c7a6 100644 --- a/data/wallets/src/test/java/com/tangem/data/wallets/DefaultWalletsRepositoryTest.kt +++ b/data/wallets/src/test/java/com/tangem/data/wallets/DefaultWalletsRepositoryTest.kt @@ -12,7 +12,7 @@ import com.tangem.datasource.api.tangemTech.TangemTechApi import com.tangem.datasource.api.tangemTech.models.PromocodeActivationBody import com.tangem.datasource.api.tangemTech.models.PromocodeActivationResponse import com.tangem.datasource.api.tangemTech.models.WalletResponse -import com.tangem.datasource.local.appsflyer.AppsFlyerConversionStore +import com.tangem.datasource.local.appsflyer.AppsFlyerStore import com.tangem.datasource.local.preferences.AppPreferencesStore import com.tangem.datasource.local.preferences.PreferencesKeys import com.tangem.domain.account.featuretoggle.AccountsFeatureToggles @@ -41,7 +41,7 @@ class DefaultWalletsRepositoryTest { private lateinit var tangemTechApi: TangemTechApi private lateinit var dispatchers: CoroutineDispatcherProvider private lateinit var walletServerBinder: WalletServerBinder - private lateinit var appsFlyerConversionStore: AppsFlyerConversionStore + private lateinit var appsFlyerStore: AppsFlyerStore private val testWalletId = UserWalletId("1234567890abcdef") @@ -49,7 +49,7 @@ class DefaultWalletsRepositoryTest { fun setup() { tangemTechApi = mockk() walletServerBinder = mockk() - appsFlyerConversionStore = mockk() + appsFlyerStore = mockk() dispatchers = TestingCoroutineDispatcherProvider() repository = DefaultWalletsRepository( appPreferencesStore = appPreferenceStore, @@ -59,7 +59,7 @@ class DefaultWalletsRepositoryTest { dispatchers = dispatchers, authProvider = mockk(), walletServerBinder = walletServerBinder, - appsFlyerConversionStore = appsFlyerConversionStore, + appsFlyerStore = appsFlyerStore, accountsFeatureToggles = mockk(), moshi = mockk(), ) @@ -227,12 +227,12 @@ class DefaultWalletsRepositoryTest { dispatchers = dispatchers, authProvider = authProvider, walletServerBinder = walletServerBinder, - appsFlyerConversionStore = appsFlyerConversionStore, + appsFlyerStore = appsFlyerStore, accountsFeatureToggles = accountsFeatureToggles, moshi = mockk(), ) - coEvery { appsFlyerConversionStore.get() } returns null + coEvery { appsFlyerStore.get() } returns null coEvery { tangemTechApi.associateApplicationIdWithWallets( diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/deeplink/DefaultPromoDeeplinkHandler.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/deeplink/DefaultPromoDeeplinkHandler.kt index 1592886d35..af455b27ac 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/deeplink/DefaultPromoDeeplinkHandler.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/deeplink/DefaultPromoDeeplinkHandler.kt @@ -10,7 +10,7 @@ import com.tangem.core.ui.extensions.mask import com.tangem.core.ui.extensions.resourceReference import com.tangem.core.ui.message.DialogMessage import com.tangem.core.ui.message.GlobalLoadingMessage -import com.tangem.datasource.local.appsflyer.AppsFlyerConversionStore +import com.tangem.datasource.local.appsflyer.AppsFlyerStore import com.tangem.domain.models.network.NetworkStatus import com.tangem.domain.models.wallet.UserWallet import com.tangem.domain.networks.multi.MultiNetworkStatusProducer @@ -48,7 +48,7 @@ internal class DefaultPromoDeeplinkHandler @AssistedInject constructor( private val multiWalletCryptoCurrenciesSupplier: MultiWalletCryptoCurrenciesSupplier, private val activateBitcoinPromocodeUseCase: ActivateBitcoinPromocodeUseCase, private val getSelectedWalletSyncUseCase: GetSelectedWalletSyncUseCase, - private val appsFlyerConversionStore: AppsFlyerConversionStore, + private val appsFlyerStore: AppsFlyerStore, private val bindRefcodeWithWalletUseCase: BindRefcodeWithWalletUseCase, private val analyticsEventsHandler: AnalyticsEventHandler, private val dispatchers: CoroutineDispatcherProvider, @@ -194,7 +194,7 @@ internal class DefaultPromoDeeplinkHandler @AssistedInject constructor( if (!refcode.isNullOrBlank()) { val conversionData = AppsFlyerConversionData(refcode = refcode, campaign = campaign) - appsFlyerConversionStore.storeIfAbsent(value = conversionData) + appsFlyerStore.storeIfAbsent(value = conversionData) bindRefcodeWithWalletUseCase(conversionData) .onLeft { Timber.e("Failed to bind refcode with wallets: $it") } diff --git a/features/wallet/impl/src/test/kotlin/com/tangem/feature/wallet/presentation/wallet/deeplink/DefaultPromoDeeplinkHandlerTest.kt b/features/wallet/impl/src/test/kotlin/com/tangem/feature/wallet/presentation/wallet/deeplink/DefaultPromoDeeplinkHandlerTest.kt index 1c8c5e7577..602c3cb5be 100644 --- a/features/wallet/impl/src/test/kotlin/com/tangem/feature/wallet/presentation/wallet/deeplink/DefaultPromoDeeplinkHandlerTest.kt +++ b/features/wallet/impl/src/test/kotlin/com/tangem/feature/wallet/presentation/wallet/deeplink/DefaultPromoDeeplinkHandlerTest.kt @@ -12,7 +12,7 @@ import com.tangem.core.decompose.ui.UiMessageSender import com.tangem.core.ui.extensions.TextReference import com.tangem.core.ui.extensions.resourceReference import com.tangem.core.ui.message.DialogMessage -import com.tangem.datasource.local.appsflyer.AppsFlyerConversionStore +import com.tangem.datasource.local.appsflyer.AppsFlyerStore import com.tangem.domain.models.StatusSource import com.tangem.domain.models.currency.CryptoCurrency import com.tangem.domain.models.network.Network @@ -72,7 +72,7 @@ class DefaultPromoDeeplinkHandlerTest { private lateinit var bindRefcodeWithWalletUseCase: BindRefcodeWithWalletUseCase @MockK - private lateinit var appsFlyerConversionStore: AppsFlyerConversionStore + private lateinit var appsFlyerStore: AppsFlyerStore private lateinit var messages: MutableList @@ -114,7 +114,7 @@ class DefaultPromoDeeplinkHandlerTest { activateBitcoinPromocodeUseCase = activateBitcoinPromocodeUseCase, getSelectedWalletSyncUseCase = getSelectedWalletSyncUseCase, bindRefcodeWithWalletUseCase = bindRefcodeWithWalletUseCase, - appsFlyerConversionStore = appsFlyerConversionStore, + appsFlyerStore = appsFlyerStore, analyticsEventsHandler = analyticsEventHandler, dispatchers = dispatcherProvider, ) @@ -148,7 +148,7 @@ class DefaultPromoDeeplinkHandlerTest { activateBitcoinPromocodeUseCase = activateBitcoinPromocodeUseCase, getSelectedWalletSyncUseCase = getSelectedWalletSyncUseCase, bindRefcodeWithWalletUseCase = bindRefcodeWithWalletUseCase, - appsFlyerConversionStore = appsFlyerConversionStore, + appsFlyerStore = appsFlyerStore, analyticsEventsHandler = analyticsEventHandler, dispatchers = TestingCoroutineDispatcherProvider(), ) @@ -181,7 +181,7 @@ class DefaultPromoDeeplinkHandlerTest { activateBitcoinPromocodeUseCase = activateBitcoinPromocodeUseCase, getSelectedWalletSyncUseCase = getSelectedWalletSyncUseCase, bindRefcodeWithWalletUseCase = bindRefcodeWithWalletUseCase, - appsFlyerConversionStore = appsFlyerConversionStore, + appsFlyerStore = appsFlyerStore, analyticsEventsHandler = analyticsEventHandler, dispatchers = TestingCoroutineDispatcherProvider(), ) @@ -220,7 +220,7 @@ class DefaultPromoDeeplinkHandlerTest { activateBitcoinPromocodeUseCase = activateBitcoinPromocodeUseCase, getSelectedWalletSyncUseCase = getSelectedWalletSyncUseCase, bindRefcodeWithWalletUseCase = bindRefcodeWithWalletUseCase, - appsFlyerConversionStore = appsFlyerConversionStore, + appsFlyerStore = appsFlyerStore, analyticsEventsHandler = analyticsEventHandler, dispatchers = dispatcherProvider, ) @@ -263,7 +263,7 @@ class DefaultPromoDeeplinkHandlerTest { activateBitcoinPromocodeUseCase = activateBitcoinPromocodeUseCase, getSelectedWalletSyncUseCase = getSelectedWalletSyncUseCase, bindRefcodeWithWalletUseCase = bindRefcodeWithWalletUseCase, - appsFlyerConversionStore = appsFlyerConversionStore, + appsFlyerStore = appsFlyerStore, analyticsEventsHandler = analyticsEventHandler, dispatchers = dispatcherProvider, ) @@ -381,7 +381,7 @@ class DefaultPromoDeeplinkHandlerTest { activateBitcoinPromocodeUseCase = activateBitcoinPromocodeUseCase, getSelectedWalletSyncUseCase = getSelectedWalletSyncUseCase, bindRefcodeWithWalletUseCase = bindRefcodeWithWalletUseCase, - appsFlyerConversionStore = appsFlyerConversionStore, + appsFlyerStore = appsFlyerStore, analyticsEventsHandler = analyticsEventHandler, dispatchers = dispatcherProvider, ) @@ -414,7 +414,7 @@ class DefaultPromoDeeplinkHandlerTest { activateBitcoinPromocodeUseCase = activateBitcoinPromocodeUseCase, getSelectedWalletSyncUseCase = getSelectedWalletSyncUseCase, bindRefcodeWithWalletUseCase = bindRefcodeWithWalletUseCase, - appsFlyerConversionStore = appsFlyerConversionStore, + appsFlyerStore = appsFlyerStore, analyticsEventsHandler = analyticsEventHandler, dispatchers = dispatcherProvider, ) @@ -456,7 +456,7 @@ class DefaultPromoDeeplinkHandlerTest { activateBitcoinPromocodeUseCase = activateBitcoinPromocodeUseCase, getSelectedWalletSyncUseCase = getSelectedWalletSyncUseCase, bindRefcodeWithWalletUseCase = bindRefcodeWithWalletUseCase, - appsFlyerConversionStore = appsFlyerConversionStore, + appsFlyerStore = appsFlyerStore, analyticsEventsHandler = analyticsEventHandler, dispatchers = dispatcherProvider, ) @@ -519,7 +519,7 @@ class DefaultPromoDeeplinkHandlerTest { activateBitcoinPromocodeUseCase = activateBitcoinPromocodeUseCase, getSelectedWalletSyncUseCase = getSelectedWalletSyncUseCase, bindRefcodeWithWalletUseCase = bindRefcodeWithWalletUseCase, - appsFlyerConversionStore = appsFlyerConversionStore, + appsFlyerStore = appsFlyerStore, analyticsEventsHandler = analyticsEventHandler, dispatchers = dispatcherProvider, ) @@ -573,7 +573,7 @@ class DefaultPromoDeeplinkHandlerTest { activateBitcoinPromocodeUseCase = activateBitcoinPromocodeUseCase, getSelectedWalletSyncUseCase = getSelectedWalletSyncUseCase, bindRefcodeWithWalletUseCase = bindRefcodeWithWalletUseCase, - appsFlyerConversionStore = appsFlyerConversionStore, + appsFlyerStore = appsFlyerStore, analyticsEventsHandler = analyticsEventHandler, dispatchers = dispatcherProvider, ) @@ -633,7 +633,7 @@ class DefaultPromoDeeplinkHandlerTest { activateBitcoinPromocodeUseCase = activateBitcoinPromocodeUseCase, getSelectedWalletSyncUseCase = getSelectedWalletSyncUseCase, bindRefcodeWithWalletUseCase = bindRefcodeWithWalletUseCase, - appsFlyerConversionStore = appsFlyerConversionStore, + appsFlyerStore = appsFlyerStore, analyticsEventsHandler = analyticsEventHandler, dispatchers = dispatcherProvider, ) @@ -692,7 +692,7 @@ class DefaultPromoDeeplinkHandlerTest { activateBitcoinPromocodeUseCase = activateBitcoinPromocodeUseCase, getSelectedWalletSyncUseCase = getSelectedWalletSyncUseCase, bindRefcodeWithWalletUseCase = bindRefcodeWithWalletUseCase, - appsFlyerConversionStore = appsFlyerConversionStore, + appsFlyerStore = appsFlyerStore, analyticsEventsHandler = analyticsEventHandler, dispatchers = dispatcherProvider, ) @@ -747,7 +747,7 @@ class DefaultPromoDeeplinkHandlerTest { activateBitcoinPromocodeUseCase = activateBitcoinPromocodeUseCase, getSelectedWalletSyncUseCase = getSelectedWalletSyncUseCase, bindRefcodeWithWalletUseCase = bindRefcodeWithWalletUseCase, - appsFlyerConversionStore = appsFlyerConversionStore, + appsFlyerStore = appsFlyerStore, analyticsEventsHandler = analyticsEventHandler, dispatchers = dispatcherProvider, ) @@ -802,7 +802,7 @@ class DefaultPromoDeeplinkHandlerTest { activateBitcoinPromocodeUseCase = activateBitcoinPromocodeUseCase, getSelectedWalletSyncUseCase = getSelectedWalletSyncUseCase, bindRefcodeWithWalletUseCase = bindRefcodeWithWalletUseCase, - appsFlyerConversionStore = appsFlyerConversionStore, + appsFlyerStore = appsFlyerStore, analyticsEventsHandler = analyticsEventHandler, dispatchers = dispatcherProvider, )