diff --git a/core/res/src/main/res/values-de/strings.xml b/core/res/src/main/res/values-de/strings.xml index e4f4e75ca9..516445f46f 100644 --- a/core/res/src/main/res/values-de/strings.xml +++ b/core/res/src/main/res/values-de/strings.xml @@ -722,6 +722,7 @@ Pro Block Täglich Täglich + Alle %1$s Sek. Pro Epoche Pro Ära Stündlich @@ -744,6 +745,7 @@ Unstake Assets %s Validator/ Prüfer Validatoren + Strategischer Partner Abstimmung Abstimmung gesperrt Zurückziehen diff --git a/core/res/src/main/res/values-es/strings.xml b/core/res/src/main/res/values-es/strings.xml index 961dbdaafb..ba3e1b02eb 100644 --- a/core/res/src/main/res/values-es/strings.xml +++ b/core/res/src/main/res/values-es/strings.xml @@ -338,7 +338,7 @@ Eliminar por ejemplo, BTC I trust, hodl I must - Su cartera ha sido actualizada + Su portafolio ha sido actualizada El token seleccionado no está disponible actualmente para acciones dentro de la billetera cripto. Pero no se preocupa, puede expresar su interés votando a favor. Votar a favor Elegir wallet @@ -373,7 +373,7 @@ Compradores experimentados Evaluación Ordenar por - Mejores Ganadores + Top Ganadores Top Perdedores Tendencias Acerca de %s @@ -720,6 +720,7 @@ Bloquear Día Cada día + Cada %1$s segundo(s) Época Era Hora @@ -742,8 +743,9 @@ Detenando el staking de activos %s Validador Validadores + Socio estratégico Votar - Voto bloqueado + Votar Retirar Sus stakes Almacene sus activos crypto de forma segura manteniendo las claves privadas contenidas en su tarjeta diff --git a/core/res/src/main/res/values-fr/strings.xml b/core/res/src/main/res/values-fr/strings.xml index 17c960b9e2..e310d6723c 100644 --- a/core/res/src/main/res/values-fr/strings.xml +++ b/core/res/src/main/res/values-fr/strings.xml @@ -720,6 +720,7 @@ Bloquer Jour Chaque jour + Toute(s) les %1$s seconde(s) Époque Ère Heure @@ -742,8 +743,9 @@ En train de destaker les actifs %s Validateur Validateurs + Partenaire stratégique Voter - Vote bloqué + Voter Retirer Vos stakes Stockez vos actifs crypto en toute sécurité tout en conservant les clés privées contenues dans votre carte diff --git a/core/res/src/main/res/values-ja/strings.xml b/core/res/src/main/res/values-ja/strings.xml index 9066c1ebb1..0d15d6edfc 100644 --- a/core/res/src/main/res/values-ja/strings.xml +++ b/core/res/src/main/res/values-ja/strings.xml @@ -95,6 +95,9 @@ %d 日 + + + 削除 無効 完了 @@ -340,7 +343,7 @@ 賛成票を投じる ウォレットを選択 ウォレットは複数のネットワークをサポートしていません。 - このアセットの購入、交換、受け取りを開始するには、ポートフォリオに追加してください。 + このアセットを購入・交換・受け取るには、ポートフォリオに追加してください。 このアセットは利用できません このアセットはこのウォレットでは使用できません。 ポートフォリオに追加 @@ -375,6 +378,9 @@ 下落率上位 トレンド %sについて + + %d取引所 + %d のレーティングに基づいて @@ -385,6 +391,12 @@ 循環供給量 取引可能で市場に流通しているコインの総数 循環供給量 + 取引所が見つかりません + 取引所 + 注意 + 危険 + 信頼できる + 取引所 経験豊富な買い手 少なくとも100の発信取引を持つネット・バイヤー 経験豊富な買い手 @@ -402,6 +414,7 @@ 指定された期間中のトークンに利用可能な流動性の変化 流動性 流動性指数 + 上場先 低い 時価総額 暗号資産の市場価値の合計。コインの現在の価格と、流通しているコインの総数を掛けて計算されます。 @@ -424,6 +437,7 @@ 取引量(24時間) 過去24時間以内に取引された暗号資産の合計額。市場の活発さと流動性を示します。 取引量(24時間) + 取引量 これをドラッグするか、検索窓をタップして、マーケットから直接トークンを追加します トークンを追加 お使いのデバイスではNFCが使用できません @@ -712,7 +726,10 @@ 手動 ブロック毎 毎日 + %sごと 毎日 + %1$s日ごとに + %1$s秒毎 エポック毎 時代毎 毎時間 @@ -723,6 +740,7 @@ もっとステーキングする %1$sをステーキングし、年間 %2$sを受け取ります タップしてロック解除 + タップしてロック解除もしくは投票 タップして引き出す %sをステーキングする %sのステーキング解除 @@ -735,8 +753,9 @@ ステーキング解除中の資産%s バリデーター バリデーター + 戦略的パートナー 投票する - 投票はロックされています + 投票する 引き出す あなたのステーキング カード内に秘密鍵を保管しながら暗号資産を安全に保管します diff --git a/core/res/src/main/res/values-ru/strings.xml b/core/res/src/main/res/values-ru/strings.xml index 6f25020e8d..e8db31eab3 100644 --- a/core/res/src/main/res/values-ru/strings.xml +++ b/core/res/src/main/res/values-ru/strings.xml @@ -101,6 +101,12 @@ %d дней %d дней + + день + дня + дней + дней + Удалить Отключено Готово @@ -382,6 +388,12 @@ Лидеры падения В тренде О %s + + %d биржа + %d биржи + %d бирж + %d бирж + На основе %d оценки На основе %d оценок @@ -395,6 +407,12 @@ Циркулир. предл. Общее количество монет, доступных для торговли и находящихся в обращении на рынке Циркулирующее предложение + Биржи не найдены + Биржа + Осторожно + Рискованно + Надежно + Биржи Опытные трейдеры Покупатели, у которых было как минимум 100 исходящих транзакций. Опытные трейдеры @@ -412,6 +430,7 @@ Изменение объема ликвидности, доступной для токена в течение указанного периода времени. Ликвидность Индекс ликвидности + Листинг на Низкий Рын. кап. Общая рыночная стоимость криптовалюты, рассчитываемая путем умножения текущей цены монеты на общее количество монет в обращении. @@ -434,6 +453,7 @@ Объем торгов (24ч) Общая сумма криптовалюты, которая была продана за последние 24 часа, показывающая уровень активности и ликвидности на рынке. Объем торгов (24ч) + Объем Потяните вверх или коснитесь поисковой строки, чтобы добавить токены напрямую из рынка Добавить токены Функция NFC недоступна на вашем устройстве @@ -509,7 +529,7 @@ Подготовьте основную карту с номером %s Ваша карта настроена и готова к использованию. Добавлено максимальное количество карт. Завершите процесс резервного копирования. - Активация карты + Активация кошелька Резервная карта #%d Нет резервных карт Уведомления @@ -734,6 +754,8 @@ За блок Ежедневно Каждый день + Каждые %1$s дня + Каждые %1$s сек За эпоху За эру Ежечасно @@ -757,8 +779,9 @@ Завершение стейкинга %s Валидатор Валидаторы + Стратегический партнер Проголосовать - Голосование заблокировано + Проголосовать Вывод Застейканные средства Держите свои криптосбережения в безопасности. Приватные ключи надежно хранятся на карте. diff --git a/core/res/src/main/res/values-uk-rUA/strings.xml b/core/res/src/main/res/values-uk-rUA/strings.xml index 611026a7cb..5a9fb13979 100644 --- a/core/res/src/main/res/values-uk-rUA/strings.xml +++ b/core/res/src/main/res/values-uk-rUA/strings.xml @@ -737,6 +737,7 @@ Блок День Щодня + Кожні %1$s сек Епоха Ера Година @@ -759,6 +760,7 @@ Виведення зі стейкінгу %s Валідатор Валідатори + Стратегічний партнер Проголосувати Голос заблоковано Зняти diff --git a/core/res/src/main/res/values/strings.xml b/core/res/src/main/res/values/strings.xml index 3e97f225bf..7d4c202a25 100644 --- a/core/res/src/main/res/values/strings.xml +++ b/core/res/src/main/res/values/strings.xml @@ -97,6 +97,10 @@ %d day %d days + + day + days + Delete Disabled Done @@ -378,6 +382,10 @@ Top Losers Trending About %s + + %d exchange + %d exchanges + Based on %d rating Based on %d ratings @@ -389,6 +397,12 @@ Circulating supply The total number of coins that are available for trading and are circulating in the market Circulating supply + No exchanges found + Exchange + Caution + Risky + Trusted + Exchanges Experienced buyers Net buyers with the additional requirement of having at least 100 outgoing transactions Experienced buyers @@ -406,6 +420,7 @@ The change in how much liquidity is available for the token during the specified timeframe Liquidity Liquidity index + Listed on Low Market cap The total market value of a cryptocurrency, calculated by multiplying the current price of the coin by the total number of coins in circulation @@ -428,6 +443,7 @@ Trading volume (24h) The total amount of a cryptocurrency that has been traded within the last 24 hours, indicating the level of activity and liquidity in the market Trading volume (24h) + Volume Pull this up or tap the search bar to add tokens directly from the market Add tokens NFC is not available on your device @@ -499,7 +515,7 @@ Prepare the primary card with number %s Your wallet card is configured and ready for use. Max number of cards added. Finalize the backup process. - Activating card + Activating wallet Backup card #%d No backup cards Notifications @@ -679,7 +695,7 @@ Reward claiming Method of receiving staking rewards.\nIt can be either automatic, where the reward is credited to your address, or manual, where you need to withdraw the reward by creating a transaction to receive it. Reward schedule - This is a schedule that determines when participants in staking receive their rewards. + This is a schedule that determines when participants in staking receive their rewards. The reward distribution time may vary slightly depending on the validator and network load. Rewards: %s Staking %s Unbonding Period @@ -720,7 +736,10 @@ Manual Per Block Daily - Daily + Each %s + Each day + Each %1$s days + Each %1$s sec Per Epoch Per Era Hourly @@ -744,8 +763,9 @@ Unstaking assets %s Validator Validators + Strategic partner Vote - Vote locked + Vote Withdraw Your stakes Store your crypto assets secure while keeping private keys contained in your card diff --git a/core/ui/src/main/java/com/tangem/core/ui/components/inputrow/InputRowImageBase.kt b/core/ui/src/main/java/com/tangem/core/ui/components/inputrow/InputRowImageBase.kt index bd65f92ab5..36c14965b1 100644 --- a/core/ui/src/main/java/com/tangem/core/ui/components/inputrow/InputRowImageBase.kt +++ b/core/ui/src/main/java/com/tangem/core/ui/components/inputrow/InputRowImageBase.kt @@ -24,7 +24,6 @@ import com.tangem.core.ui.components.inputrow.inner.InputRowAsyncImage import com.tangem.core.ui.extensions.TextReference import com.tangem.core.ui.extensions.resolveAnnotatedReference import com.tangem.core.ui.extensions.resolveReference -import com.tangem.core.ui.res.TangemColorPalette import com.tangem.core.ui.res.TangemTheme import com.tangem.core.ui.res.TangemThemePreview @@ -33,15 +32,17 @@ import com.tangem.core.ui.res.TangemThemePreview * [Input Row Image](https://www.figma.com/design/14ISV23YB1yVW1uNVwqrKv/Android?node-id=2841-1589&t=u6pOF6lsdpvWLELb-4) * * @param subtitle subtitle text - * @param caption caption text * @param modifier modifier + * @param caption caption text * @param imageUrl icon to load + * @param iconRes icon resource * @param subtitleColor subtitle text color * @param captionColor caption text color + * @param iconTint icon tint * @param isGrayscaleImage whether to display grayscale image - * @param subtitleEndIconRes icon to show after subtitle * @param iconEndRes icon to end of row * @param onImageError composable to show if image loading failed + * @param subtitleExtraContent subtitle extra content * @param extraContent extra content */ @Suppress("LongMethod") @@ -56,10 +57,9 @@ internal fun InputRowImageBase( captionColor: Color = TangemTheme.colors.text.tertiary, iconTint: Color = TangemTheme.colors.icon.informative, isGrayscaleImage: Boolean = false, - @DrawableRes subtitleEndIconRes: Int? = null, - subtitleEndIconTint: Color = TangemColorPalette.Azure, @DrawableRes iconEndRes: Int? = null, onImageError: (@Composable () -> Unit)? = null, + subtitleExtraContent: (@Composable RowScope.() -> Unit)? = null, extraContent: (@Composable RowScope.() -> Unit)? = null, ) { Row( @@ -100,10 +100,7 @@ internal fun InputRowImageBase( style = TangemTheme.typography.subtitle2, color = subtitleColor, ) - SubtitleEndIconRes( - subtitleEndIconRes = subtitleEndIconRes, - subtitleEndIconTint = subtitleEndIconTint, - ) + subtitleExtraContent?.invoke(this) } if (caption != null) { Text( @@ -124,23 +121,6 @@ internal fun InputRowImageBase( } } -@Composable -private fun RowScope.SubtitleEndIconRes(subtitleEndIconRes: Int?, subtitleEndIconTint: Color) { - AnimatedVisibility( - visible = subtitleEndIconRes != null, - label = "Subtitle end icon visibility animation", - modifier = Modifier.align(Alignment.CenterVertically), - ) { - val icon = remember(this) { requireNotNull(subtitleEndIconRes) } - Icon( - painter = rememberVectorPainter(image = ImageVector.vectorResource(id = icon)), - tint = subtitleEndIconTint, - contentDescription = null, - modifier = Modifier.padding(start = TangemTheme.dimens.spacing4), - ) - } -} - @Composable private fun RowScope.InputRowEndIcon(iconRes: Int?) { AnimatedVisibility( diff --git a/core/ui/src/main/java/com/tangem/core/ui/components/inputrow/InputRowImageInfo.kt b/core/ui/src/main/java/com/tangem/core/ui/components/inputrow/InputRowImageInfo.kt index 366bd4e48d..c908519e10 100644 --- a/core/ui/src/main/java/com/tangem/core/ui/components/inputrow/InputRowImageInfo.kt +++ b/core/ui/src/main/java/com/tangem/core/ui/components/inputrow/InputRowImageInfo.kt @@ -2,14 +2,21 @@ package com.tangem.core.ui.components.inputrow import android.content.res.Configuration import androidx.annotation.DrawableRes +import androidx.compose.animation.AnimatedVisibility import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.RowScope import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Icon import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.graphics.vector.rememberVectorPainter +import androidx.compose.ui.res.vectorResource import androidx.compose.ui.text.buildAnnotatedString import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.PreviewParameter @@ -17,6 +24,7 @@ import androidx.compose.ui.tooling.preview.PreviewParameterProvider import com.tangem.core.ui.R import com.tangem.core.ui.components.atoms.text.EllipsisText import com.tangem.core.ui.extensions.* +import com.tangem.core.ui.res.TangemColorPalette import com.tangem.core.ui.res.TangemTheme import com.tangem.core.ui.res.TangemThemePreview @@ -24,17 +32,19 @@ import com.tangem.core.ui.res.TangemThemePreview * Input row component with selector * [Input Row Image](https://www.figma.com/design/14ISV23YB1yVW1uNVwqrKv/Android?node-id=2841-1589&t=u6pOF6lsdpvWLELb-4) * - * @param title title text * @param subtitle subtitle text - * @param caption caption text * @param infoTitle info title text - * @param infoSubtitle info subtitle text * @param modifier modifier + * @param title title text + * @param caption caption text + * @param infoSubtitle info subtitle text * @param imageUrl icon to load + * @param iconRes icon resource * @param subtitleColor subtitle text color * @param captionColor caption text color + * @param iconTint icon color * @param isGrayscaleImage whether to display grayscale image - * @param showPendingIcon whether to show pending icon + * @param subtitleEndIconRes subtitle icon to end of row * @param iconEndRes icon to end of row * @param onImageError composable to show if image loading failed */ @@ -78,9 +88,14 @@ fun InputRowImageInfo( subtitleColor = subtitleColor, captionColor = captionColor, isGrayscaleImage = isGrayscaleImage, - subtitleEndIconRes = subtitleEndIconRes, iconEndRes = iconEndRes, onImageError = onImageError, + subtitleExtraContent = { + SubtitleEndIconRes( + subtitleEndIconRes = subtitleEndIconRes, + subtitleEndIconTint = TangemColorPalette.Azure, + ) + }, ) { Column( verticalArrangement = Arrangement.spacedBy(TangemTheme.dimens.spacing2), @@ -120,6 +135,23 @@ fun InputRowImageInfo( } } +@Composable +private fun RowScope.SubtitleEndIconRes(subtitleEndIconRes: Int?, subtitleEndIconTint: Color) { + AnimatedVisibility( + visible = subtitleEndIconRes != null, + label = "Subtitle end icon visibility animation", + modifier = Modifier.align(Alignment.CenterVertically), + ) { + val icon = remember(this) { requireNotNull(subtitleEndIconRes) } + Icon( + painter = rememberVectorPainter(image = ImageVector.vectorResource(id = icon)), + tint = subtitleEndIconTint, + contentDescription = null, + modifier = Modifier.padding(start = TangemTheme.dimens.spacing4), + ) + } +} + // region Preview @Preview(showBackground = true, widthDp = 360) @Preview(showBackground = true, widthDp = 360, uiMode = Configuration.UI_MODE_NIGHT_YES) diff --git a/core/ui/src/main/java/com/tangem/core/ui/components/inputrow/InputRowImageSelector.kt b/core/ui/src/main/java/com/tangem/core/ui/components/inputrow/InputRowImageSelector.kt index 287edc1197..a9921a83b5 100644 --- a/core/ui/src/main/java/com/tangem/core/ui/components/inputrow/InputRowImageSelector.kt +++ b/core/ui/src/main/java/com/tangem/core/ui/components/inputrow/InputRowImageSelector.kt @@ -4,6 +4,7 @@ import android.content.res.Configuration import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.interaction.MutableInteractionSource +import androidx.compose.foundation.layout.RowScope import androidx.compose.foundation.layout.padding import androidx.compose.material3.ripple import androidx.compose.runtime.Composable @@ -40,8 +41,9 @@ import java.math.BigDecimal * @param subtitleColor subtitle text color * @param captionColor caption text color * @param isSelected true if selected - * @param selectorContent selector content * @param onImageError composable to show if image loading failed + * @param subtitleExtraContent subtitle selector content + * @param selectorContent selector content */ @Composable fun InputRowImageSelector( @@ -54,6 +56,7 @@ fun InputRowImageSelector( captionColor: Color = TangemTheme.colors.text.tertiary, isSelected: Boolean = false, onImageError: (@Composable () -> Unit)? = null, + subtitleExtraContent: (@Composable RowScope.() -> Unit)? = null, selectorContent: @Composable ((isSelected: Boolean, isEnabled: Boolean, onSelect: () -> Unit) -> Unit), ) { InputRowImageBase( @@ -63,6 +66,7 @@ fun InputRowImageSelector( subtitleColor = subtitleColor, captionColor = captionColor, onImageError = onImageError, + subtitleExtraContent = subtitleExtraContent, modifier = modifier .clickable( onClick = onSelect, diff --git a/data/staking/src/main/java/com/tangem/data/staking/converters/YieldConverter.kt b/data/staking/src/main/java/com/tangem/data/staking/converters/YieldConverter.kt index 2ff434f089..7499cb4a34 100644 --- a/data/staking/src/main/java/com/tangem/data/staking/converters/YieldConverter.kt +++ b/data/staking/src/main/java/com/tangem/data/staking/converters/YieldConverter.kt @@ -123,6 +123,7 @@ class YieldConverter( stakedBalance = validatorDTO.stakedBalance, votingPower = validatorDTO.votingPower, preferred = validatorDTO.preferred, + isStrategicPartner = isStrategicPartner(validatorDTO.address), ) } @@ -174,4 +175,12 @@ class YieldConverter( else -> Yield.Args.ArgType.UNKNOWN } } + + private fun isStrategicPartner(validatorAddress: String): Boolean = PARTNERS.any { it == validatorAddress } + + private companion object { + val PARTNERS = listOf( + "cosmosvaloper1wrx0x9m9ykdhw9sg04v7uljme53wuj03aa5d4f", + ) + } } \ No newline at end of file diff --git a/domain/staking/models/src/main/kotlin/com/tangem/domain/staking/model/stakekit/Yield.kt b/domain/staking/models/src/main/kotlin/com/tangem/domain/staking/model/stakekit/Yield.kt index c65303fd35..768d65cbf4 100644 --- a/domain/staking/models/src/main/kotlin/com/tangem/domain/staking/model/stakekit/Yield.kt +++ b/domain/staking/models/src/main/kotlin/com/tangem/domain/staking/model/stakekit/Yield.kt @@ -62,6 +62,7 @@ data class Yield( val stakedBalance: String? = null, val votingPower: Double? = null, val preferred: Boolean, + val isStrategicPartner: Boolean, ) { enum class ValidatorStatus { diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/previewdata/ConfirmationStatePreviewData.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/previewdata/ConfirmationStatePreviewData.kt index e68d171b89..d9c7263d8e 100644 --- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/previewdata/ConfirmationStatePreviewData.kt +++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/previewdata/ConfirmationStatePreviewData.kt @@ -28,6 +28,7 @@ internal object ConfirmationStatePreviewData { website = "https://luganodes.com/", votingPower = 0.09778360195377911, preferred = true, + isStrategicPartner = false, ), Yield.Validator( address = "0x35b1ca0f398905cf752e6fe122b51c88022fca32", @@ -40,6 +41,7 @@ internal object ConfirmationStatePreviewData { website = "https://infstones.com/", votingPower = 0.0034366257754399774, preferred = true, + isStrategicPartner = false, ), Yield.Validator( address = "0xd14a87025109013b0a2354a775cb335f926af65a", @@ -52,6 +54,7 @@ internal object ConfirmationStatePreviewData { website = "https://infstones.com/", votingPower = 0.023487238579718264, preferred = true, + isStrategicPartner = true, ), ) diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/previewdata/InitialStakingStatePreview.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/previewdata/InitialStakingStatePreview.kt index e42df87aba..d3890582f5 100644 --- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/previewdata/InitialStakingStatePreview.kt +++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/previewdata/InitialStakingStatePreview.kt @@ -86,6 +86,7 @@ internal object InitialStakingStatePreview { stakedBalance = null, votingPower = null, preferred = false, + isStrategicPartner = false, ), pendingActions = persistentListOf(), isClickable = true, diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/ui/StakingValidatorListContent.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/ui/StakingValidatorListContent.kt index c86ebb7e95..9ddda86f32 100644 --- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/ui/StakingValidatorListContent.kt +++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/ui/StakingValidatorListContent.kt @@ -5,16 +5,22 @@ import androidx.compose.animation.AnimatedVisibility import androidx.compose.foundation.background import androidx.compose.foundation.layout.* import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.Icon +import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.graphics.vector.rememberVectorPainter import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.vectorResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameterProvider +import androidx.compose.ui.unit.dp import com.tangem.core.ui.components.inputrow.InputRowImageSelector import com.tangem.core.ui.decorations.roundedShapeItemDecoration import com.tangem.core.ui.extensions.* @@ -78,6 +84,9 @@ internal fun StakingValidatorListContent( false, ) .background(TangemTheme.colors.background.action), + subtitleExtraContent = { + ValidatorLabel(item.isStrategicPartner) + }, selectorContent = { checked, _, _ -> AnimatedVisibility( modifier = Modifier, @@ -99,6 +108,23 @@ internal fun StakingValidatorListContent( } } +@Composable +private fun RowScope.ValidatorLabel(isStrategicPartner: Boolean) { + if (isStrategicPartner) { + Text( + text = stringResource(R.string.staking_validators_label), + style = TangemTheme.typography.caption1, + color = TangemTheme.colors.icon.constant, + modifier = Modifier + .align(Alignment.CenterVertically) + .padding(horizontal = 6.dp) + .clip(RoundedCornerShape(6.dp)) + .background(TangemTheme.colors.text.accent) + .padding(horizontal = 8.dp), + ) + } +} + // region Preview @Preview(showBackground = true, widthDp = 360) @Preview(showBackground = true, widthDp = 360, uiMode = Configuration.UI_MODE_NIGHT_YES)