Updated on 2026-08-14

This commit is contained in:
Tangem 2024-12-18 13:16:08 +03:00
parent cf8009da88
commit d2d9377386
4 changed files with 12 additions and 1 deletions

View file

@ -152,6 +152,7 @@ internal object TokenDetailsPreviewData {
formatArgs = wrappedList("Solana"),
),
iconState = iconState,
isEnabled = true,
onStakeClicked = {},
)

View file

@ -24,6 +24,7 @@ internal sealed interface StakingBlockUM {
val iconState: IconState,
val titleText: TextReference,
val subtitleText: TextReference,
val isEnabled: Boolean,
val onStakeClicked: () -> Unit,
) : StakingBlockUM
}

View file

@ -158,7 +158,7 @@ internal class TokenDetailsLoadedBalanceConverter(
return when {
stakingCryptoAmount.isNullOrZero() && stakingEntryInfo != null -> {
if (pendingBalances.isEmpty()) {
getStakeAvailableState(stakingEntryInfo, iconState)
getStakeAvailableState(stakingEntryInfo, iconState, isStakingButtonEnabled(status))
} else {
getStakedBlockWithFiatAmount(status, pendingBalances.sumOf { it.amount }, null)
}
@ -170,6 +170,12 @@ internal class TokenDetailsLoadedBalanceConverter(
}
}
private fun isStakingButtonEnabled(status: CryptoCurrencyStatus): Boolean {
return status.value is CryptoCurrencyStatus.Loaded ||
status.value is CryptoCurrencyStatus.NoQuote ||
status.value is CryptoCurrencyStatus.Custom
}
private fun getStakedBlockWithFiatAmount(
status: CryptoCurrencyStatus,
stakingAmount: BigDecimal?,
@ -210,6 +216,7 @@ internal class TokenDetailsLoadedBalanceConverter(
private fun getStakeAvailableState(
stakingEntryInfo: StakingEntryInfo,
iconState: IconState,
isEnabled: Boolean,
): StakingBlockUM.StakeAvailable {
val apr = stakingEntryInfo.apr.format { percent() }
return StakingBlockUM.StakeAvailable(
@ -222,6 +229,7 @@ internal class TokenDetailsLoadedBalanceConverter(
formatArgs = wrappedList(stakingEntryInfo.tokenSymbol),
),
iconState = iconState,
isEnabled = isEnabled,
onStakeClicked = clickIntents::onStakeBannerClick,
)
}

View file

@ -112,6 +112,7 @@ private fun StakingAvailableContent(state: StakingBlockUM.StakeAvailable, modifi
SecondaryButton(
modifier = Modifier.fillMaxWidth(),
text = stringResource(id = R.string.common_stake),
enabled = state.isEnabled,
onClick = state.onStakeClicked,
)
}