Updated on 2026-08-14

This commit is contained in:
Tangem 2025-12-01 18:30:35 +04:00
parent ffaffe1274
commit 22cbfe33ed
2 changed files with 10 additions and 9 deletions

View file

@ -46,6 +46,7 @@ import kotlinx.coroutines.launch
import timber.log.Timber
import javax.inject.Inject
import kotlin.properties.Delegates
import java.util.concurrent.atomic.AtomicBoolean
@Suppress("LongParameterList", "LargeClass")
@ModelScoped
@ -74,10 +75,10 @@ internal class YieldSupplyModel @Inject constructor(
private val cryptoCurrency = params.cryptoCurrency
var userWallet: UserWallet by Delegates.notNull()
private var lastYieldSupplyStatus: YieldSupplyStatus? = null
private val fetchCurrencyJobHolder = JobHolder()
private var lastStatusCheckTimestamp = 0L
private val isFirstCryptoCurrencyStatusEmission = AtomicBoolean(true)
init {
checkIfYieldSupplyIsAvailable()
@ -105,6 +106,9 @@ internal class YieldSupplyModel @Inject constructor(
).onEach { maybeCryptoCurrency ->
maybeCryptoCurrency.fold(
ifRight = { cryptoCurrencyStatus ->
if (isFirstCryptoCurrencyStatusEmission.compareAndSet(true, false)) {
sendInfoAboutProtocolStatus(cryptoCurrencyStatus)
}
onCryptoCurrencyStatusUpdated(cryptoCurrencyStatus)
},
ifLeft = {
@ -242,7 +246,6 @@ internal class YieldSupplyModel @Inject constructor(
cryptoCurrency = cryptoCurrency,
yieldSupplyEnterStatus = null,
)
sendInfoAboutProtocolStatus(cryptoCurrencyStatus)
if (yieldSupplyStatus?.isActive == true) {
loadActiveState(
cryptoCurrencyStatus = cryptoCurrencyStatus,
@ -353,7 +356,6 @@ internal class YieldSupplyModel @Inject constructor(
}
private fun sendInfoAboutProtocolStatus(cryptoCurrencyStatus: CryptoCurrencyStatus) {
if (lastYieldSupplyStatus == cryptoCurrencyStatus.value.yieldSupplyStatus) return
val token = cryptoCurrency as? CryptoCurrency.Token ?: return
val address = cryptoCurrencyStatus.value.networkAddress?.defaultAddress?.value ?: return
modelScope.launch(dispatchers.default) {
@ -362,13 +364,9 @@ internal class YieldSupplyModel @Inject constructor(
userWalletId = userWallet.walletId,
cryptoCurrency = token,
address = address,
).onRight {
lastYieldSupplyStatus = cryptoCurrencyStatus.value.yieldSupplyStatus
}
)
} else {
yieldSupplyDeactivateUseCase(token, address).onRight {
lastYieldSupplyStatus = cryptoCurrencyStatus.value.yieldSupplyStatus
}
yieldSupplyDeactivateUseCase(token, address)
}
}
}