diff --git a/core/res/src/main/res/values-ru/strings.xml b/core/res/src/main/res/values-ru/strings.xml index f71126d7f2..bc227501e8 100644 --- a/core/res/src/main/res/values-ru/strings.xml +++ b/core/res/src/main/res/values-ru/strings.xml @@ -368,6 +368,7 @@ По балансу Сортировка токенов Список + Выбрать из галереи Нравится наше приложение? %1$s (%2$s) в сети %3$s Отправляйте только %s на этот адрес. Использование другой сети может привести к утрате средств. @@ -444,17 +445,23 @@ Низкая Нормальная Приоритетная + Проверьте своё интернет соединение + Информация о комиссии сети недоступна + Из Лимит газа + Это максимальное количество газа, которое будет потрачено на выполнение транзакции или контракта. Лимит газа предотвращает неожиданные или неограниченные расходы при выполнении транзакции. Цена газа - Цена газа влияет на скорость транзакции. При сильно низкой, транзакция может быть не обработана. + Это стоимость, которую вы готовы заплатить за каждую единицу газа. Чем выше цена газа, тем быстрее ваша транзакция будет обработана. Всё Максимальная сумма Комиссия не превысит - Максимальная cумма комиссии + Комиссия, которая будет взята за вашу транзакцию. Вы можете выставить своё собственное значение. Сумма отправки будет уменьшена на %1$s для покрытия выбранного уровня комиссии. Получателю будет отправлено %2$s. Покрытие сетевой комиссии Недостаточно средств для перевода, так как сумма комиссии и сумма перевода в совокупности больше имеющегося баланса Недостаточно средств + Аккаунт будет удален из блокчейна, если баланс упадет ниже экзистенциального депозита. Пожалуйста, убедитесь, что остаток после отправки будет не менее %s. + Экзистенциальный депозит Сумма комиссии в %s раз превышает рекомендованную. Убедитесь, что указанная комиссия верна. Установлена высокая комиссия Комиссия при переводе всего баланса выше. Для того, чтобы снизить комиссию Вы можете оставить %s. @@ -471,12 +478,18 @@ Из-за ограничений %1$s в одну транзакцию может поместиться только %2$s UTXO. Это означает, что вы можете отправить только %3$s или меньше. Вам нужно уменьшить сумму. Лимит транзакции Необязательное + Пожалуйста, совместите свой QR-код с квадратом, чтобы отсканировать его. Убедитесь, что вы сканируете адрес в сети %s. Последние Получатель + Неверный адрес Убедитесь, что вы отправляете средства на адрес кошелька %s. Ошибки могут привести к потере ваших токенов Отправить Мемо/ Код назначения - это код, разделяющий транзакции к общему получателю в сети криптовалют. Внимание: отсутствие мемо может привести к потере средств. Мои кошельки + Отправка + Нажмите на любое поле, чтобы изменить его + Отправка %s + Вы отправляете %1$s, включая комиссию сети %2$s Отправка %s Всего %1$s и %2$s будет отправлено @@ -484,6 +497,7 @@ %s будет отправлено Транзакция успешно подписана и отправлена в блокчейн. Баланс будет обновлен через некоторое время Неверный адрес + Транзакция отправлена Держите свои криптосбережения в безопасности. Приватные ключи надежно хранятся на карте. Революционный аппаратный кошелек До трех карт с одним кошельком @@ -521,6 +535,11 @@ Балансы скрыты Балансы показаны Отменить + В данный момент покупка монеты %s недоступна. Но мы работаем над её добавлением.” + У вас нет средств для отправки. Пополните счет, чтобы иметь возможность отправить с него средства. + Выбранная операция в данный момент недоступна. Попробуйте позже. + Обмен %s не доступен. Но мы работаем над его добавлением. + В данный момент продажа монеты %s недоступна. Но мы работаем над её добавлением. Сгенерировать XPUB Скрыть Вы скрываете токен с главного экрана, но в любой момент сможете добавить его обратно через страницу управления токенами. diff --git a/core/res/src/main/res/values/strings.xml b/core/res/src/main/res/values/strings.xml index 8e0afa7d1e..eacae3a8ac 100644 --- a/core/res/src/main/res/values/strings.xml +++ b/core/res/src/main/res/values/strings.xml @@ -444,13 +444,13 @@ Network fee info unreachable From Gas limit - Gas Limit is auto-calculated; raise it during network congestion + This is the maximum amount of gas that will be spent to complete a transaction or contract. A gas limit prevents unexpected or unlimited charges when executing a transaction. Gas price - Gas Price affects transaction speed. If it\'s too low, the transaction might not be processed + This is the cost you are willing to pay for each unit of gas. The higher the gas price, the faster your transaction will be processed. Max Maximum amount Max fee - Maximum fee amount + The fee that will be charged for your transaction. You can set your own value. Numbers only for Destination Tag Sending amount will be reduced by %1$s to cover the selected commission level. The recipient will get %2$s. Network fee coverage @@ -532,6 +532,11 @@ Balances hidden Balances shown Undo + The purchase of the %s is currently unavailable. But we are working on adding it. + You do not have funds to send. Top up your account to be able to send funds from it. + This operation is currently unavailable. Please try again later. + %s swap is not available. But we are working on adding it. + Sell of the %s coin is currently unavailable. But we are working on adding it. Generate XPUB Hide You are about to hide this token from the main screen. You can add it back anytime through the manage tokens page. diff --git a/core/ui/src/main/java/com/tangem/core/ui/res/TangemDimens.kt b/core/ui/src/main/java/com/tangem/core/ui/res/TangemDimens.kt index d835895565..79a2e16273 100644 --- a/core/ui/src/main/java/com/tangem/core/ui/res/TangemDimens.kt +++ b/core/ui/src/main/java/com/tangem/core/ui/res/TangemDimens.kt @@ -125,6 +125,7 @@ data class TangemDimens internal constructor( val spacing56: Dp = 56.dp, val spacing60: Dp = 60.dp, val spacing70: Dp = 70.dp, + val spacing72: Dp = 72.dp, val spacing76: Dp = 76.dp, val spacing80: Dp = 80.dp, val spacing92: Dp = 92.dp, diff --git a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/SendNavigationButtons.kt b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/SendNavigationButtons.kt index 94b544a15e..5bdb10824e 100644 --- a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/SendNavigationButtons.kt +++ b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/SendNavigationButtons.kt @@ -31,13 +31,17 @@ import com.tangem.features.send.impl.presentation.state.SendUiState import com.tangem.features.send.impl.presentation.state.SendUiStateType @Composable -internal fun SendNavigationButtons(uiState: SendUiState, currentState: SendUiCurrentScreen) { +internal fun SendNavigationButtons( + uiState: SendUiState, + currentState: SendUiCurrentScreen, + modifier: Modifier = Modifier, +) { val sendState = uiState.sendState ?: return val isSuccess = sendState.isSuccess val isSendingState = currentState.type == SendUiStateType.Send && !isSuccess val isSentState = currentState.type == SendUiStateType.Send && isSuccess Column( - modifier = Modifier + modifier = modifier .padding( start = TangemTheme.dimens.spacing16, end = TangemTheme.dimens.spacing16, diff --git a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/SendScreen.kt b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/SendScreen.kt index 91c44b07ab..b227fe07fe 100644 --- a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/SendScreen.kt +++ b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/SendScreen.kt @@ -74,13 +74,17 @@ internal fun SendScreen(uiState: SendUiState, currentStateFlow: StateFlow { + override val values: Sequence + get() = sequenceOf( + AmountStatePreviewData.amountState, + ) +} +// endregion \ No newline at end of file diff --git a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/common/Notifications.kt b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/common/Notifications.kt index 21791d730d..c4634330ae 100644 --- a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/common/Notifications.kt +++ b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/common/Notifications.kt @@ -22,7 +22,7 @@ internal fun LazyListScope.notifications( contentType = { _, item -> item::class.java }, itemContent = { i, item -> val bottomPadding = if (i == notifications.lastIndex) { - TangemTheme.dimens.spacing12 + TangemTheme.dimens.spacing72 } else { TangemTheme.dimens.spacing0 } diff --git a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/fee/SendCustomFeeEthereum.kt b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/fee/SendCustomFeeEthereum.kt index 2276dc4848..50fde69ede 100644 --- a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/fee/SendCustomFeeEthereum.kt +++ b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/fee/SendCustomFeeEthereum.kt @@ -20,6 +20,7 @@ import kotlinx.collections.immutable.ImmutableList internal fun SendCustomFeeEthereum( customValues: ImmutableList, selectedFee: FeeType, + hasNotifications: Boolean, modifier: Modifier = Modifier, ) { AnimatedVisibility( @@ -34,8 +35,8 @@ internal fun SendCustomFeeEthereum( ) { repeat(customValues.size) { index -> val value = customValues[index] - val bottomPadding = if (index == customValues.lastIndex) { - TangemTheme.dimens.spacing12 + val bottomPadding = if (index == customValues.lastIndex && !hasNotifications) { + TangemTheme.dimens.spacing72 } else { TangemTheme.dimens.spacing0 } diff --git a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/fee/SendSpeedAndFeeContent.kt b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/fee/SendSpeedAndFeeContent.kt index cb132488c6..ee4055bff5 100644 --- a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/fee/SendSpeedAndFeeContent.kt +++ b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/fee/SendSpeedAndFeeContent.kt @@ -23,8 +23,9 @@ private const val FEE_CUSTOM_KEY = "FEE_CUSTOM_KEY" internal fun SendSpeedAndFeeContent(state: SendStates.FeeState?, clickIntents: SendClickIntents) { if (state == null) return val feeSendState = state.feeSelectorState as? FeeSelectorState.Content - val isCustomSelected = feeSendState?.selectedFee == FeeType.Custom val notifications = state.notifications + val isCustomSelected = feeSendState?.selectedFee == FeeType.Custom + val hasNotifications = notifications.isNotEmpty() LazyColumn( modifier = Modifier .fillMaxSize() @@ -35,7 +36,7 @@ internal fun SendSpeedAndFeeContent(state: SendStates.FeeState?, clickIntents: S ) { feeSelector(state, clickIntents) if (feeSendState != null) { - customFee(feeSendState) + customFee(feeSendState = feeSendState, hasNotifications = hasNotifications) } notifications(notifications = notifications, hasPaddingAbove = isCustomSelected) } @@ -55,13 +56,18 @@ private fun LazyListScope.feeSelector(state: SendStates.FeeState, clickIntents: } @OptIn(ExperimentalFoundationApi::class) -internal fun LazyListScope.customFee(feeSendState: FeeSelectorState.Content, modifier: Modifier = Modifier) { +internal fun LazyListScope.customFee( + feeSendState: FeeSelectorState.Content, + hasNotifications: Boolean, + modifier: Modifier = Modifier, +) { item( key = FEE_CUSTOM_KEY, ) { SendCustomFeeEthereum( customValues = feeSendState.customValues, selectedFee = feeSendState.selectedFee, + hasNotifications = hasNotifications, modifier = modifier .fillMaxWidth() .animateItemPlacement() diff --git a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/fee/SendSpeedSelectorItem.kt b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/fee/SendSpeedSelectorItem.kt index 2caaa43e1b..3ecc6ddf2e 100644 --- a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/fee/SendSpeedSelectorItem.kt +++ b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/fee/SendSpeedSelectorItem.kt @@ -163,11 +163,11 @@ private fun FeeSelectorState.Content.getAmount(feeType: FeeType): Amount? { private fun FeeSelectorState.Content?.getDividerAndVisibility(feeType: FeeType): Pair { val hasCustomValues = !this?.customValues.isNullOrEmpty() val isNotSingle = this?.fees !is TransactionFee.Single - val isSingle = this?.fees is TransactionFee.Single + val isLoaded = this?.fees != null return when (feeType) { FeeType.Slow -> true to isNotSingle - FeeType.Market -> isNotSingle to isSingle + FeeType.Market -> isNotSingle to isLoaded FeeType.Fast -> hasCustomValues to isNotSingle - FeeType.Custom -> false to isNotSingle + FeeType.Custom -> false to hasCustomValues } } \ No newline at end of file diff --git a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/recipient/SendRecipientContent.kt b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/recipient/SendRecipientContent.kt index 3a31549af5..93910bc2a6 100644 --- a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/recipient/SendRecipientContent.kt +++ b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/recipient/SendRecipientContent.kt @@ -182,7 +182,7 @@ private fun LazyListScope.listItem( .then( if (isLast && index == list.lastIndex) { Modifier - .padding(bottom = TangemTheme.dimens.spacing12) + .padding(bottom = TangemTheme.dimens.spacing72) .clip( shape = RoundedCornerShape( bottomStart = TangemTheme.dimens.radius16,