Updated on 2026-08-14

This commit is contained in:
Tangem 2025-11-06 18:00:16 +05:00
parent 7e5a678d84
commit d442154b82
17 changed files with 137 additions and 6 deletions

View file

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

View file

@ -3,6 +3,7 @@ package com.tangem.core.ui.components.token.internal
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.*
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
@ -20,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?, modifier: Modifier = Modifier) {
internal fun TokenTitle(state: TokenTitleState?, onApyClick: () -> Unit, modifier: Modifier = Modifier) {
when (state) {
is TokenTitleState.Content -> {
ContentTitle(state = state, modifier = modifier)
ContentTitle(state = state, modifier = modifier, onApyClick = onApyClick)
}
is TokenTitleState.Loading -> {
RectangleShimmer(modifier = modifier.placeholderSize(), radius = TangemTheme.dimens.radius4)
@ -36,7 +37,7 @@ internal fun TokenTitle(state: TokenTitleState?, modifier: Modifier = Modifier)
}
@Composable
private fun ContentTitle(state: TokenTitleState.Content, modifier: Modifier = Modifier) {
private fun ContentTitle(state: TokenTitleState.Content, onApyClick: () -> Unit, modifier: Modifier = Modifier) {
Row(
modifier = modifier,
horizontalArrangement = Arrangement.spacedBy(space = TangemTheme.dimens.spacing6),
@ -60,7 +61,11 @@ private fun ContentTitle(state: TokenTitleState.Content, modifier: Modifier = Mo
YieldSupplyApyLabel(
apy = state.earnApy,
isActive = state.earnApyIsActive,
modifier = Modifier.align(alignment = Alignment.CenterVertically),
modifier = Modifier
.align(alignment = Alignment.CenterVertically)
.clickable {
onApyClick()
},
)
}
}

View file

@ -40,6 +40,9 @@ sealed class TokenItemState {
/** Callback which will be called when an item is long clicked */
abstract val onItemLongClick: ((TokenItemState) -> Unit)?
/** Callback which will be called when an apy label is clicked */
abstract val onApyLabelClick: ((TokenItemState) -> Unit)?
/**
* Loading token state
*
@ -58,6 +61,7 @@ sealed class TokenItemState {
override val subtitle2State: Subtitle2State = Subtitle2State.Loading
override val onItemClick: ((TokenItemState) -> Unit)? = null
override val onItemLongClick: ((TokenItemState) -> Unit)? = null
override val onApyLabelClick: ((TokenItemState) -> Unit)? = null
}
/**
@ -73,6 +77,7 @@ sealed class TokenItemState {
override val subtitle2State: Subtitle2State = Subtitle2State.Locked
override val onItemClick: ((TokenItemState) -> Unit)? = null
override val onItemLongClick: ((TokenItemState) -> Unit)? = null
override val onApyLabelClick: ((TokenItemState) -> Unit)? = null
}
/**
@ -96,6 +101,7 @@ sealed class TokenItemState {
override val subtitle2State: Subtitle2State?,
override val onItemClick: ((TokenItemState) -> Unit)?,
override val onItemLongClick: ((TokenItemState) -> Unit)?,
override val onApyLabelClick: ((TokenItemState) -> Unit)? = null,
) : TokenItemState()
/**
@ -116,6 +122,7 @@ sealed class TokenItemState {
override val fiatAmountState: FiatAmountState? = null
override val onItemClick: ((TokenItemState) -> Unit)? = null
override val onItemLongClick: ((TokenItemState) -> Unit)? = null
override val onApyLabelClick: ((TokenItemState) -> Unit)? = null
}
/**
@ -133,6 +140,7 @@ sealed class TokenItemState {
override val iconState: CurrencyIconState,
override val titleState: TitleState,
override val subtitleState: SubtitleState? = null,
override val onApyLabelClick: ((TokenItemState) -> Unit)? = null,
override val onItemClick: ((TokenItemState) -> Unit)?,
override val onItemLongClick: ((TokenItemState) -> Unit)?,
) : TokenItemState() {
@ -159,6 +167,7 @@ sealed class TokenItemState {
override val fiatAmountState: FiatAmountState? = null
override val subtitle2State: Subtitle2State? = null
override val onItemClick: ((TokenItemState) -> Unit)? = null
override val onApyLabelClick: ((TokenItemState) -> Unit)? = null
}
@Immutable