From 1fc34657ce267119391d162a7caa268950236967 Mon Sep 17 00:00:00 2001 From: Tangem Date: Sat, 2 Nov 2024 18:15:55 +0400 Subject: [PATCH] Updated on 2026-08-14 --- .../ui/tokens/TokenItemStateConverter.kt | 24 +++++++++------- .../core/ui/components/token/TokenItem.kt | 8 ++++-- .../components/token/state/TokenItemState.kt | 28 +++++++++---------- .../tokenlist/internal/NetworkTitleItem.kt | 5 +--- .../impl/model/PortfolioTokenUMConverter.kt | 2 +- .../portfolio/impl/ui/PortfolioItem.kt | 6 ++-- .../DefaultOnrampOperationComponent.kt | 2 +- .../onramp/swap/entity/ExchangeCardUM.kt | 4 +-- .../features/onramp/swap/ui/ExchangeCard.kt | 1 - .../tokenlist/OnrampTokenListComponent.kt | 3 +- .../UpdateTokenItemsTransformer.kt | 2 +- .../converter/TokenListStateConverter.kt | 4 +-- 12 files changed, 45 insertions(+), 44 deletions(-) diff --git a/common/ui/src/main/java/com/tangem/common/ui/tokens/TokenItemStateConverter.kt b/common/ui/src/main/java/com/tangem/common/ui/tokens/TokenItemStateConverter.kt index ae4993d6ce..a4e5324a74 100644 --- a/common/ui/src/main/java/com/tangem/common/ui/tokens/TokenItemStateConverter.kt +++ b/common/ui/src/main/java/com/tangem/common/ui/tokens/TokenItemStateConverter.kt @@ -39,8 +39,8 @@ class TokenItemStateConverter( private val fiatAmountStateProvider: (CryptoCurrencyStatus) -> TokenItemState.FiatAmountState? = { createFiatAmountState(it, appCurrency) }, - private val onItemClick: (CryptoCurrencyStatus) -> Unit, - private val onItemLongClick: ((CryptoCurrencyStatus) -> Unit)? = null, + private val onItemClick: ((TokenItemState, CryptoCurrencyStatus) -> Unit)? = null, + private val onItemLongClick: ((TokenItemState, CryptoCurrencyStatus) -> Unit)? = null, ) : Converter { override fun convert(value: CryptoCurrencyStatus): TokenItemState { @@ -75,9 +75,11 @@ class TokenItemStateConverter( subtitleState = requireNotNull(subtitleStateProvider(this)), fiatAmountState = requireNotNull(fiatAmountStateProvider(this)), subtitle2State = TokenItemState.Subtitle2State.TextContent(text = getFormattedAmount()), - onItemClick = { onItemClick(this) }, - onItemLongClick = onItemLongClick?.let { - { it(this) } + onItemClick = onItemClick?.let { onItemClick -> + { onItemClick(it, this) } + }, + onItemLongClick = onItemLongClick?.let { onItemLongClick -> + { onItemLongClick(it, this) } }, ) } @@ -94,9 +96,11 @@ class TokenItemStateConverter( iconState = iconStateProvider(this), titleState = titleStateProvider(this), subtitleState = subtitleStateProvider(this), - onItemClick = { onItemClick(this) }, - onItemLongClick = onItemLongClick?.let { - { it(this) } + onItemClick = onItemClick?.let { onItemClick -> + { onItemClick(it, this) } + }, + onItemLongClick = onItemLongClick?.let { onItemLongClick -> + { onItemLongClick(it, this) } }, ) } @@ -107,8 +111,8 @@ class TokenItemStateConverter( iconState = iconStateProvider(this), titleState = titleStateProvider(this), subtitleState = subtitleStateProvider(this), - onItemLongClick = onItemLongClick?.let { - { it(this) } + onItemLongClick = onItemLongClick?.let { onItemLongClick -> + { onItemLongClick(it, this) } }, ) } diff --git a/core/ui/src/main/java/com/tangem/core/ui/components/token/TokenItem.kt b/core/ui/src/main/java/com/tangem/core/ui/components/token/TokenItem.kt index 3d76006795..33f3d649fc 100644 --- a/core/ui/src/main/java/com/tangem/core/ui/components/token/TokenItem.kt +++ b/core/ui/src/main/java/com/tangem/core/ui/components/token/TokenItem.kt @@ -145,14 +145,16 @@ private fun Modifier.tokenClickable(state: TokenItemState): Modifier = composed is TokenItemState.Unreachable, -> { val onClick = state.onItemClick - val onLongClick = state.onItemLongClick?.let { rememberHapticFeedback(state = state, onAction = it) } + val onLongClick = state.onItemLongClick?.let { + rememberHapticFeedback(state = state, onAction = { it(state) }) + } when { onClick == null && onLongClick == null -> this onClick == null && onLongClick != null -> combinedClickable(onClick = {}, onLongClick = onLongClick) - onClick != null && onLongClick == null -> combinedClickable(onClick = onClick) + onClick != null && onLongClick == null -> combinedClickable(onClick = { onClick(state) }) onClick != null && onLongClick != null -> { - combinedClickable(onClick = onClick, onLongClick = onLongClick) + combinedClickable(onClick = { onClick(state) }, onLongClick = onLongClick) } else -> this } diff --git a/core/ui/src/main/java/com/tangem/core/ui/components/token/state/TokenItemState.kt b/core/ui/src/main/java/com/tangem/core/ui/components/token/state/TokenItemState.kt index c33e5c8caa..e16a77a33b 100644 --- a/core/ui/src/main/java/com/tangem/core/ui/components/token/state/TokenItemState.kt +++ b/core/ui/src/main/java/com/tangem/core/ui/components/token/state/TokenItemState.kt @@ -31,10 +31,10 @@ sealed class TokenItemState { abstract val subtitle2State: Subtitle2State? /** Callback which will be called when an item is clicked */ - abstract val onItemClick: (() -> Unit)? + abstract val onItemClick: ((TokenItemState) -> Unit)? /** Callback which will be called when an item is long clicked */ - abstract val onItemLongClick: (() -> Unit)? + abstract val onItemLongClick: ((TokenItemState) -> Unit)? /** * Loading token state @@ -52,8 +52,8 @@ sealed class TokenItemState { ) : TokenItemState() { override val fiatAmountState: FiatAmountState = FiatAmountState.Loading override val subtitle2State: Subtitle2State = Subtitle2State.Loading - override val onItemClick: (() -> Unit)? = null - override val onItemLongClick: (() -> Unit)? = null + override val onItemClick: ((TokenItemState) -> Unit)? = null + override val onItemLongClick: ((TokenItemState) -> Unit)? = null } /** @@ -67,8 +67,8 @@ sealed class TokenItemState { override val subtitleState: SubtitleState = SubtitleState.Locked override val fiatAmountState: FiatAmountState = FiatAmountState.Locked override val subtitle2State: Subtitle2State = Subtitle2State.Locked - override val onItemClick: (() -> Unit)? = null - override val onItemLongClick: (() -> Unit)? = null + override val onItemClick: ((TokenItemState) -> Unit)? = null + override val onItemLongClick: ((TokenItemState) -> Unit)? = null } /** @@ -90,8 +90,8 @@ sealed class TokenItemState { override val subtitleState: SubtitleState, override val fiatAmountState: FiatAmountState, override val subtitle2State: Subtitle2State, - override val onItemClick: (() -> Unit)?, - override val onItemLongClick: (() -> Unit)?, + override val onItemClick: ((TokenItemState) -> Unit)?, + override val onItemLongClick: ((TokenItemState) -> Unit)?, ) : TokenItemState() /** @@ -110,8 +110,8 @@ sealed class TokenItemState { ) : TokenItemState() { override val subtitleState: SubtitleState? = null override val fiatAmountState: FiatAmountState? = null - override val onItemClick: (() -> Unit)? = null - override val onItemLongClick: (() -> Unit)? = null + override val onItemClick: ((TokenItemState) -> Unit)? = null + override val onItemLongClick: ((TokenItemState) -> Unit)? = null } /** @@ -129,8 +129,8 @@ sealed class TokenItemState { override val iconState: CurrencyIconState, override val titleState: TitleState, override val subtitleState: SubtitleState? = null, - override val onItemClick: (() -> Unit)?, - override val onItemLongClick: (() -> Unit)?, + override val onItemClick: ((TokenItemState) -> Unit)?, + override val onItemLongClick: ((TokenItemState) -> Unit)?, ) : TokenItemState() { override val fiatAmountState: FiatAmountState? = null override val subtitle2State: Subtitle2State? = null @@ -150,11 +150,11 @@ sealed class TokenItemState { override val iconState: CurrencyIconState, override val titleState: TitleState, override val subtitleState: SubtitleState? = null, - override val onItemLongClick: (() -> Unit)?, + override val onItemLongClick: ((TokenItemState) -> Unit)?, ) : TokenItemState() { override val fiatAmountState: FiatAmountState? = null override val subtitle2State: Subtitle2State? = null - override val onItemClick: (() -> Unit)? = null + override val onItemClick: ((TokenItemState) -> Unit)? = null } @Immutable diff --git a/core/ui/src/main/java/com/tangem/core/ui/components/tokenlist/internal/NetworkTitleItem.kt b/core/ui/src/main/java/com/tangem/core/ui/components/tokenlist/internal/NetworkTitleItem.kt index 4f6bf25949..8ca65a2982 100644 --- a/core/ui/src/main/java/com/tangem/core/ui/components/tokenlist/internal/NetworkTitleItem.kt +++ b/core/ui/src/main/java/com/tangem/core/ui/components/tokenlist/internal/NetworkTitleItem.kt @@ -4,7 +4,6 @@ import android.content.res.Configuration import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.BoxScope -import androidx.compose.foundation.layout.size import androidx.compose.material3.Icon import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -78,9 +77,7 @@ private fun BaseNetworkTitleItem( @Composable private fun DraggableIcon(reorderableTokenListState: ReorderableLazyListState) { Box( - modifier = Modifier - .size(TangemTheme.dimens.size32) - .detectReorder(reorderableTokenListState), + modifier = Modifier.detectReorder(reorderableTokenListState), contentAlignment = Alignment.Center, ) { Icon( diff --git a/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/impl/model/PortfolioTokenUMConverter.kt b/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/impl/model/PortfolioTokenUMConverter.kt index 1125fda4b1..779a4293a0 100644 --- a/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/impl/model/PortfolioTokenUMConverter.kt +++ b/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/impl/model/PortfolioTokenUMConverter.kt @@ -33,7 +33,7 @@ internal class PortfolioTokenUMConverter( subtitleStateProvider = { TokenItemState.SubtitleState.TextContent(value = value.status.currency.name) }, - onItemClick = onTokenItemClick, + onItemClick = { _, status -> onTokenItemClick(status) }, ) return PortfolioTokenUM( diff --git a/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/impl/ui/PortfolioItem.kt b/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/impl/ui/PortfolioItem.kt index e084f9e6eb..7b1d5695df 100644 --- a/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/impl/ui/PortfolioItem.kt +++ b/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/impl/ui/PortfolioItem.kt @@ -32,7 +32,7 @@ internal fun PortfolioItem(state: PortfolioTokenUM, lastInList: Boolean, modifie val onClick = state.tokenItemState.onItemClick if (onClick != null) { hapticManager.perform(TangemHapticEffect.View.ContextClick) - onClick.invoke() + onClick.invoke(it) } }, ) @@ -81,8 +81,8 @@ private fun Preview(@PreviewParameter(PortfolioTokenUMProvider::class) tokenUM: PortfolioItem( state = tokenUM.copy( tokenItemState = when (tokenUM.tokenItemState) { - is TokenItemState.Content -> tokenUM.tokenItemState.copy(onItemClick = onItemClick) - is TokenItemState.Unreachable -> tokenUM.tokenItemState.copy(onItemClick = onItemClick) + is TokenItemState.Content -> tokenUM.tokenItemState.copy(onItemClick = { onItemClick() }) + is TokenItemState.Unreachable -> tokenUM.tokenItemState.copy(onItemClick = { onItemClick() }) else -> tokenUM.tokenItemState }, isQuickActionsShown = quickActionsShown, diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/selecttoken/DefaultOnrampOperationComponent.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/selecttoken/DefaultOnrampOperationComponent.kt index 454ba6bea6..787a5b72f9 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/selecttoken/DefaultOnrampOperationComponent.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/selecttoken/DefaultOnrampOperationComponent.kt @@ -35,7 +35,7 @@ internal class DefaultOnrampOperationComponent @AssistedInject constructor( filterOperation = params.operation, hasSearchBar = true, userWalletId = params.userWalletId, - onTokenClick = ::onTokenClick, + onTokenClick = { _, status -> onTokenClick(status) }, ), ) diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/entity/ExchangeCardUM.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/entity/ExchangeCardUM.kt index 07c60222b4..b4cef2c2bb 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/entity/ExchangeCardUM.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/entity/ExchangeCardUM.kt @@ -25,11 +25,9 @@ internal sealed interface ExchangeCardUM { * Empty state * * @property titleReference title reference - * @property onItemClick callback which will be called when an item is clicked */ data class Empty( override val titleReference: TextReference, - val onItemClick: () -> Unit, ) : ExchangeCardUM { override val hasRemoveButton: Boolean = false @@ -42,7 +40,7 @@ internal sealed interface ExchangeCardUM { subtitleState = TokenItemState.SubtitleState.TextContent(value = "You want to Swap"), fiatAmountState = TokenItemState.FiatAmountState.Content(text = ""), subtitle2State = TokenItemState.Subtitle2State.TextContent(text = ""), - onItemClick = onItemClick, + onItemClick = null, onItemLongClick = null, ) } diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/ui/ExchangeCard.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/ui/ExchangeCard.kt index 4b1ce4c245..6d4aae2867 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/ui/ExchangeCard.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/ui/ExchangeCard.kt @@ -101,7 +101,6 @@ private class ExchangeCardUMProvider : PreviewParameterProvider override val values: Sequence = sequenceOf( ExchangeCardUM.Empty( titleReference = resourceReference(id = R.string.swapping_from_title), - onItemClick = {}, ), ExchangeCardUM.Filled( titleReference = resourceReference(id = R.string.swapping_from_title), diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/tokenlist/OnrampTokenListComponent.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/tokenlist/OnrampTokenListComponent.kt index bcb5ab848a..cd6a67dbef 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/tokenlist/OnrampTokenListComponent.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/tokenlist/OnrampTokenListComponent.kt @@ -5,6 +5,7 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.Stable import androidx.compose.ui.Modifier import com.tangem.core.decompose.factory.ComponentFactory +import com.tangem.core.ui.components.token.state.TokenItemState import com.tangem.domain.tokens.model.CryptoCurrencyStatus import com.tangem.domain.wallets.models.UserWalletId import com.tangem.features.onramp.entity.OnrampOperation @@ -31,6 +32,6 @@ internal interface OnrampTokenListComponent { val filterOperation: OnrampOperation, val hasSearchBar: Boolean, val userWalletId: UserWalletId, - val onTokenClick: (CryptoCurrencyStatus) -> Unit, + val onTokenClick: (TokenItemState, CryptoCurrencyStatus) -> Unit, ) } \ No newline at end of file diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/tokenlist/entity/transformer/UpdateTokenItemsTransformer.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/tokenlist/entity/transformer/UpdateTokenItemsTransformer.kt index cdf9aedfaa..03adddb707 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/tokenlist/entity/transformer/UpdateTokenItemsTransformer.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/tokenlist/entity/transformer/UpdateTokenItemsTransformer.kt @@ -19,7 +19,7 @@ import kotlinx.collections.immutable.toImmutableList @Suppress("LongParameterList") internal class UpdateTokenItemsTransformer( private val appCurrency: AppCurrency, - private val onItemClick: (CryptoCurrencyStatus) -> Unit, + private val onItemClick: (TokenItemState, CryptoCurrencyStatus) -> Unit, private val statuses: Map>, private val isBalanceHidden: Boolean, private val hasSearchBar: Boolean, diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/transformers/converter/TokenListStateConverter.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/transformers/converter/TokenListStateConverter.kt index 668118d2fb..11f5063820 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/transformers/converter/TokenListStateConverter.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/transformers/converter/TokenListStateConverter.kt @@ -27,8 +27,8 @@ internal class TokenListStateConverter( private val tokenStatusConverter = TokenItemStateConverter( appCurrency = appCurrency, - onItemClick = clickIntents::onTokenItemClick, - onItemLongClick = clickIntents::onTokenItemLongClick, + onItemClick = { _, status -> clickIntents.onTokenItemClick(status) }, + onItemLongClick = { _, status -> clickIntents.onTokenItemLongClick(status) }, ) override fun convert(value: WalletTokensListState): WalletTokensListState {