Updated on 2026-08-14
This commit is contained in:
parent
58428d773b
commit
d77875be51
15 changed files with 414 additions and 53 deletions
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
@ -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)
|
||||
}
|
||||
|
|
@ -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,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
@ -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?,
|
||||
)
|
||||
Loading…
Add table
Add a link
Reference in a new issue