Updated on 2026-08-14

This commit is contained in:
Tangem 2023-12-12 20:42:39 +03:00
parent 203b66f6ed
commit 9aa840f892
13 changed files with 331 additions and 7 deletions

View file

@ -0,0 +1,54 @@
package com.tangem.data.settings
import com.tangem.datasource.local.preferences.AppPreferencesStore
import com.tangem.datasource.local.preferences.PreferencesKeys.IS_TOKEN_SWAP_PROMO_SHOW_KEY
import com.tangem.datasource.local.preferences.PreferencesKeys.IS_WALLET_SWAP_PROMO_SHOW_KEY
import com.tangem.datasource.local.preferences.utils.get
import com.tangem.datasource.local.preferences.utils.store
import com.tangem.domain.settings.repositories.SwapPromoRepository
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map
import java.util.Calendar
/**
* Repository for showing swap promo notification.
*/
class DefaultSwapPromoRepository(
private val appPreferencesStore: AppPreferencesStore,
) : SwapPromoRepository {
override fun isReadyToShowWallet(): Flow<Boolean> {
return appPreferencesStore.get(IS_WALLET_SWAP_PROMO_SHOW_KEY, true)
.map { it && checkPromoPeriod() }
}
override fun isReadyToShowToken(): Flow<Boolean> {
return appPreferencesStore.get(IS_TOKEN_SWAP_PROMO_SHOW_KEY, true)
.map { it && checkPromoPeriod() }
}
override suspend fun setNeverToShowWallet() {
appPreferencesStore.store(
key = IS_WALLET_SWAP_PROMO_SHOW_KEY,
value = false,
)
}
override suspend fun setNeverToShowToken() {
appPreferencesStore.store(
key = IS_TOKEN_SWAP_PROMO_SHOW_KEY,
value = false,
)
}
private fun checkPromoPeriod(): Boolean {
val currentDate = Calendar.getInstance()
return currentDate.get(Calendar.DATE) in START_DATE_KEY..END_DATE_KEY &&
currentDate.get(Calendar.MONTH) == MONTH_KEY
}
companion object {
private const val START_DATE_KEY = 15
private const val END_DATE_KEY = 31
private const val MONTH_KEY = 11 // December
}
}

View file

@ -2,10 +2,12 @@ package com.tangem.data.settings.di
import com.tangem.data.settings.DefaultAppRatingRepository
import com.tangem.data.settings.DefaultSettingsRepository
import com.tangem.data.settings.DefaultSwapPromoRepository
import com.tangem.data.source.preferences.PreferencesDataSource
import com.tangem.datasource.local.preferences.AppPreferencesStore
import com.tangem.domain.settings.repositories.AppRatingRepository
import com.tangem.domain.settings.repositories.SettingsRepository
import com.tangem.domain.settings.repositories.SwapPromoRepository
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
import dagger.Module
import dagger.Provides
@ -36,4 +38,10 @@ internal object SettingsDataModule {
fun provideAppRatingRepository(appPreferencesStore: AppPreferencesStore): AppRatingRepository {
return DefaultAppRatingRepository(appPreferencesStore = appPreferencesStore)
}
@Provides
@Singleton
fun provideSwapPromoRepository(appPreferencesStore: AppPreferencesStore): SwapPromoRepository {
return DefaultSwapPromoRepository(appPreferencesStore = appPreferencesStore)
}
}