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