Updated on 2026-08-14

This commit is contained in:
Tangem 2023-12-18 18:03:12 +03:00
parent 9d14fb859f
commit 23416dba22
6 changed files with 16 additions and 21 deletions

View file

@ -45,7 +45,7 @@ object PreferencesKeys {
val IS_WALLET_SWAP_PROMO_SHOW_KEY by lazy { booleanPreferencesKey(name = "isWalletSwapPromoShown") } val IS_WALLET_SWAP_PROMO_SHOW_KEY by lazy { booleanPreferencesKey(name = "isWalletSwapPromoShown") }
val IS_TOKEN_SWAP_PROMO_SHOW_KEY by lazy { stringSetPreferencesKey(name = "isTokenSwapPromoShown") } val IS_TOKEN_SWAP_PROMO_SHOW_KEY by lazy { booleanPreferencesKey(name = "isTokenSwapPromoShown") }
} }
/** Preferences keys set that should be migrated from "PreferencesDataSource" to a new DataStore<Preferences> */ /** Preferences keys set that should be migrated from "PreferencesDataSource" to a new DataStore<Preferences> */

View file

@ -21,9 +21,9 @@ class DefaultSwapPromoRepository(
.map { it && checkPromoPeriod() } .map { it && checkPromoPeriod() }
} }
override fun isReadyToShowToken(userWalletId: String, currencyId: String): Flow<Boolean> { override fun isReadyToShowToken(): Flow<Boolean> {
return appPreferencesStore.get(IS_TOKEN_SWAP_PROMO_SHOW_KEY, emptySet()) return appPreferencesStore.get(IS_TOKEN_SWAP_PROMO_SHOW_KEY, true)
.map { !it.contains(userWalletId + currencyId) && checkPromoPeriod() } .map { it && checkPromoPeriod() }
} }
override suspend fun setNeverToShowWallet() { override suspend fun setNeverToShowWallet() {
@ -33,14 +33,11 @@ class DefaultSwapPromoRepository(
) )
} }
override suspend fun setNeverToShowToken(userWalletId: String, currencyId: String) { override suspend fun setNeverToShowToken() {
appPreferencesStore.editData { mutablePreferences -> appPreferencesStore.store(
val storesCurrencies = mutablePreferences.getOrDefault(IS_TOKEN_SWAP_PROMO_SHOW_KEY, emptySet()) key = IS_TOKEN_SWAP_PROMO_SHOW_KEY,
mutablePreferences.set( value = false,
key = IS_TOKEN_SWAP_PROMO_SHOW_KEY, )
value = storesCurrencies.toMutableSet().apply { add(userWalletId + currencyId) },
)
}
} }
private fun checkPromoPeriod(): Boolean { private fun checkPromoPeriod(): Boolean {

View file

@ -5,9 +5,7 @@ import kotlinx.coroutines.flow.Flow
class ShouldShowSwapPromoTokenUseCase(private val swapPromoRepository: SwapPromoRepository) { class ShouldShowSwapPromoTokenUseCase(private val swapPromoRepository: SwapPromoRepository) {
operator fun invoke(userWalletId: String, currencyId: String): Flow<Boolean> = operator fun invoke(): Flow<Boolean> = swapPromoRepository.isReadyToShowToken()
swapPromoRepository.isReadyToShowToken(userWalletId, currencyId)
suspend fun neverToShow(userWalletId: String, currencyId: String) = suspend fun neverToShow() = swapPromoRepository.setNeverToShowToken()
swapPromoRepository.setNeverToShowToken(userWalletId, currencyId)
} }

View file

@ -5,9 +5,9 @@ import kotlinx.coroutines.flow.Flow
interface SwapPromoRepository { interface SwapPromoRepository {
fun isReadyToShowWallet(): Flow<Boolean> fun isReadyToShowWallet(): Flow<Boolean>
fun isReadyToShowToken(userWalletId: String, currencyId: String): Flow<Boolean> fun isReadyToShowToken(): Flow<Boolean>
suspend fun setNeverToShowWallet() suspend fun setNeverToShowWallet()
suspend fun setNeverToShowToken(userWalletId: String, currencyId: String) suspend fun setNeverToShowToken()
} }

View file

@ -85,7 +85,7 @@ class GetCurrencyWarningsUseCase(
val currency = currencyStatus.currency val currency = currencyStatus.currency
val cryptoStatuses = operations.getCurrenciesStatusesSync() val cryptoStatuses = operations.getCurrenciesStatusesSync()
return combine( return combine(
showSwapPromoTokenUseCase(userWalletId.stringValue, currency.id.value).conflate(), showSwapPromoTokenUseCase().conflate(),
flowOf(marketCryptoCurrencyRepository.isExchangeable(userWalletId, currency)).conflate(), flowOf(marketCryptoCurrencyRepository.isExchangeable(userWalletId, currency)).conflate(),
) { shouldShowSwapPromo, isExchangeable -> ) { shouldShowSwapPromo, isExchangeable ->
if (shouldShowSwapPromo && isExchangeable) { if (shouldShowSwapPromo && isExchangeable) {

View file

@ -563,14 +563,14 @@ internal class TokenDetailsViewModel @Inject constructor(
override fun onSwapPromoDismiss() { override fun onSwapPromoDismiss() {
viewModelScope.launch(dispatchers.main) { viewModelScope.launch(dispatchers.main) {
shouldShowSwapPromoTokenUseCase.neverToShow(userWalletId.stringValue, cryptoCurrency.id.value) shouldShowSwapPromoTokenUseCase.neverToShow()
analyticsEventsHandler.send(TokenSwapPromoAnalyticsEvent.Close) analyticsEventsHandler.send(TokenSwapPromoAnalyticsEvent.Close)
} }
} }
override fun onSwapPromoClick() { override fun onSwapPromoClick() {
viewModelScope.launch(dispatchers.main) { viewModelScope.launch(dispatchers.main) {
shouldShowSwapPromoTokenUseCase.neverToShow(userWalletId.stringValue, cryptoCurrency.id.value) shouldShowSwapPromoTokenUseCase.neverToShow()
analyticsEventsHandler.send(TokenSwapPromoAnalyticsEvent.Exchange(cryptoCurrency.symbol)) analyticsEventsHandler.send(TokenSwapPromoAnalyticsEvent.Exchange(cryptoCurrency.symbol))
} }
onSwapClick() onSwapClick()