Updated on 2026-08-14

This commit is contained in:
Tangem 2025-04-25 16:42:18 +05:00
parent f79fbcb530
commit 7bdbd18cad
15 changed files with 86 additions and 52 deletions

View file

@ -23,4 +23,8 @@ data class PromoBanner(
private companion object {
const val ACTIVE_STATUS = "active"
}
}
enum class PromoId {
Referral,
}

View file

@ -1,18 +1,20 @@
package com.tangem.domain.promo
import com.tangem.domain.promo.models.PromoId
import com.tangem.domain.promo.models.StoryContent
import com.tangem.domain.wallets.models.UserWalletId
import kotlinx.coroutines.flow.Flow
interface PromoRepository {
// region Promo
fun isReadyToShowWalletSwapPromo(): Flow<Boolean>
fun isReadyToShowWalletPromo(userWalletId: UserWalletId, promoId: PromoId): Flow<Boolean>
fun isReadyToShowTokenSwapPromo(): Flow<Boolean>
fun isReadyToShowTokenPromo(promoId: PromoId): Flow<Boolean>
suspend fun setNeverToShowWalletSwapPromo()
suspend fun setNeverToShowWalletPromo(promoId: PromoId)
suspend fun setNeverToShowTokenSwapPromo()
suspend fun setNeverToShowTokenPromo(promoId: PromoId)
// endregion
// region Stories

View file

@ -0,0 +1,11 @@
package com.tangem.domain.promo
import com.tangem.domain.promo.models.PromoId
import kotlinx.coroutines.flow.Flow
class ShouldShowPromoTokenUseCase(private val promoRepository: PromoRepository) {
operator fun invoke(promoId: PromoId): Flow<Boolean> = promoRepository.isReadyToShowTokenPromo(promoId)
suspend fun neverToShow(promoId: PromoId) = promoRepository.setNeverToShowTokenPromo(promoId)
}

View file

@ -0,0 +1,14 @@
package com.tangem.domain.promo
import com.tangem.domain.promo.models.PromoId
import com.tangem.domain.wallets.models.UserWalletId
import kotlinx.coroutines.flow.Flow
class ShouldShowPromoWalletUseCase(private val promoRepository: PromoRepository) {
operator fun invoke(userWalletId: UserWalletId, promoId: PromoId): Flow<Boolean> {
return promoRepository.isReadyToShowWalletPromo(userWalletId, promoId)
}
suspend fun neverToShow(promoId: PromoId) = promoRepository.setNeverToShowWalletPromo(promoId)
}

View file

@ -1,10 +0,0 @@
package com.tangem.domain.promo
import kotlinx.coroutines.flow.Flow
class ShouldShowSwapPromoTokenUseCase(private val promoRepository: PromoRepository) {
operator fun invoke(): Flow<Boolean> = promoRepository.isReadyToShowTokenSwapPromo()
suspend fun neverToShow() = promoRepository.setNeverToShowTokenSwapPromo()
}

View file

@ -1,10 +0,0 @@
package com.tangem.domain.promo
import kotlinx.coroutines.flow.Flow
class ShouldShowSwapPromoWalletUseCase(private val promoRepository: PromoRepository) {
operator fun invoke(): Flow<Boolean> = promoRepository.isReadyToShowWalletSwapPromo()
suspend fun neverToShow() = promoRepository.setNeverToShowWalletSwapPromo()
}