From dd11f56a38db1cc9dd2a793fe7003a499f1001ca Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 13 Oct 2023 14:26:43 +0500 Subject: [PATCH] Updated on 2026-08-14 --- core/res/src/main/res/values-ru/strings.xml | 21 ++++--- core/res/src/main/res/values/strings.xml | 18 +++--- .../components/TokenDetailsNotification.kt | 56 ++++++++++--------- .../tokendetails/ui/TokenDetailsScreen.kt | 12 +++- .../state/components/WalletNotification.kt | 10 ++-- 5 files changed, 71 insertions(+), 46 deletions(-) diff --git a/core/res/src/main/res/values-ru/strings.xml b/core/res/src/main/res/values-ru/strings.xml index 2250396755..4917da1390 100644 --- a/core/res/src/main/res/values-ru/strings.xml +++ b/core/res/src/main/res/values-ru/strings.xml @@ -568,21 +568,26 @@ Узнать больше Понятно! Очень круто! - Сеть %1$s использует концепцию экзистенциального депозита. Если баланс вашего счета опустится ниже %2$s, он будет деактивирован, а все оставшиеся средства будут уничтожены. - Для работы с сетью необходим депозит. + Cеть %1$s использует концепцию экзистенциального депозита. Если баланс вашего счета будет ниже %2$s, то он будет деактивирован, а средства на счете уничтожены. + Для работы с сетью необходим депозит Эта карта может быть производственным образцом или подделкой Проверка подлинности не удалась Важная информация о безопасности %s На этой карте осталось только %s подписей. Вы должны вывести все свои средства. В данный момент сеть недоступна. Пожалуйста, попробуйте позже. - Сеть недоступна. - Как вам Tangem? - Один вопрос + Сеть недоступна + Пополните ваш кошелек + Ваш отзыв мотивирует нас сделать кошелек Tangem еще лучше + Нравится Tangem? + Необходима плата за аренду сети + %1$s - это токен в сети %2$s. Для совершения транзакции %3$s, вам необходимо внести депозит в размере %4$s (%5$s), чтобы покрыть комиссию сети. + Недостаточно %1$s для оплаты комиссии сети + Отправка средств станет доступной после завершения транзакции %s Эта карта подписывала транзакции в прошлом - В настоящее время сеть недоступна. Пожалуйста, повторите попытку позже. - Некоторые сети в настоящее время недоступны. Пожалуйста, повторите попытку позже. + Сеть Solana взимает арендную плату в размере %1$s каждые 2 дня. Аккаунты, которые не могут позволить себе арендную плату, удаляются из сети. Пополните свой счет более чем на %2$s, чтобы не платить арендную плату. + Некоторые сети в настоящее время недоступны. Пожалуйста, повторите попытку позже. + Некоторые сети недоступны Это тестовая карта. Не принимайте её в качестве оплаты. Эта карта должна использоваться только в целях тестирования и разработки. - Некоторые сети недоступны Отказаться Вы не закончили резервное копирование. Хотите продолжить? Да, возобновить diff --git a/core/res/src/main/res/values/strings.xml b/core/res/src/main/res/values/strings.xml index 8b245bc9b9..b04bede936 100644 --- a/core/res/src/main/res/values/strings.xml +++ b/core/res/src/main/res/values/strings.xml @@ -588,7 +588,7 @@ Love it! Ok, Got it! Really cool! - %1$s network has a concept of Existential Deposit. If your account drops below %2$s it will be deactivated and any remaining funds will be destroyed. + %1$s network requires an Existential Deposit. If your account drops below %2$s, it will be deactivated, and any remaining funds will be destroyed. Network requires Existential Deposit This card might be a production sample or counterfeit Authenticity check failed @@ -596,15 +596,19 @@ There are only %s signatures available on this card. You must withdraw all of your funds. The network is currently unreachable. Please try again later. Network is unreachable - How do you like Tangem? - One question - Rate the app + Top up your wallet + Your review keeps us motivated to make Tangem Wallet even better + Enjoying Tangem? + Network rent fee required + %1$s is a token in the %2$s network. To make a %3$s transaction, you must deposit some %4$s (%5$s) to cover the network fee. + Insufficient %1$s to cover network fee + Sending funds will be available once the %s transaction is complete This card has signed transactions in the past - Network currently is unreachable. Please try again later. - Some networks currently are unreachable. Please try again later. + Solana network charges a rent of %1$s every 2 days. Accounts that can\'t afford the rent are purged from the network. Deposit your account with more than %2$s to use it for free. + Some networks currently are unreachable. Please try again later. + Some networks are unreachable This is a Testnet card. Don\'t accept it as a payment. This card must only be used for testing and development purposes. Note top up - Some networks are unreachable Discard You have an interrupted backup. Do you want to resume? Yes, resume diff --git a/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/state/components/TokenDetailsNotification.kt b/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/state/components/TokenDetailsNotification.kt index 99d77114ba..fd43bdcd6e 100644 --- a/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/state/components/TokenDetailsNotification.kt +++ b/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/state/components/TokenDetailsNotification.kt @@ -11,49 +11,52 @@ import com.tangem.features.tokendetails.impl.R // TODO: Finalize notification strings [REDACTED_JIRA] @Immutable -sealed class TokenDetailsNotification( - open val config: NotificationConfig, -) { +sealed class TokenDetailsNotification { + + abstract val config: NotificationConfig + + sealed class Informational : TokenDetailsNotification() + sealed class Warning : TokenDetailsNotification() data class RentInfo( private val rentInfo: CryptoCurrencyWarning.Rent, private val onCloseClick: () -> Unit, - ) : TokenDetailsNotification( - config = NotificationConfig( - title = TextReference.Res(R.string.send_network_fee_title), + ) : Warning() { + override val config = NotificationConfig( + title = TextReference.Res(R.string.warning_rent_fee_title), subtitle = TextReference.Res( - id = R.string.solana_rent_warning, + id = R.string.warning_solana_rent_fee_message, formatArgs = wrappedList(rentInfo.rent, rentInfo.exemptionAmount), ), iconResId = R.drawable.img_attention_20, onCloseClick = onCloseClick, - ), - ) + ) + } data class ExistentialDeposit( private val existentialInfo: CryptoCurrencyWarning.ExistentialDeposit, - ) : TokenDetailsNotification( - config = NotificationConfig( + ) : Informational() { + override val config = NotificationConfig( title = resourceReference(R.string.warning_existential_deposit_title), subtitle = TextReference.Res( id = R.string.warning_existential_deposit_message, formatArgs = wrappedList(existentialInfo.currencyName, existentialInfo.edStringValueWithSymbol), ), - iconResId = R.drawable.img_attention_20, - ), - ) + iconResId = R.drawable.ic_alert_circle_24, + ) + } data class NetworkFee( private val feeInfo: CryptoCurrencyWarning.BalanceNotEnoughForFee, private val onBuyClick: () -> Unit, - ) : TokenDetailsNotification( - config = NotificationConfig( + ) : Warning() { + override val config = NotificationConfig( title = TextReference.Res( - id = R.string.notification_title_not_enough_funds, + id = R.string.warning_send_blocked_funds_for_fee_title, formatArgs = wrappedList(feeInfo.blockchainFullName), ), subtitle = TextReference.Res( - id = R.string.token_details_send_blocked_fee_format, + id = R.string.warning_send_blocked_funds_for_fee_message, formatArgs = wrappedList( feeInfo.currency.name, feeInfo.blockchainFullName, @@ -64,17 +67,20 @@ sealed class TokenDetailsNotification( ), iconResId = feeInfo.currency.networkIconResId, buttonsState = NotificationConfig.ButtonsState.SecondaryButtonConfig( - text = TextReference.Res(R.string.common_buy), + text = resourceReference( + id = R.string.common_buy_currency, + formatArgs = wrappedList(feeInfo.blockchainSymbol), + ), onClick = onBuyClick, ), - ), - ) + ) + } - object NetworksUnreachable : TokenDetailsNotification( - config = NotificationConfig( + object NetworksUnreachable : Warning() { + override val config = NotificationConfig( title = resourceReference(R.string.warning_network_unreachable_title), subtitle = resourceReference(R.string.warning_network_unreachable_message), iconResId = R.drawable.img_attention_20, - ), - ) + ) + } } \ No newline at end of file diff --git a/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/ui/TokenDetailsScreen.kt b/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/ui/TokenDetailsScreen.kt index e2ecb00e2e..67f09871a1 100644 --- a/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/ui/TokenDetailsScreen.kt +++ b/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/ui/TokenDetailsScreen.kt @@ -32,6 +32,7 @@ import com.tangem.core.ui.components.transactions.txHistoryItems import com.tangem.core.ui.res.TangemTheme import com.tangem.feature.tokendetails.presentation.tokendetails.TokenDetailsPreviewData import com.tangem.feature.tokendetails.presentation.tokendetails.state.TokenDetailsState +import com.tangem.feature.tokendetails.presentation.tokendetails.state.components.TokenDetailsNotification import com.tangem.feature.tokendetails.presentation.tokendetails.ui.components.TokenDetailsBalanceBlock import com.tangem.feature.tokendetails.presentation.tokendetails.ui.components.TokenDetailsDialogs import com.tangem.feature.tokendetails.presentation.tokendetails.ui.components.TokenDetailsTopAppBar @@ -93,7 +94,16 @@ internal fun TokenDetailsScreen(state: TokenDetailsState) { items = state.notifications, key = { it.config::class.java }, contentType = { it.config::class.java }, - itemContent = { Notification(config = it.config, modifier = itemModifier.animateItemPlacement()) }, + itemContent = { + Notification( + modifier = itemModifier.animateItemPlacement(), + config = it.config, + iconTint = when (it) { + is TokenDetailsNotification.Warning -> null + is TokenDetailsNotification.Informational -> TangemTheme.colors.icon.accent + }, + ) + }, ) if (!state.isCustomToken) { item( diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/components/WalletNotification.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/components/WalletNotification.kt index 5a2120d0e3..6c3fd2d2d8 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/components/WalletNotification.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/components/WalletNotification.kt @@ -79,13 +79,13 @@ sealed class WalletNotification(val config: NotificationConfig) { ) object NetworksUnreachable : Warning( - title = resourceReference(id = R.string.wallet_balance_blockchain_unreachable), - subtitle = resourceReference(id = R.string.warning_subtitle_network_unreachable), + title = resourceReference(id = R.string.warning_network_unreachable_title), + subtitle = resourceReference(id = R.string.warning_network_unreachable_message), ) object SomeNetworksUnreachable : Warning( - title = resourceReference(id = R.string.warning_title_some_networks_unreachable), - subtitle = resourceReference(id = R.string.warning_subtitle_some_networks_unreachable), + title = resourceReference(id = R.string.warning_some_networks_unreachable_title), + subtitle = resourceReference(id = R.string.warning_some_networks_unreachable_message), ) data class TopUpNote(val errorMessage: String) : Warning( @@ -137,7 +137,7 @@ sealed class WalletNotification(val config: NotificationConfig) { val onCloseClick: () -> Unit, ) : WalletNotification( config = NotificationConfig( - title = resourceReference(id = R.string.warning_rate_app_title_new), + title = resourceReference(id = R.string.warning_rate_app_title), subtitle = resourceReference(id = R.string.warning_rate_app_message), iconResId = R.drawable.ic_star_24, buttonsState = NotificationConfig.ButtonsState.PairButtonsConfig(