diff --git a/core/res/src/main/res/values-de/strings.xml b/core/res/src/main/res/values-de/strings.xml
index cc96519ec8..e4f4e75ca9 100644
--- a/core/res/src/main/res/values-de/strings.xml
+++ b/core/res/src/main/res/values-de/strings.xml
@@ -128,7 +128,7 @@
Keine Adresse
Jetzt
OK
- Primär Karte
+ Hauptkarte
Passphrase
Einfügen
Datenschutzbestimmungen
@@ -275,7 +275,7 @@
Keine Token gefunden. Bitte versuche eine andere Anfrage
ID: %s
Transaktions-ID kopiert
- Wechsel eine Ihrer Währungen in eine andere
+ Tauschen jeden Vermögenswert in Deinem Portfolio gegen diesen Token
Die folgenden Angaben sind freiwillig. Du kannst diese löschen, wenn du sie nicht weitergeben möchtest.
Teile uns mit, welche Funktionen du vermisst, und wir werden versuchen, dir zu helfen.
Bitte sag uns, welche Karte du hast
@@ -345,6 +345,7 @@
Das Wallet unterstützt nicht mehr als ein Netzwerk
Um mit dem Kauf, Tausch oder Erhalt dieses Vermögenswerts zu beginnen, füge diesen Token zu mindestens 1 Netzwerk hinzu
Dieses Asset ist nicht verfügbar
+ Dieses Asset ist für dieses Wallet nicht verfügbar
Zum Portfolio hinzufügen
Hinzufügen
Verfügbare Netzwerke
@@ -561,7 +562,7 @@
- %d Wallet
- %d Wallets
- Zurücksetzen der Karte
+ Karte zurücksetzen
Mir ist bewusst, dass ich nach der Durchführung dieser Aktion keinen Zugriff mehr auf die aktuelle Wallet habe.
Mir ist klar, dass ich diese Karte nicht verwenden kann, um meinen Zugangscode auf den anderen Karten der aktuellen Wallet wiederherzustellen
Durch das Zurücksetzen auf Werkseinstellungen wird die Wallet vollständig von der ausgewählten Karte gelöscht. Du kannst die aktuelle Wallet nicht wiederherstellen oder die Karte verwenden, um den Zugangscode wiederherzustellen.
@@ -686,7 +687,7 @@
Der Zeitraum, den du nach der Beantragung der Abhebung von Geldern aus dem Staking warten musst, bevor die Token verfügbar werden.
Aufwärmphase
Die zugewiesene Zeit für die Aktivierung der Teilnahme am Staking.
- Indem Du die Staking-Funktionalität nutzen, stimmst Du den %1$s und %2$s des Anbieters zu.
+ Indem Du die Staking-Funktionalität nutzt, stimmst Du den %1$s und %2$s des Anbieters zu.
Gesperrt
Migrieren
Natives Staking
@@ -718,14 +719,14 @@
Neuwahl
Automatisch
Händisch
- Block
- Tag
+ Pro Block
+ Täglich
Täglich
- Epoche
- Ära
- Stunde
- Monat
- Woche
+ Pro Epoche
+ Pro Ära
+ Stündlich
+ Monatlich
+ Wöchentlich
Belohnungen
Stake gesperrt
Mehr staken
diff --git a/core/res/src/main/res/values-ja/strings.xml b/core/res/src/main/res/values-ja/strings.xml
index aeed4388a0..9066c1ebb1 100644
--- a/core/res/src/main/res/values-ja/strings.xml
+++ b/core/res/src/main/res/values-ja/strings.xml
@@ -342,6 +342,7 @@
ウォレットは複数のネットワークをサポートしていません。
このアセットの購入、交換、受け取りを開始するには、ポートフォリオに追加してください。
このアセットは利用できません
+ このアセットはこのウォレットでは使用できません。
ポートフォリオに追加
追加
利用可能なネットワーク
@@ -799,6 +800,7 @@
オペレーション
送金元: %s
送金先: %s
+ バリデーター: %s
もう一度やり直してください
同じカードをスキャンしました。ツインウォレットを作成するには、番号%dのカードをスキャンする必要があります。
間違ったツインカードをスキャンしました。別のカードをお試しください。
diff --git a/core/res/src/main/res/values-ru/strings.xml b/core/res/src/main/res/values-ru/strings.xml
index c7e2221f9d..6f25020e8d 100644
--- a/core/res/src/main/res/values-ru/strings.xml
+++ b/core/res/src/main/res/values-ru/strings.xml
@@ -434,7 +434,7 @@
Объем торгов (24ч)
Общая сумма криптовалюты, которая была продана за последние 24 часа, показывающая уровень активности и ликвидности на рынке.
Объем торгов (24ч)
- Потяните вверх или коснитесь поисковой строки, чтобы добавить токены напрямую из маркета
+ Потяните вверх или коснитесь поисковой строки, чтобы добавить токены напрямую из рынка
Добавить токены
Функция NFC недоступна на вашем устройстве
Вам необходимо установить единый код доступа для защиты всех ваших карт
@@ -744,6 +744,7 @@
Застейкать еще
Вы стейкаете %1$s и будете получать %2$s ежегодно
Нажмите для разблокировки
+ Нажмите для разблокировки или голосования
Нажмите для вывода
Застейкать %s
Вывести %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 ef2696c0e6..611026a7cb 100644
--- a/core/res/src/main/res/values-uk-rUA/strings.xml
+++ b/core/res/src/main/res/values-uk-rUA/strings.xml
@@ -141,7 +141,7 @@
Детальніше
Отримати
Відхилити
- Перезавантажити
+ Оновити
Перейменувати
Зберегти
Зберегти зміни
@@ -351,6 +351,7 @@
Гаманець не підтримує більше однієї мережі
Щоб почати купувати, обмінювати або отримувати цей актив, додайте цей токен принаймні в 1 мережу
Цей актив недоступний
+ Цей токен недоступний для цього гаманця
Додати в портфоліо
Додати
Доступні мережі
@@ -401,6 +402,7 @@
Досвідчені покупці
Повн. розведена кап.
Загальна теоретична вартість криптовалюти, якщо всі монети, які могли б існувати, перебувають в обігу, включаючи ті, що не перебувають в обігу в даний час
+ Повністю розведена капіталізація
Дата створення
Високий
Тримачі
@@ -415,9 +417,11 @@
Низький
Рин. кап.
Загальна ринкова вартість криптовалюти, що розраховується шляхом множення поточної ціни монети на загальну кількість монет в обігу
+ Ринкова капіталізація
Рейтинг
Позиція в крипторейтингу між усіма монетами на основі ринкової капіталізації
Рейтинг
+ Макс. обсяг
Максимальна кількість монет або токенів, яка може коли-небудь існувати для певної криптовалюти
Максимальна пропозиція
Метрики
@@ -713,6 +717,7 @@
Стейкінг дозволяє заробляти %1$s. Ваші винагороди за стейкінг зараховуються щотиждня.
Стейкайте безпечно та почніть отримувати винагороди щотижня
Отримуйте винагороду за стейкінг
+ Стейкінг тимчасово недоступний через проблеми в мережі. Будь ласка, спробуйте пізніше.
Стейкінг в мережі %1$s з новим валідатором автоматично переведе всі раніше застейкані кошти до цього валідатора
Реінвестуйте зароблені винагороди у суму стейкінгу, щоб збільшити потенційний прибуток.
Розблокуйте свої кошти, щоб вивести їх зі стейкінгу. Розблокування займе %s.
@@ -813,12 +818,13 @@
Обміняти
контракт: %s
У вас ще немає транзакцій
- Не вдалося завантажити історію транзакцій.\nНатисніть кнопку перезавантаження, щоб оновити інформацію.
+ Не вдалося завантажити історію транзакцій.\nНатисніть кнопку нижче, щоб оновити інформацію
Кілька адрес
Історія транзакцій наразі не підтримується для цього блокчейну. Але не хвилюйтеся, ми працюємо над цим! А поки можете перевірити це в оглядачі.
Операція
від: %s
до: %s
+ валідатор: %s
Спробуйте знову
Ви відсканували одну й ту саму картку. Для створення twin-гаманця вам потрібно відсканувати картку з номером %d
Ви відсканували не ту twin-картку. Будь ласка, спробуйте відсканувати іншу
diff --git a/core/res/src/main/res/values/strings.xml b/core/res/src/main/res/values/strings.xml
index a75c4fce68..3e97f225bf 100644
--- a/core/res/src/main/res/values/strings.xml
+++ b/core/res/src/main/res/values/strings.xml
@@ -128,7 +128,7 @@
No address
Now
OK
- Primary Card
+ Primary card
Passphrase
Paste
Privacy Policy
@@ -561,7 +561,7 @@
- %d wallet
- %d wallets
- Reset the Card
+ Reset the card
I understand that after performing this action, I will no longer have access to the current wallet
I realize that I can\'t use this card to recover my access code on the other cards of the current wallet
Factory Reset will completely delete the wallet from the selected card. You will not be able to restore the current wallet or use the card to recover the access code.
@@ -577,7 +577,7 @@
Enable biometric authorization
Would you like to use biometrics?
Note that making a transaction with your funds will still require your card
- Scan Card
+ Scan card
Scan the card to change its settings. The changes will impact only the card you\'ve scanned and will not affect other cards tied to your wallet.
Get your card ready!
Already included in the entered address
@@ -731,6 +731,7 @@
Stake more
You stake %1$s and will be receiving %2$s yearly
Tap to unlock
+ Tap to unlock or vote
Tap to withdraw
Stake %s
Unstake %s
@@ -831,7 +832,7 @@
This wallet has already been saved, you can add another one
The wallet with name %s already exists
Wallet name
- Rename Wallet
+ Rename wallet
Unlock all
Unlock all with %s
Blockchain is unreachable. Try later
diff --git a/data/staking/src/main/java/com/tangem/data/staking/converters/YieldBalanceConverter.kt b/data/staking/src/main/java/com/tangem/data/staking/converters/YieldBalanceConverter.kt
index 5a7f56b25e..c892e86589 100644
--- a/data/staking/src/main/java/com/tangem/data/staking/converters/YieldBalanceConverter.kt
+++ b/data/staking/src/main/java/com/tangem/data/staking/converters/YieldBalanceConverter.kt
@@ -3,7 +3,6 @@ package com.tangem.data.staking.converters
import com.tangem.data.staking.converters.action.PendingActionConverter
import com.tangem.datasource.api.stakekit.models.response.model.YieldBalanceWrapperDTO
import com.tangem.domain.staking.model.stakekit.*
-import com.tangem.domain.staking.model.stakekit.action.StakingActionType
import com.tangem.utils.converter.Converter
internal class YieldBalanceConverter : Converter {
@@ -27,9 +26,7 @@ internal class YieldBalanceConverter : Converter getUnbondingDate(balance.date)
BalanceType.UNSTAKED -> resourceReference(R.string.staking_tap_to_withdraw)
- BalanceType.LOCKED -> resourceReference(R.string.staking_tap_to_unlock)
+ BalanceType.LOCKED -> if (balance.pendingActions.any { it.type == StakingActionType.VOTE_LOCKED }) {
+ resourceReference(R.string.staking_tap_to_unlock_or_vote)
+ } else {
+ resourceReference(R.string.staking_tap_to_unlock)
+ }
BalanceType.PREPARING -> {
val warmupPeriod = yield.metadata.warmupPeriod.days
combinedReference(
diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/AddStakingNotificationsTransformer.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/AddStakingNotificationsTransformer.kt
index bd7988cd8f..2b51941e7b 100644
--- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/AddStakingNotificationsTransformer.kt
+++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/AddStakingNotificationsTransformer.kt
@@ -270,17 +270,7 @@ internal class AddStakingNotificationsTransformer(
}
private fun MutableList.addEnterInfoNotifications() {
- val cryptoCurrencyStatus = cryptoCurrencyStatusProvider()
- val isTron = isTron(cryptoCurrencyStatus.currency.network.id.value)
- val hasStakedBalance = (cryptoCurrencyStatus.value.yieldBalance as? YieldBalance.Data)?.balance
- ?.items?.any {
- it.type == BalanceType.PREPARING ||
- it.type == BalanceType.STAKED ||
- it.type == BalanceType.LOCKED
- } == true
- if (hasStakedBalance && isTron) {
- add(StakingNotification.Info.TronRevote)
- }
+ addTronRevoteNotification()
}
private fun MutableList.addPendingInfoNotifications(prevState: StakingUiState) {
@@ -312,16 +302,39 @@ internal class AddStakingNotificationsTransformer(
),
)
}
+ StakingActionType.VOTE_LOCKED -> {
+ resourceReference(R.string.staking_revote) to
+ resourceReference(R.string.staking_notifications_revote_tron_text)
+ }
else -> null to null
}
if (titleReference != null && textReference != null) {
add(
- StakingNotification.Info.PendingAction(
+ StakingNotification.Info.Ordinary(
title = titleReference,
text = textReference,
),
)
}
}
+
+ private fun MutableList.addTronRevoteNotification() {
+ val cryptoCurrencyStatus = cryptoCurrencyStatusProvider()
+ val isTron = isTron(cryptoCurrencyStatus.currency.network.id.value)
+ val hasStakedBalance = (cryptoCurrencyStatus.value.yieldBalance as? YieldBalance.Data)?.balance
+ ?.items?.any {
+ it.type == BalanceType.PREPARING ||
+ it.type == BalanceType.STAKED ||
+ it.type == BalanceType.LOCKED
+ } == true
+ if (isTron && hasStakedBalance) {
+ add(
+ StakingNotification.Info.Ordinary(
+ title = resourceReference(R.string.staking_revote),
+ text = resourceReference(R.string.staking_notifications_revote_tron_text),
+ ),
+ )
+ }
+ }
}
\ No newline at end of file
diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/SetButtonsStateTransformer.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/SetButtonsStateTransformer.kt
index d9f2906670..ea4406d986 100644
--- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/SetButtonsStateTransformer.kt
+++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/SetButtonsStateTransformer.kt
@@ -144,9 +144,19 @@ internal class SetButtonsStateTransformer(
clickIntents.onAmountValueChange("") // reset amount state
clickIntents.onNextClick(StakingActionCommonType.ENTER)
}
- StakingStep.Validators,
- StakingStep.Amount,
- -> clickIntents.onNextClick()
+ StakingStep.Validators -> {
+ if (confirmationState is StakingStates.ConfirmationState.Data) {
+ clickIntents.onNextClick(
+ pendingActions = confirmationState.pendingActions,
+ pendingAction = confirmationState.pendingAction,
+ )
+ } else {
+ clickIntents.onNextClick()
+ }
+ }
+ StakingStep.Amount -> {
+ clickIntents.onNextClick()
+ }
StakingStep.Confirmation -> onConfirmationClick()
StakingStep.RewardsValidators -> Unit
}
diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/ui/StakingConfirmationContent.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/ui/StakingConfirmationContent.kt
index 8fc799719a..bcf6eb3cc3 100644
--- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/ui/StakingConfirmationContent.kt
+++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/ui/StakingConfirmationContent.kt
@@ -19,6 +19,7 @@ import com.tangem.core.ui.extensions.resourceReference
import com.tangem.core.ui.res.TangemTheme
import com.tangem.core.ui.res.TangemThemePreview
import com.tangem.domain.staking.model.stakekit.action.StakingActionCommonType
+import com.tangem.domain.staking.model.stakekit.action.StakingActionType
import com.tangem.features.staking.impl.R
import com.tangem.features.staking.impl.presentation.state.InnerConfirmationStakingState
import com.tangem.features.staking.impl.presentation.state.StakingStates
@@ -39,6 +40,7 @@ internal fun StakingConfirmationContent(
) {
if (state !is StakingStates.ConfirmationState.Data) return
val isEnterAction = type == StakingActionCommonType.ENTER
+ val showValidatorBlock = isEnterAction || state.pendingAction?.type == StakingActionType.VOTE_LOCKED
val isTransactionSent = state.innerState == InnerConfirmationStakingState.COMPLETED
Column(
modifier = Modifier
@@ -63,7 +65,7 @@ internal fun StakingConfirmationContent(
isEditingDisabled = !isEnterAction && state.innerState != InnerConfirmationStakingState.COMPLETED,
onClick = clickIntents::onPrevClick,
)
- if (isEnterAction) {
+ if (showValidatorBlock) {
ValidatorBlock(validatorState = state.validatorState, onClick = clickIntents::openValidators)
}
StakingFeeBlock(feeState = state.feeState, isTransactionSent = isTransactionSent)