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_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> */

View file

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

View file

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

View file

@ -5,9 +5,9 @@ import kotlinx.coroutines.flow.Flow
interface SwapPromoRepository {
fun isReadyToShowWallet(): Flow<Boolean>
fun isReadyToShowToken(userWalletId: String, currencyId: String): Flow<Boolean>
fun isReadyToShowToken(): Flow<Boolean>
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 cryptoStatuses = operations.getCurrenciesStatusesSync()
return combine(
showSwapPromoTokenUseCase(userWalletId.stringValue, currency.id.value).conflate(),
showSwapPromoTokenUseCase().conflate(),
flowOf(marketCryptoCurrencyRepository.isExchangeable(userWalletId, currency)).conflate(),
) { shouldShowSwapPromo, isExchangeable ->
if (shouldShowSwapPromo && isExchangeable) {

View file

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