From 1e6d95e494967602f9df2162447dfea50a1d98b6 Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 21 Jul 2025 16:37:52 +0500 Subject: [PATCH] Updated on 2026-08-14 --- .../provider/ProviderChooseCrypto.kt | 23 ++++++++++++++++--- .../provider/entity/ProviderChooseUM.kt | 2 ++ .../ui/SwapChooseProviderBottomSheet.kt | 8 ++++++- 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/core/ui/src/main/java/com/tangem/core/ui/components/provider/ProviderChooseCrypto.kt b/core/ui/src/main/java/com/tangem/core/ui/components/provider/ProviderChooseCrypto.kt index 4130c95004..aa7f0f5d08 100644 --- a/core/ui/src/main/java/com/tangem/core/ui/components/provider/ProviderChooseCrypto.kt +++ b/core/ui/src/main/java/com/tangem/core/ui/components/provider/ProviderChooseCrypto.kt @@ -8,6 +8,7 @@ import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.alpha import androidx.compose.ui.draw.clip import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.text.style.TextOverflow @@ -33,6 +34,8 @@ import com.tangem.core.ui.res.TangemTheme import com.tangem.core.ui.res.TangemThemePreview import kotlinx.collections.immutable.persistentListOf +private const val DISABLED_ICON_ALPHA = 0.4f + /** * Provider Row - Choose Crypto component * @@ -43,14 +46,17 @@ import kotlinx.collections.immutable.persistentListOf * @see Figma */ @Composable -@Suppress("DestructuringDeclarationWithTooManyEntries") +@Suppress("DestructuringDeclarationWithTooManyEntries", "LongMethod") fun ProviderChooseCrypto(providerChooseUM: ProviderChooseUM, onClick: () -> Unit, modifier: Modifier = Modifier) { ConstraintLayout( modifier = modifier .background(TangemTheme.colors.background.action) .clip(RoundedCornerShape(14.dp)) .selectedBorder(isSelected = providerChooseUM.isSelected) - .clickable(enabled = true, onClick = onClick) + .clickable( + enabled = !providerChooseUM.hasError(), + onClick = onClick, + ) .fillMaxWidth() .padding(all = 12.dp), ) { @@ -60,6 +66,13 @@ fun ProviderChooseCrypto(providerChooseUM: ProviderChooseUM, onClick: () -> Unit IconContent( iconUrl = providerChooseUM.iconUrl, modifier = Modifier + .alpha( + if (providerChooseUM.hasError()) { + DISABLED_ICON_ALPHA + } else { + 1.0f + }, + ) .constrainAs(iconRef) { start.linkTo(parent.start) top.linkTo(parent.top) @@ -140,7 +153,11 @@ private fun TitleContent(providerChooseUM: ProviderChooseUM, modifier: Modifier Text( text = providerChooseUM.title.resolveReference(), style = TangemTheme.typography.subtitle2, - color = TangemTheme.colors.text.primary1, + color = if (providerChooseUM.hasError()) { + TangemTheme.colors.text.secondary + } else { + TangemTheme.colors.text.primary1 + }, maxLines = 1, ) Text( diff --git a/core/ui/src/main/java/com/tangem/core/ui/components/provider/entity/ProviderChooseUM.kt b/core/ui/src/main/java/com/tangem/core/ui/components/provider/entity/ProviderChooseUM.kt index 8814ed4c8f..50cdfc87c2 100644 --- a/core/ui/src/main/java/com/tangem/core/ui/components/provider/entity/ProviderChooseUM.kt +++ b/core/ui/src/main/java/com/tangem/core/ui/components/provider/entity/ProviderChooseUM.kt @@ -52,4 +52,6 @@ data class ProviderChooseUM( val text: TextReference, ) : ExtraUM() } + + fun hasError(): Boolean = extraUM is ExtraUM.Error } \ No newline at end of file diff --git a/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/chooseprovider/ui/SwapChooseProviderBottomSheet.kt b/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/chooseprovider/ui/SwapChooseProviderBottomSheet.kt index 1b2b8d2e04..46ab92931b 100644 --- a/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/chooseprovider/ui/SwapChooseProviderBottomSheet.kt +++ b/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/chooseprovider/ui/SwapChooseProviderBottomSheet.kt @@ -58,12 +58,18 @@ internal fun SwapChooseProviderContent( horizontalAlignment = Alignment.CenterHorizontally, modifier = Modifier.padding(horizontal = 13.dp), ) { + Text( + text = stringResourceSafe(id = R.string.onramp_choose_provider_title_hint), + style = TangemTheme.typography.caption2, + color = TangemTheme.colors.text.secondary, + textAlign = TextAlign.Center, + ) providerList.fastForEachIndexed { index, provider -> ProviderChooseCrypto( providerChooseUM = provider.providerUM, onClick = { onProviderClick(provider.quote) }, modifier = modifier - .conditional(index == 0) { padding(top = 6.dp) }, + .conditional(index == 0) { padding(top = 24.dp) }, ) } Icon(