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_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> */
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
|
||||||
|
|
@ -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)
|
|
||||||
}
|
}
|
||||||
|
|
@ -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()
|
||||||
}
|
}
|
||||||
|
|
@ -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) {
|
||||||
|
|
|
||||||
|
|
@ -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()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue