Updated on 2026-08-14

This commit is contained in:
Tangem 2025-09-23 13:36:37 +03:00
parent bc8a0ba20d
commit a733dd0e52
13 changed files with 158 additions and 25 deletions

View file

@ -11,6 +11,10 @@ import com.tangem.datasource.local.onramp.paymentmethods.DefaultOnrampPaymentMet
import com.tangem.datasource.local.onramp.paymentmethods.OnrampPaymentMethodsStore
import com.tangem.datasource.local.onramp.quotes.DefaultOnrampQuotesStore
import com.tangem.datasource.local.onramp.quotes.OnrampQuotesStore
import com.tangem.datasource.local.onramp.sepa.DefaultOnrampCurrentCountryByIPStore
import com.tangem.datasource.local.onramp.sepa.DefaultOnrampSepaAvailabilityStore
import com.tangem.datasource.local.onramp.sepa.OnrampCurrentCountryByIPStore
import com.tangem.datasource.local.onramp.sepa.OnrampSepaAvailabilityStore
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
@ -50,4 +54,16 @@ internal object OnrampStoreModule {
fun provideOnrampCurrencies(): OnrampCurrenciesStore {
return DefaultOnrampCurrenciesStore(dataStore = RuntimeDataStore())
}
@Provides
@Singleton
fun provideOnrampSepaAvailableStore(): OnrampSepaAvailabilityStore {
return DefaultOnrampSepaAvailabilityStore(dataStore = RuntimeDataStore())
}
@Provides
@Singleton
fun provideOnrampCurrentCountryByIPStore(): OnrampCurrentCountryByIPStore {
return DefaultOnrampCurrentCountryByIPStore(dataStore = RuntimeDataStore())
}
}

View file

@ -0,0 +1,22 @@
package com.tangem.datasource.local.onramp.sepa
import com.tangem.datasource.local.datastore.core.StringKeyDataStore
import com.tangem.datasource.local.datastore.core.StringKeyDataStoreDecorator
import com.tangem.domain.onramp.model.OnrampCountry
internal class DefaultOnrampCurrentCountryByIPStore(
val dataStore: StringKeyDataStore<OnrampCountry>,
) : OnrampCurrentCountryByIPStore, StringKeyDataStoreDecorator<Unit, OnrampCountry>(
wrappedDataStore = dataStore,
) {
override suspend fun getSyncOrNull(): OnrampCountry? {
return getSyncOrNull(Unit)
}
override suspend fun store(value: OnrampCountry) {
return store(Unit, value)
}
override fun provideStringKey(key: Unit) = "KEY"
}

View file

@ -0,0 +1,20 @@
package com.tangem.datasource.local.onramp.sepa
import com.tangem.datasource.local.datastore.core.StringKeyDataStore
import com.tangem.datasource.local.datastore.core.StringKeyDataStoreDecorator
internal class DefaultOnrampSepaAvailabilityStore(
val dataStore: StringKeyDataStore<Boolean>,
) : OnrampSepaAvailabilityStore, StringKeyDataStoreDecorator<OnrampSepaAvailabilityStoreKey, Boolean>(
wrappedDataStore = dataStore,
) {
override fun provideStringKey(key: OnrampSepaAvailabilityStoreKey) = with(key) {
buildString {
append(userWallet.walletId.toString())
append("_")
append(country.code)
append("_")
append(cryptoCurrency.id.value)
}
}
}

View file

@ -0,0 +1,9 @@
package com.tangem.datasource.local.onramp.sepa
import com.tangem.domain.onramp.model.OnrampCountry
interface OnrampCurrentCountryByIPStore {
suspend fun getSyncOrNull(): OnrampCountry?
suspend fun store(value: OnrampCountry)
suspend fun clear()
}

View file

@ -0,0 +1,10 @@
package com.tangem.datasource.local.onramp.sepa
import kotlinx.coroutines.flow.Flow
interface OnrampSepaAvailabilityStore {
suspend fun getSyncOrNull(key: OnrampSepaAvailabilityStoreKey): Boolean?
fun get(key: OnrampSepaAvailabilityStoreKey): Flow<Boolean>
suspend fun store(key: OnrampSepaAvailabilityStoreKey, value: Boolean)
suspend fun clear()
}

View file

@ -0,0 +1,11 @@
package com.tangem.datasource.local.onramp.sepa
import com.tangem.domain.models.currency.CryptoCurrency
import com.tangem.domain.models.wallet.UserWallet
import com.tangem.domain.onramp.model.OnrampCountry
data class OnrampSepaAvailabilityStoreKey(
val userWallet: UserWallet,
val country: OnrampCountry,
val cryptoCurrency: CryptoCurrency,
)