Updated on 2026-08-14
This commit is contained in:
commit
87382aa682
4 changed files with 35 additions and 24 deletions
|
|
@ -73,7 +73,7 @@ internal class DefaultLearn2earnInteractor(
|
|||
return repository.getUserData().promoCode != null
|
||||
}
|
||||
|
||||
override suspend fun validateUserWallet(): PromotionError? {
|
||||
override suspend fun validateUserWallet(): Result<Unit> {
|
||||
val promoCode = repository.getUserData().promoCode
|
||||
val userWalletId = userWalletManager.getWalletId()
|
||||
|
||||
|
|
@ -83,8 +83,12 @@ internal class DefaultLearn2earnInteractor(
|
|||
repository.validateCode(userWalletId, promoCode).error
|
||||
}?.toDomainError()
|
||||
|
||||
return domainError
|
||||
?.also { handlePromotionError(it) }
|
||||
return if (domainError == null) {
|
||||
Result.success(Unit)
|
||||
} else {
|
||||
handlePromotionError(domainError)
|
||||
Result.failure(domainError)
|
||||
}
|
||||
}
|
||||
|
||||
override fun isUserRegisteredInPromotion(): Boolean {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
package com.tangem.feature.learn2earn.domain.api
|
||||
|
||||
import android.net.Uri
|
||||
import com.tangem.feature.learn2earn.domain.models.PromotionError
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
|
||||
/**
|
||||
|
|
@ -23,7 +22,7 @@ interface Learn2earnInteractor : WebViewRedirectHandler {
|
|||
|
||||
fun isPromotionActiveOnMain(): Boolean
|
||||
|
||||
suspend fun validateUserWallet(): PromotionError?
|
||||
suspend fun validateUserWallet(): Result<Unit>
|
||||
|
||||
fun isUserRegisteredInPromotion(): Boolean
|
||||
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ import com.tangem.utils.coroutines.AppCoroutineDispatcherProvider
|
|||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
import timber.log.Timber
|
||||
import javax.inject.Inject
|
||||
|
||||
/**
|
||||
|
|
@ -57,7 +58,7 @@ class Learn2earnViewModel @Inject constructor(
|
|||
updateUi {
|
||||
uiState
|
||||
.updateGetBonusVisibility(isVisible = isTangemWallet)
|
||||
.changeGetBounsDescription(getBonusDescription())
|
||||
.changeGetBonusDescription(getBonusDescription())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -78,24 +79,31 @@ class Learn2earnViewModel @Inject constructor(
|
|||
}
|
||||
|
||||
viewModelScope.launch(dispatchers.io) {
|
||||
val error = interactor.validateUserWallet()
|
||||
when {
|
||||
error == null -> {
|
||||
updateUi {
|
||||
uiState
|
||||
.updateStoriesVisibility(isVisible = interactor.isPromotionActiveOnStories())
|
||||
.updateGetBonusVisibility(isVisible = interactor.isPromotionActiveOnMain())
|
||||
.changeGetBounsDescription(getBonusDescription())
|
||||
}
|
||||
runCatching { interactor.validateUserWallet() }
|
||||
.onSuccess { result ->
|
||||
result.fold(
|
||||
onSuccess = {
|
||||
updateUi {
|
||||
uiState
|
||||
.updateStoriesVisibility(isVisible = interactor.isPromotionActiveOnStories())
|
||||
.updateGetBonusVisibility(isVisible = interactor.isPromotionActiveOnMain())
|
||||
.changeGetBonusDescription(getBonusDescription())
|
||||
}
|
||||
},
|
||||
onFailure = {
|
||||
if (interactor.isPromotionActive()) {
|
||||
val error = it as? PromotionError ?: return@launch
|
||||
updateViewsVisibilityOnError(error)
|
||||
} else {
|
||||
updateUi { uiState.updateViewsVisibility(isVisible = false) }
|
||||
}
|
||||
},
|
||||
)
|
||||
}
|
||||
// additional check after the error has been handled by interactor
|
||||
!interactor.isPromotionActive() -> {
|
||||
updateUi { uiState.updateViewsVisibility(isVisible = false) }
|
||||
.onFailure {
|
||||
Timber.e(it)
|
||||
updateUi { uiState.updateGetBonusVisibility(isVisible = false) }
|
||||
}
|
||||
else -> {
|
||||
updateViewsVisibilityOnError(error)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -116,7 +124,7 @@ class Learn2earnViewModel @Inject constructor(
|
|||
-> {
|
||||
updateUi {
|
||||
uiState.updateViewsVisibility(isVisible = true)
|
||||
.changeGetBounsDescription(getBonusDescription())
|
||||
.changeGetBonusDescription(getBonusDescription())
|
||||
}
|
||||
}
|
||||
is PromotionError.UnknownError,
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ internal fun Learn2earnState.updateViewsVisibility(isVisible: Boolean): Learn2ea
|
|||
.updateGetBonusVisibility(isVisible)
|
||||
}
|
||||
|
||||
internal fun Learn2earnState.changeGetBounsDescription(description: MainScreenState.Description): Learn2earnState {
|
||||
internal fun Learn2earnState.changeGetBonusDescription(description: MainScreenState.Description): Learn2earnState {
|
||||
return if (mainScreenState.description == description) {
|
||||
this
|
||||
} else {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue