Updated on 2026-08-14

This commit is contained in:
Tangem 2023-07-20 12:16:52 +03:00
parent c4f743745c
commit 7daafed11b
4 changed files with 28 additions and 12 deletions

View file

@ -207,20 +207,25 @@ internal class DefaultLearn2earnInteractor(
}
override fun isPromotionActive(): Boolean {
val userData = repository.getUserData()
val isActive = when {
!featureToggleManager.isLearn2earnEnabled -> false
userData.isAlreadyReceivedAward -> false
promotion.isError() -> false
else -> {
val data = promotion.getPromotionInfo().getData(userData.promoCode)
data.status == PromotionInfoResponse.Status.ACTIVE
}
repository.getUserData().isAlreadyReceivedAward -> false
else -> !promotion.isError()
}
return isActive
}
override fun isPromotionActiveOnStories(): Boolean {
val isActiveStatus = promotion.getPromotionInfo().newCard.status == PromotionInfoResponse.Status.ACTIVE
return isPromotionActive() && isActiveStatus
}
override fun isPromotionActiveOnMain(): Boolean {
val isActiveStatus = promotion.getPromotionInfo().oldCard.status == PromotionInfoResponse.Status.ACTIVE
return isPromotionActive() && isActiveStatus
}
private suspend fun initPromotionInfo() {
promotion = if (featureToggleManager.isLearn2earnEnabled) {
repository.getPromotionInfo()

View file

@ -16,6 +16,10 @@ interface Learn2earnInteractor : WebViewRedirectHandler {
fun isPromotionActive(): Boolean
fun isPromotionActiveOnStories(): Boolean
fun isPromotionActiveOnMain(): Boolean
suspend fun validateUserWallet(): PromotionError?
fun isUserRegisteredInPromotion(): Boolean

View file

@ -44,7 +44,9 @@ class Learn2earnViewModel @Inject constructor(
private set
init {
uiState = uiState.updateViewsVisibility(isVisible = interactor.isPromotionActive())
uiState = uiState
.updateStoriesVisibility(isVisible = interactor.isPromotionActiveOnStories())
.updateGetBonusVisibility(isVisible = interactor.isPromotionActiveOnMain())
}
fun onMainScreenCreated() {
@ -56,8 +58,8 @@ class Learn2earnViewModel @Inject constructor(
}
private fun updateMainScreenViews() {
if (!interactor.isPromotionActive()) {
uiState = uiState.updateViewsVisibility(isVisible = false)
if (!interactor.isPromotionActiveOnMain()) {
uiState = uiState.updateGetBonusVisibility(isVisible = false)
return
}
@ -65,7 +67,12 @@ class Learn2earnViewModel @Inject constructor(
val error = interactor.validateUserWallet()
when {
error == null -> {
updateUi { uiState.updateViewsVisibility(isVisible = true) }
updateUi {
uiState
.updateStoriesVisibility(isVisible = interactor.isPromotionActiveOnStories())
.updateGetBonusVisibility(isVisible = interactor.isPromotionActiveOnMain())
.changeGetBounsDescription(getBonusDescription())
}
}
// additional check after the error has been handled by interactor
!interactor.isPromotionActive() -> {