Updated on 2026-08-14

This commit is contained in:
Tangem 2025-11-06 18:50:08 +05:00
parent d442154b82
commit 3c80a53254
6 changed files with 15 additions and 11 deletions

View file

@ -48,8 +48,11 @@ class TokenItemStateConverter(
private val iconStateProvider: (CryptoCurrencyStatus) -> CurrencyIconState = {
CryptoCurrencyToIconStateConverter().convert(it)
},
private val onApyLabelClick: ((CryptoCurrencyStatus) -> Unit)? = null,
private val titleStateProvider: (CryptoCurrencyStatus) -> TokenItemState.TitleState = {
createTitleState(it, yieldModuleApyMap, stakingApyMap)
createTitleState(it, yieldModuleApyMap, stakingApyMap, {
onApyLabelClick?.invoke(it)
})
},
private val subtitleStateProvider: (CryptoCurrencyStatus) -> TokenItemState.SubtitleState? = {
createSubtitleState(it, appCurrency)
@ -62,7 +65,6 @@ class TokenItemStateConverter(
},
private val onItemClick: ((TokenItemState, CryptoCurrencyStatus) -> Unit)? = null,
private val onItemLongClick: ((TokenItemState, CryptoCurrencyStatus) -> Unit)? = null,
private val onApyLabelClick: ((TokenItemState, CryptoCurrencyStatus) -> Unit)? = null,
) : Converter<CryptoCurrencyStatus, TokenItemState> {
override fun convert(value: CryptoCurrencyStatus): TokenItemState {
@ -104,7 +106,7 @@ class TokenItemStateConverter(
{ onItemLongClick(it, this) }
},
onApyLabelClick = onApyLabelClick?.let { onApyLabelClick ->
{ onApyLabelClick(it, this) }
{ onApyLabelClick(this) }
},
)
}
@ -164,6 +166,7 @@ class TokenItemStateConverter(
currencyStatus: CryptoCurrencyStatus,
yieldModuleApyMap: Map<String, String>,
stakingApyMap: Map<String, List<Yield.Validator>>,
onApyLabelClick: () -> Unit,
): TokenItemState.TitleState {
return when (val value = currencyStatus.value) {
is CryptoCurrencyStatus.Loading,
@ -188,6 +191,7 @@ class TokenItemStateConverter(
hasPending = value.hasCurrentNetworkTransactions,
earnApy = earnApyText,
earnApyIsActive = isActive,
onApyLabelClick = onApyLabelClick,
)
}
}

View file

@ -110,7 +110,6 @@ fun TokenItem(
TokenTitle(
state = state.titleState,
onApyClick = { state.onApyLabelClick?.invoke(state) },
modifier = Modifier
.layoutId(layoutId = LayoutId.TITLE)
.padding(end = TangemTheme.dimens.spacing8)

View file

@ -21,10 +21,10 @@ import com.tangem.core.ui.res.TangemTheme
import com.tangem.core.ui.components.token.state.TokenItemState.TitleState as TokenTitleState
@Composable
internal fun TokenTitle(state: TokenTitleState?, onApyClick: () -> Unit, modifier: Modifier = Modifier) {
internal fun TokenTitle(state: TokenTitleState?, modifier: Modifier = Modifier) {
when (state) {
is TokenTitleState.Content -> {
ContentTitle(state = state, modifier = modifier, onApyClick = onApyClick)
ContentTitle(state = state, modifier = modifier)
}
is TokenTitleState.Loading -> {
RectangleShimmer(modifier = modifier.placeholderSize(), radius = TangemTheme.dimens.radius4)
@ -37,7 +37,7 @@ internal fun TokenTitle(state: TokenTitleState?, onApyClick: () -> Unit, modifie
}
@Composable
private fun ContentTitle(state: TokenTitleState.Content, onApyClick: () -> Unit, modifier: Modifier = Modifier) {
private fun ContentTitle(state: TokenTitleState.Content, modifier: Modifier = Modifier) {
Row(
modifier = modifier,
horizontalArrangement = Arrangement.spacedBy(space = TangemTheme.dimens.spacing6),
@ -64,7 +64,7 @@ private fun ContentTitle(state: TokenTitleState.Content, onApyClick: () -> Unit,
modifier = Modifier
.align(alignment = Alignment.CenterVertically)
.clickable {
onApyClick()
state.onApyLabelClick?.invoke()
},
)
}

View file

@ -179,6 +179,7 @@ sealed class TokenItemState {
val isAvailable: Boolean = true,
val earnApy: TextReference? = null,
val earnApyIsActive: Boolean = false,
val onApyLabelClick: (() -> Unit)? = null,
) : TitleState()
data object Loading : TitleState()

View file

@ -59,7 +59,7 @@ internal class TokenListStateConverter(
stakingApyMap = stakingApyMap,
onItemClick = { _, status -> onTokenClick(accountId, status) },
onItemLongClick = { _, status -> onTokenLongClick(accountId, status) },
onApyLabelClick = { _, status -> onApyLabelClick(status) },
onApyLabelClick = { status -> onApyLabelClick(status) },
)
override fun convert(value: WalletTokensListState): WalletTokensListState {

View file

@ -91,8 +91,8 @@ internal class YieldSupplyModel @Inject constructor(
init {
checkIfYieldSupplyIsAvailable()
if (params.handleNavigation != null) {
if (params.handleNavigation == true) {
params.handleNavigation?.let { handle ->
if (handle) {
modelScope.launch {
delay(timeMillis = 1000)
bottomSheetNavigation.activate(Unit)