From 0ed70b73330cc1fe62ad0c5641022fea0d2a92d0 Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 18 Mar 2024 12:33:05 +0100 Subject: [PATCH] Updated on 2026-08-14 --- core/res/src/main/res/values-ru/strings.xml | 16 +- .../src/main/res/values-zh-rTW/strings.xml | 4 - core/res/src/main/res/values/strings.xml | 22 +-- .../wallet2/ui/YourSeedPhraseScreen.kt | 25 +++ .../referral/ui/ParticipateBottomBlock.kt | 174 ++++++++++-------- 5 files changed, 140 insertions(+), 101 deletions(-) diff --git a/core/res/src/main/res/values-ru/strings.xml b/core/res/src/main/res/values-ru/strings.xml index 562af4dcb0..79539f13a8 100644 --- a/core/res/src/main/res/values-ru/strings.xml +++ b/core/res/src/main/res/values-ru/strings.xml @@ -3,8 +3,6 @@ Добавить токен Валюты Отправляйте только %1$s (%2$s) в сети %3$s на этот адрес. Использование другой сети может привести к утрате средств. - Спасибо за ваш отзыв - Отправлено успешно Обратиться в поддержку Эта функция недоступна в демонстрационном режиме Причина: %s @@ -53,7 +51,6 @@ Заводские настройки Тип безопасности Настройки карты - Чат Принять Доступ запрещен Применить @@ -79,7 +76,6 @@ Включено Ошибка Обозреватель - Посмотреть историю Посмотреть историю транзакций Обозреватель Комиссия @@ -100,6 +96,7 @@ Нет адреса OK Основная карта + Кодовая фраза Подробнее Получить Отклонить @@ -134,7 +131,6 @@ Добавить токен Адрес контракта Адрес контракта некорректен - Путь деривации некорректен Пожалуйста, выберите сеть Десятичное число должно быть действительным целым числом, до %li Своя деривация @@ -288,6 +284,7 @@ Ошибка активации Вы добавили одну резервную карту. После того, как процесс будет завершен, Вы больше не сможете добавить карт. Если у Вас есть еще одна карта, добавьте ее в резервную копию. Хотите продолжить? Процесс резервного копирования почти завершен. Вы не можете выйти из него сейчас. + Кодовая фраза — это расширенная функция безопасности, которую используют криптокошельки. Она добавляет дополнительное слово или фразу по вашему выбору к уже существующей seed - фразе, чтобы разблокировать совершенно новый набор адресов. Добавить резервную карту Сканировать карту #%d Создать резервную копию @@ -368,11 +365,7 @@ По балансу Сортировка токенов Список - Отправить отзыв - Оцените приложение 🙌 - Поделитесь опытом использования приложения - нам важна любая деталь. Нравится наше приложение? - %1$s %2$s адрес в сети %3$s %1$s (%2$s) в сети %3$s Отправляйте только %s на этот адрес. Использование другой сети может привести к утрате средств. Участвовать @@ -435,7 +428,7 @@ Транзакция не выполнена Сумма Подтвердить - %1$s в %2$s + %1$s, %2$s Адрес Код назначения Введите адрес @@ -525,6 +518,7 @@ Балансы скрыты Балансы показаны Отменить + Сгенерировать XPUB Скрыть Вы скрываете токен с главного экрана, но в любой момент сможете добавить его обратно через страницу управления токенами. Скрыть %s @@ -656,6 +650,8 @@ Отправка средств станет доступной после завершения транзакции(-ий) в сети %s Отправка средств станет доступной после завершения транзакции %s Транзакция в обработке + Сеть Солана испытывает высокую нагрузку. Если Ваша транзакция не прошла в течение 2 минут, повторите её отправку. + Оповещение сети Солана Сеть Solana взимает арендную плату в размере %1$s каждые 2 дня. Аккаунты, которые не могут позволить себе арендную плату, удаляются из сети. Пополните свой счет более чем на %2$s, чтобы не платить арендную плату. Некоторые сети в настоящее время недоступны. Пожалуйста, повторите попытку позже. Некоторые сети недоступны diff --git a/core/res/src/main/res/values-zh-rTW/strings.xml b/core/res/src/main/res/values-zh-rTW/strings.xml index da5557d604..a8a013bebc 100644 --- a/core/res/src/main/res/values-zh-rTW/strings.xml +++ b/core/res/src/main/res/values-zh-rTW/strings.xml @@ -3,8 +3,6 @@ 添加自定義代幣 管理代幣 僅將 %1$s (%2$s) 從 %3$s 網絡發送到此地址。使用其他代幣和網絡可能會導致資金損失 - 謝謝您的反饋 - 成功送出 請求支持 此功能不在展示模式中提供 原因:%s @@ -37,7 +35,6 @@ 回復至原廠設置 安全模式 卡片設置 - 支援 接受 注意 餘額: %s @@ -90,7 +87,6 @@ 添加代幣 代幣地址 無效地址 - 衍生路徑錯誤 請選擇網路 小數點 默認 diff --git a/core/res/src/main/res/values/strings.xml b/core/res/src/main/res/values/strings.xml index 4f8f87c686..d91eeb01d1 100644 --- a/core/res/src/main/res/values/strings.xml +++ b/core/res/src/main/res/values/strings.xml @@ -3,8 +3,6 @@ Add custom token Manage tokens Send only %1$s (%2$s) from %3$s network to this address. Using other tokens and networks may result in loss of funds. - Thank you for your feedback - Sent successfully Request support This feature is disabled in Demo mode Reason: %s @@ -52,7 +50,6 @@ Reset to Factory Settings Security Mode Card Settings - Support Accept Access denied Apply @@ -78,7 +75,6 @@ Enabled Error Explore - Explore history Explore transaction history Explorer Fee @@ -99,6 +95,7 @@ No address OK Primary Card + Passphrase Read more Receive Reject @@ -133,7 +130,6 @@ Add token Contract address Contract address is invalid - Derivation path is invalid Please select the network Decimal must be a valid integer, up to %li Custom derivation @@ -288,6 +284,7 @@ Activation error You\'ve added one backup card. When backup process is finished you can\'t add more backup cards. If you have one more card, add it to backup. Do you like to continue the backup process? The backup process is partly complete. You can\'t exit it now. + The passphrase is an advanced security feature that crypto wallets use. It adds an extra word or phrase of your own choosing to your already existing recovery phrase to unlock a brand-new set of addresses. Add a backup card Scan the card #%d Backup now @@ -368,11 +365,7 @@ Settings You have not given access to your camera Camera access denied - Share feedback - Rate the app 🙌 - Share your app experience – every detail counts. Enjoying our app? - %1$s %2$s address on %3$s network %1$s (%2$s) on %3$s network Send only %s to this address. Sending any other currency will result in its irreversible loss. Participate @@ -431,7 +424,7 @@ The transaction is not completed Amount Confirm - %1$s at %2$s + %1$s, %2$s Address Destination Tag Enter address @@ -486,7 +479,9 @@ Send to A Memo/Destination Tag is a unique ID for differentiating transactions sent to the same recipient on the same network. Caution: Omitting a memo may lead to misplaced funds My wallets - Sending... + Tap any field to change it + Send %s + You are sending %1$s including a network fee of %2$s Sending %s Total %1$s and %2$s will be sent @@ -533,6 +528,7 @@ Balances hidden Balances shown Undo + 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. Hide %s @@ -612,7 +608,7 @@ Tangem Use %s or scan a card to unlock access to your wallet Please withdraw all funds from this wallet, reset it to factory settings, and create a new one. Access to the current wallet will be lost. - Backup error + Activation error Could be better Like it Ok, Got it! @@ -662,6 +658,8 @@ Sending funds will be available once the pending transaction(s) in network %s is complete Sending funds will be available once the %s transaction is complete Transaction pending + The Solana network is congested. If your transaction is not processed within 2 minutes, please repeat the transaction. + Solana Network Alert 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 diff --git a/features/onboarding/src/main/java/com/tangem/feature/onboarding/presentation/wallet2/ui/YourSeedPhraseScreen.kt b/features/onboarding/src/main/java/com/tangem/feature/onboarding/presentation/wallet2/ui/YourSeedPhraseScreen.kt index 76a7e48923..23e21b9c92 100644 --- a/features/onboarding/src/main/java/com/tangem/feature/onboarding/presentation/wallet2/ui/YourSeedPhraseScreen.kt +++ b/features/onboarding/src/main/java/com/tangem/feature/onboarding/presentation/wallet2/ui/YourSeedPhraseScreen.kt @@ -1,5 +1,6 @@ package com.tangem.feature.onboarding.presentation.wallet2.ui +import androidx.compose.foundation.background import androidx.compose.foundation.layout.* import androidx.compose.foundation.lazy.grid.GridCells import androidx.compose.foundation.lazy.grid.LazyVerticalGrid @@ -8,16 +9,19 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource +import androidx.compose.ui.tooling.preview.Preview import com.tangem.core.ui.components.PrimaryButton import com.tangem.core.ui.components.SpacerW32 import com.tangem.core.ui.res.TangemTheme import com.tangem.feature.onboarding.R +import com.tangem.feature.onboarding.presentation.wallet2.model.ButtonState import com.tangem.feature.onboarding.presentation.wallet2.model.MnemonicGridItem import com.tangem.feature.onboarding.presentation.wallet2.model.YourSeedPhraseState import com.tangem.feature.onboarding.presentation.wallet2.ui.components.Description import com.tangem.feature.onboarding.presentation.wallet2.ui.components.OnboardingActionBlock import com.tangem.feature.onboarding.presentation.wallet2.ui.components.OnboardingDescriptionBlock import kotlinx.collections.immutable.ImmutableList +import kotlinx.collections.immutable.toImmutableList /** [REDACTED_AUTHOR] @@ -88,4 +92,25 @@ private fun PhraseGreedBlock(mnemonicGridItems: ImmutableList) } } } +} + +@Preview +@Composable +private fun YourSeedPhraseScreenPreview_Light() { + TangemTheme(isDark = false) { + YourSeedPhraseScreen( + state = YourSeedPhraseState( + mnemonicGridItems = (1..12).map { MnemonicGridItem(it, it.toString()) }.toImmutableList(), + buttonContinue = ButtonState( + enabled = true, + isClickable = true, + showProgress = false, + onClick = {}, + ), + ), + modifier = Modifier + .fillMaxSize() + .background(color = TangemTheme.colors.background.primary), + ) + } } \ No newline at end of file diff --git a/features/referral/presentation/src/main/java/com/tangem/feature/referral/ui/ParticipateBottomBlock.kt b/features/referral/presentation/src/main/java/com/tangem/feature/referral/ui/ParticipateBottomBlock.kt index 57337c925a..3417b6931f 100644 --- a/features/referral/presentation/src/main/java/com/tangem/feature/referral/ui/ParticipateBottomBlock.kt +++ b/features/referral/presentation/src/main/java/com/tangem/feature/referral/ui/ParticipateBottomBlock.kt @@ -27,6 +27,8 @@ import androidx.compose.ui.res.pluralStringResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.tooling.preview.PreviewParameter +import androidx.compose.ui.tooling.preview.datasource.CollectionPreviewParameterProvider import androidx.core.content.ContextCompat.startActivity import com.tangem.core.ui.components.* import com.tangem.core.ui.res.TangemTheme @@ -113,14 +115,22 @@ private fun Awards(expectedAwards: ExpectedAwards) { thickness = TangemTheme.dimens.size0_5, ) AwardText( - startText = stringResource(id = R.string.referral_expected_awards), + startText = if (expectedAwards.expectedAwards.isNotEmpty()) { + stringResource(id = R.string.referral_expected_awards) + } else { + stringResource(id = R.string.referral_no_expected_awards) + }, startTextColor = TangemTheme.colors.text.tertiary, startTextStyle = TangemTheme.typography.subtitle2, - endText = pluralStringResource( - id = R.plurals.referral_number_of_wallets, - count = expectedAwards.numberOfWallets, - expectedAwards.numberOfWallets, - ), + endText = if (expectedAwards.expectedAwards.isNotEmpty()) { + pluralStringResource( + id = R.plurals.referral_number_of_wallets, + count = expectedAwards.numberOfWallets, + expectedAwards.numberOfWallets, + ) + } else { + "" + }, endTextColor = TangemTheme.colors.text.tertiary, endTextStyle = TangemTheme.typography.body2, cornersToRound = CornersToRound.ZERO, @@ -309,34 +319,20 @@ private fun Context.shareText(text: String) { @Preview(widthDp = 360, showBackground = true) @Composable -private fun Preview_ParticipateBottomBlock_InLightTheme() { +private fun ParticipateBottomBlockPreview_Light( + @PreviewParameter(ParticipateBottomBlockDataProvider::class) data: ParticipateBottomBlockData, +) { TangemTheme(isDark = false) { Column(Modifier.background(TangemTheme.colors.background.secondary)) { ParticipateBottomBlock( - purchasedWalletCount = 3, - code = "x4JdK", - shareLink = "", - expectedAwards = ExpectedAwards( - numberOfWallets = 3, - expectedAwards = listOf( - ExpectedAward( - amount = "10 USDT", - paymentDate = "Today", - ), - ExpectedAward( - amount = "20 USDT", - paymentDate = "6 Aug 2023", - ), - ExpectedAward( - amount = "30 USDT", - paymentDate = "10 Aug 2023", - ), - ), - ), - onAgreementClick = {}, - onShowCopySnackbar = {}, - onCopyClick = {}, - onShareClick = {}, + purchasedWalletCount = data.purchasedWalletCount, + code = data.code, + shareLink = data.shareLink, + expectedAwards = data.expectedAwards, + onAgreementClick = data.onAgreementClick, + onShowCopySnackbar = data.onShowCopySnackbar, + onCopyClick = data.onCopyClick, + onShareClick = data.onShareClick, ) } } @@ -344,18 +340,20 @@ private fun Preview_ParticipateBottomBlock_InLightTheme() { @Preview(widthDp = 360, showBackground = true) @Composable -private fun Preview_ParticipateBottomBlock_Without_Awards_InLightTheme() { - TangemTheme(isDark = false) { +private fun ParticipateBottomBlockPreview_Dark( + @PreviewParameter(ParticipateBottomBlockDataProvider::class) state: ParticipateBottomBlockData, +) { + TangemTheme(isDark = true) { Column(Modifier.background(TangemTheme.colors.background.secondary)) { ParticipateBottomBlock( - purchasedWalletCount = 3, - code = "x4JdK", - shareLink = "", - expectedAwards = null, - onAgreementClick = {}, - onShowCopySnackbar = {}, - onCopyClick = {}, - onShareClick = {}, + purchasedWalletCount = state.purchasedWalletCount, + code = state.code, + shareLink = state.shareLink, + expectedAwards = state.expectedAwards, + onAgreementClick = state.onAgreementClick, + onShowCopySnackbar = state.onShowCopySnackbar, + onCopyClick = state.onCopyClick, + onShareClick = state.onShareClick, ) } } @@ -363,26 +361,7 @@ private fun Preview_ParticipateBottomBlock_Without_Awards_InLightTheme() { @Preview(widthDp = 360, showBackground = true) @Composable -private fun Preview_ParticipateBottomBlock_Without_Awards_And_Purchased_Wallets_InLightTheme() { - TangemTheme(isDark = false) { - Column(Modifier.background(TangemTheme.colors.background.secondary)) { - ParticipateBottomBlock( - purchasedWalletCount = 0, - code = "x4JdK", - shareLink = "", - expectedAwards = null, - onAgreementClick = {}, - onShowCopySnackbar = {}, - onCopyClick = {}, - onShareClick = {}, - ) - } - } -} - -@Preview(widthDp = 360, showBackground = true) -@Composable -private fun LessMoreButton_White() { +private fun LessMoreButton_Light() { TangemTheme(isDark = false) { LessMoreButton( isExpanded = remember { @@ -394,19 +373,64 @@ private fun LessMoreButton_White() { @Preview(widthDp = 360, showBackground = true) @Composable -private fun Preview_ParticipateBottomBlock_Without_Awards_InDarkTheme() { +private fun LessMoreButton_Dark() { TangemTheme(isDark = true) { - Column(Modifier.background(TangemTheme.colors.background.secondary)) { - ParticipateBottomBlock( - purchasedWalletCount = 3, - code = "x4JdK", - shareLink = "", - expectedAwards = null, - onAgreementClick = {}, - onShowCopySnackbar = {}, - onCopyClick = {}, - onShareClick = {}, - ) - } + LessMoreButton( + isExpanded = remember { + mutableStateOf(false) + }, + ) } -} \ No newline at end of file +} + +private class ParticipateBottomBlockDataProvider : CollectionPreviewParameterProvider( + collection = listOf( + ParticipateBottomBlockData( + purchasedWalletCount = 3, + expectedAwards = ExpectedAwards( + numberOfWallets = 3, + expectedAwards = listOf( + ExpectedAward( + amount = "10 USDT", + paymentDate = "Today", + ), + ExpectedAward( + amount = "20 USDT", + paymentDate = "6 Aug 2023", + ), + ExpectedAward( + amount = "30 USDT", + paymentDate = "10 Aug 2023", + ), + ), + ), + ), + ParticipateBottomBlockData( + purchasedWalletCount = 3, + expectedAwards = ExpectedAwards( + numberOfWallets = 3, + expectedAwards = emptyList(), + ), + ), + ParticipateBottomBlockData( + purchasedWalletCount = 3, + expectedAwards = null, + ), + ParticipateBottomBlockData( + purchasedWalletCount = 0, + expectedAwards = null, + ), + + ), +) + +private data class ParticipateBottomBlockData( + val purchasedWalletCount: Int, + val expectedAwards: ExpectedAwards?, + val code: String = "x4JDK", + val shareLink: String = "", + val onAgreementClick: () -> Unit = {}, + val onShowCopySnackbar: () -> Unit = {}, + val onCopyClick: () -> Unit = {}, + val onShareClick: () -> Unit = {}, +) \ No newline at end of file