diff --git a/app/src/main/java/com/tangem/tap/di/domain/PromoDomainModule.kt b/app/src/main/java/com/tangem/tap/di/domain/PromoDomainModule.kt index ccc91c699c..381de50f84 100644 --- a/app/src/main/java/com/tangem/tap/di/domain/PromoDomainModule.kt +++ b/app/src/main/java/com/tangem/tap/di/domain/PromoDomainModule.kt @@ -1,9 +1,6 @@ package com.tangem.tap.di.domain -import com.tangem.domain.promo.PromoRepository -import com.tangem.domain.promo.ShouldShowRingPromoUseCase -import com.tangem.domain.promo.ShouldShowSwapPromoTokenUseCase -import com.tangem.domain.promo.ShouldShowSwapPromoWalletUseCase +import com.tangem.domain.promo.* import dagger.Module import dagger.Provides import dagger.hilt.InstallIn @@ -33,4 +30,10 @@ internal object PromoDomainModule { fun provideShouldShowSwapPromoTokenUseCase(promoRepository: PromoRepository): ShouldShowSwapPromoTokenUseCase { return ShouldShowSwapPromoTokenUseCase(promoRepository) } + + @Provides + @Singleton + fun provideShouldShowSwapStoriesUseCase(promoRepository: PromoRepository): ShouldShowSwapStoriesUseCase { + return ShouldShowSwapStoriesUseCase(promoRepository) + } } \ No newline at end of file diff --git a/core/datasource/src/main/java/com/tangem/datasource/local/preferences/PreferencesKeys.kt b/core/datasource/src/main/java/com/tangem/datasource/local/preferences/PreferencesKeys.kt index a18f6044f7..0a5aad5199 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/local/preferences/PreferencesKeys.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/local/preferences/PreferencesKeys.kt @@ -113,6 +113,8 @@ object PreferencesKeys { val WAS_LOG_FILE_CLEARED by lazy { booleanPreferencesKey(name = "wasLogFileCleared") } + val SHOULD_SHOW_SWAP_STORIES_KEY by lazy { booleanPreferencesKey("shouldShowSwapStories") } + // region Permission fun getShouldShowPermission(permission: String) = booleanPreferencesKey("shouldShowPushPermission_$permission") diff --git a/data/promo/src/main/java/com/tangem/data/promo/DefaultPromoRepository.kt b/data/promo/src/main/java/com/tangem/data/promo/DefaultPromoRepository.kt index 4714406f4d..6a0307943f 100644 --- a/data/promo/src/main/java/com/tangem/data/promo/DefaultPromoRepository.kt +++ b/data/promo/src/main/java/com/tangem/data/promo/DefaultPromoRepository.kt @@ -8,7 +8,9 @@ import com.tangem.datasource.local.preferences.PreferencesKeys.ADDED_WALLETS_WIT import com.tangem.datasource.local.preferences.PreferencesKeys.IS_TOKEN_SWAP_PROMO_OKX_SHOW_KEY import com.tangem.datasource.local.preferences.PreferencesKeys.IS_WALLET_SWAP_PROMO_OKX_SHOW_KEY import com.tangem.datasource.local.preferences.PreferencesKeys.SHOULD_SHOW_RING_PROMO_KEY +import com.tangem.datasource.local.preferences.PreferencesKeys.SHOULD_SHOW_SWAP_STORIES_KEY import com.tangem.datasource.local.preferences.utils.get +import com.tangem.datasource.local.preferences.utils.getSyncOrDefault import com.tangem.datasource.local.preferences.utils.store import com.tangem.domain.promo.PromoRepository import com.tangem.domain.promo.models.PromoBanner @@ -89,6 +91,21 @@ internal class DefaultPromoRepository( appPreferencesStore.store(key = SHOULD_SHOW_RING_PROMO_KEY, value = false) } + override fun isReadyToShowSwapStories(): Flow { + return appPreferencesStore.get(SHOULD_SHOW_SWAP_STORIES_KEY, true) + } + + override suspend fun isReadyToShowSwapStoriesSync(): Boolean { + return appPreferencesStore.getSyncOrDefault(SHOULD_SHOW_SWAP_STORIES_KEY, true) + } + + override suspend fun setNeverToShowSwapStories() { + appPreferencesStore.store( + key = SHOULD_SHOW_SWAP_STORIES_KEY, + value = false, + ) + } + private companion object { private const val CHANGELLY_NAME = "changelly" private const val OKX = "okx" diff --git a/domain/promo/src/main/java/com/tangem/domain/promo/PromoRepository.kt b/domain/promo/src/main/java/com/tangem/domain/promo/PromoRepository.kt index 6350df9b18..de2c366987 100644 --- a/domain/promo/src/main/java/com/tangem/domain/promo/PromoRepository.kt +++ b/domain/promo/src/main/java/com/tangem/domain/promo/PromoRepository.kt @@ -23,4 +23,10 @@ interface PromoRepository { fun isReadyToShowRingPromo(userWalletId: UserWalletId): Flow suspend fun setNeverToShowRingPromo() + + fun isReadyToShowSwapStories(): Flow + + suspend fun isReadyToShowSwapStoriesSync(): Boolean + + suspend fun setNeverToShowSwapStories() } \ No newline at end of file diff --git a/domain/promo/src/main/java/com/tangem/domain/promo/ShouldShowSwapStoriesUseCase.kt b/domain/promo/src/main/java/com/tangem/domain/promo/ShouldShowSwapStoriesUseCase.kt new file mode 100644 index 0000000000..35d46bbf27 --- /dev/null +++ b/domain/promo/src/main/java/com/tangem/domain/promo/ShouldShowSwapStoriesUseCase.kt @@ -0,0 +1,10 @@ +package com.tangem.domain.promo + +import kotlinx.coroutines.flow.Flow + +class ShouldShowSwapStoriesUseCase(private val promoRepository: PromoRepository) { + operator fun invoke(): Flow = promoRepository.isReadyToShowSwapStories() + suspend fun invokeSync(): Boolean = promoRepository.isReadyToShowSwapStoriesSync() + + suspend fun neverToShow() = promoRepository.setNeverToShowSwapStories() +} \ No newline at end of file