Updated on 2026-08-14
This commit is contained in:
parent
2e6647fa50
commit
3bde764060
23 changed files with 65 additions and 150 deletions
|
|
@ -1,6 +0,0 @@
|
|||
package com.tangem.features.yield.supply.impl.main.entity
|
||||
|
||||
internal enum class LoadingStatusMode {
|
||||
Initial,
|
||||
LoadApy,
|
||||
}
|
||||
|
|
@ -22,8 +22,6 @@ import com.tangem.domain.yield.supply.usecase.YieldSupplyGetTokenStatusUseCase
|
|||
import com.tangem.domain.yield.supply.usecase.YieldSupplyIsAvailableUseCase
|
||||
import com.tangem.features.yield.supply.api.YieldSupplyComponent
|
||||
import com.tangem.features.yield.supply.impl.main.entity.YieldSupplyUM
|
||||
import com.tangem.features.yield.supply.impl.main.entity.LoadingStatusMode
|
||||
import com.tangem.features.yield.supply.impl.main.model.transformers.YieldSupplyTokenStatusFailureTransformer
|
||||
import com.tangem.features.yield.supply.impl.main.model.transformers.YieldSupplyTokenStatusSuccessTransformer
|
||||
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
|
||||
import com.tangem.utils.coroutines.DelayedWork
|
||||
|
|
@ -118,7 +116,7 @@ internal class YieldSupplyModel @Inject constructor(
|
|||
}
|
||||
}
|
||||
|
||||
private fun loadTokenStatus(mode: LoadingStatusMode) {
|
||||
private fun loadTokenStatus() {
|
||||
val cryptoCurrencyToken = cryptoCurrency as? CryptoCurrency.Token ?: return
|
||||
modelScope.launch(dispatchers.default) {
|
||||
yieldSupplyGetTokenStatusUseCase(cryptoCurrencyToken)
|
||||
|
|
@ -127,11 +125,10 @@ internal class YieldSupplyModel @Inject constructor(
|
|||
YieldSupplyTokenStatusSuccessTransformer(
|
||||
tokenStatus = tokenStatus,
|
||||
onStartEarningClick = ::onStartEarningClick,
|
||||
mode = mode,
|
||||
),
|
||||
)
|
||||
}.onLeft {
|
||||
uiState.update(YieldSupplyTokenStatusFailureTransformer(mode))
|
||||
uiState.update { YieldSupplyUM.Unavailable }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -186,14 +183,13 @@ internal class YieldSupplyModel @Inject constructor(
|
|||
onClick = ::onActiveClick,
|
||||
isAllowedToSpend = yieldSupplyStatus.isAllowedToSpend,
|
||||
)
|
||||
else -> YieldSupplyUM.Loading
|
||||
else -> YieldSupplyUM.Initial
|
||||
}
|
||||
|
||||
uiState.update { yieldSupplyUM }
|
||||
|
||||
when (yieldSupplyUM) {
|
||||
is YieldSupplyUM.Loading -> loadTokenStatus(LoadingStatusMode.Initial)
|
||||
is YieldSupplyUM.Content -> loadTokenStatus(LoadingStatusMode.LoadApy)
|
||||
is YieldSupplyUM.Initial -> loadTokenStatus()
|
||||
else -> Unit
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,17 +0,0 @@
|
|||
package com.tangem.features.yield.supply.impl.main.model.transformers
|
||||
|
||||
import com.tangem.features.yield.supply.impl.main.entity.LoadingStatusMode
|
||||
import com.tangem.features.yield.supply.impl.main.entity.YieldSupplyUM
|
||||
import com.tangem.utils.transformer.Transformer
|
||||
|
||||
internal class YieldSupplyTokenStatusFailureTransformer(
|
||||
private val mode: LoadingStatusMode,
|
||||
) : Transformer<YieldSupplyUM> {
|
||||
|
||||
override fun transform(prevState: YieldSupplyUM): YieldSupplyUM {
|
||||
return when (mode) {
|
||||
LoadingStatusMode.Initial -> YieldSupplyUM.Unavailable
|
||||
LoadingStatusMode.LoadApy -> prevState // TODO apply correct UI
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,42 +1,26 @@
|
|||
package com.tangem.features.yield.supply.impl.main.model.transformers
|
||||
|
||||
import com.tangem.domain.yield.supply.models.YieldMarketTokenStatus
|
||||
import com.tangem.features.yield.supply.impl.R
|
||||
import com.tangem.features.yield.supply.impl.main.entity.LoadingStatusMode
|
||||
import com.tangem.features.yield.supply.impl.main.entity.YieldSupplyUM
|
||||
import com.tangem.core.ui.extensions.resourceReference
|
||||
import com.tangem.core.ui.extensions.stringReference
|
||||
import com.tangem.core.ui.extensions.wrappedList
|
||||
import com.tangem.domain.yield.supply.models.YieldMarketToken
|
||||
import com.tangem.utils.transformer.Transformer
|
||||
|
||||
internal class YieldSupplyTokenStatusSuccessTransformer(
|
||||
private val tokenStatus: YieldMarketTokenStatus,
|
||||
private val tokenStatus: YieldMarketToken,
|
||||
private val onStartEarningClick: () -> Unit,
|
||||
private val mode: LoadingStatusMode,
|
||||
) : Transformer<YieldSupplyUM> {
|
||||
|
||||
override fun transform(prevState: YieldSupplyUM): YieldSupplyUM {
|
||||
if (!tokenStatus.isActive) return YieldSupplyUM.Unavailable
|
||||
|
||||
return when (mode) {
|
||||
LoadingStatusMode.Initial -> {
|
||||
YieldSupplyUM.Available(
|
||||
title = resourceReference(
|
||||
id = R.string.yield_module_token_details_earn_notification_title,
|
||||
formatArgs = wrappedList(tokenStatus.apy),
|
||||
),
|
||||
onClick = onStartEarningClick,
|
||||
)
|
||||
}
|
||||
LoadingStatusMode.LoadApy -> {
|
||||
if (prevState is YieldSupplyUM.Content) {
|
||||
prevState.copy(
|
||||
rewardsApy = stringReference("${tokenStatus.apy}%"),
|
||||
)
|
||||
} else {
|
||||
prevState
|
||||
}
|
||||
}
|
||||
}
|
||||
return YieldSupplyUM.Available(
|
||||
title = resourceReference(
|
||||
id = R.string.yield_module_token_details_earn_notification_title,
|
||||
formatArgs = wrappedList(tokenStatus.apy),
|
||||
),
|
||||
onClick = onStartEarningClick,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
@ -208,7 +208,7 @@ internal class YieldSupplyStartEarningModel @Inject constructor(
|
|||
},
|
||||
ifRight = {
|
||||
fetchCurrencyStatusUseCase(userWalletId = userWallet.walletId, cryptoCurrency.id)
|
||||
yieldSupplyActivateUseCase(cryptoCurrency as CryptoCurrency.Token)
|
||||
yieldSupplyActivateUseCase(cryptoCurrency)
|
||||
modelScope.launch {
|
||||
params.callback.onTransactionSent()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -136,7 +136,7 @@ internal class YieldSupplyStopEarningModel @Inject constructor(
|
|||
)
|
||||
},
|
||||
ifRight = {
|
||||
yieldSupplyDeactivateUseCase(cryptoCurrency as CryptoCurrency.Token)
|
||||
yieldSupplyDeactivateUseCase(cryptoCurrency)
|
||||
params.callback.onTransactionSent()
|
||||
},
|
||||
)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue