Updated on 2026-08-14
This commit is contained in:
parent
9d14fb859f
commit
23416dba22
6 changed files with 16 additions and 21 deletions
|
|
@ -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> */
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
}
|
||||
|
|
@ -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()
|
||||
}
|
||||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue