Updated on 2026-08-14

This commit is contained in:
Tangem 2026-01-13 10:51:26 +03:00
parent 58428d773b
commit d77875be51
15 changed files with 414 additions and 53 deletions

View file

@ -12,6 +12,8 @@ object WalletIdBodyConverter {
walletId = userWallet.walletId.stringValue,
name = userWallet.name,
walletType = WalletType.from(userWallet),
refcode = conversionData?.refcode,
campaign = conversionData?.campaign,
cards = publicKeys?.map { publicKeyById ->
CardInfoBody(
cardId = publicKeyById.key,

View file

@ -0,0 +1,21 @@
package com.tangem.datasource.di
import com.tangem.datasource.local.appsflyer.AppsFlyerConversionStore
import com.tangem.datasource.local.appsflyer.DefaultAppsFlyerConversionStore
import com.tangem.datasource.local.preferences.AppPreferencesStore
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
import javax.inject.Singleton
@Module
@InstallIn(SingletonComponent::class)
internal object AppsFlyerConversionStoreModule {
@Provides
@Singleton
fun provideAppFlyerConversionStore(appPreferencesStore: AppPreferencesStore): AppsFlyerConversionStore {
return DefaultAppsFlyerConversionStore(appPreferencesStore = appPreferencesStore)
}
}

View file

@ -0,0 +1,10 @@
package com.tangem.datasource.local.appsflyer
import com.tangem.domain.wallets.models.AppsFlyerConversionData
interface AppsFlyerConversionStore {
suspend fun get(): AppsFlyerConversionData?
suspend fun store(value: AppsFlyerConversionData)
}

View file

@ -0,0 +1,21 @@
package com.tangem.datasource.local.appsflyer
import com.tangem.domain.wallets.models.AppsFlyerConversionData
import com.tangem.utils.converter.TwoWayConverter
internal object ConversionDataConverter : TwoWayConverter<AppsFlyerConversionData, ConversionDataDTO> {
override fun convert(value: AppsFlyerConversionData): ConversionDataDTO {
return ConversionDataDTO(
refcode = value.refcode,
campaign = value.campaign,
)
}
override fun convertBack(value: ConversionDataDTO): AppsFlyerConversionData {
return AppsFlyerConversionData(
refcode = value.refcode,
campaign = value.campaign,
)
}
}

View file

@ -0,0 +1,42 @@
package com.tangem.datasource.local.appsflyer
import androidx.datastore.preferences.core.stringPreferencesKey
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.storeObject
import com.tangem.domain.wallets.models.AppsFlyerConversionData
import timber.log.Timber
internal class DefaultAppsFlyerConversionStore(
private val appPreferencesStore: AppPreferencesStore,
) : AppsFlyerConversionStore {
override suspend fun get(): AppsFlyerConversionData? {
val dto = appPreferencesStore.getObjectSyncOrNull<ConversionDataDTO>(KEY) ?: return null
return ConversionDataConverter.convertBack(value = dto).also {
Timber.i("Getting conversion data from store: $it")
}
}
override suspend fun store(value: AppsFlyerConversionData) {
Timber.i("Storing conversion data to store: $value")
val dto = ConversionDataConverter.convert(value)
appPreferencesStore.storeObject(KEY, dto)
}
private companion object {
val KEY = stringPreferencesKey("APPS_FLYER_CONVERSION_DATA")
}
}
@JsonClass(generateAdapter = true)
internal data class ConversionDataDTO(
@Json(name = "refcode") val refcode: String,
@Json(name = "campaign") val campaign: String?,
)