diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/redux/OnboardingWalletMiddleware.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/redux/OnboardingWalletMiddleware.kt
index b006532804..42ef53fa15 100644
--- a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/redux/OnboardingWalletMiddleware.kt
+++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/redux/OnboardingWalletMiddleware.kt
@@ -660,7 +660,7 @@ private fun handleBackupAction(appState: () -> AppState?, action: BackupAction)
// All cardIds may already be activated if the backup was skipped before.
if (notActivatedCardIds.isEmpty()) {
delay(1000)
- store.dispatch(BackupAction.BackupFinished(userWallet?.walletId))
+ store.dispatchWithMain(BackupAction.BackupFinished(userWallet?.walletId))
return@launch
}
@@ -669,7 +669,7 @@ private fun handleBackupAction(appState: () -> AppState?, action: BackupAction)
store.state.globalState.onboardingState.onboardingManager?.finishActivation(notActivatedCardIds)
handleFinishBackup(requireNotNull(scanResponse))
delay(1000)
- store.dispatch(BackupAction.BackupFinished(userWalletId = userWallet?.walletId))
+ store.dispatchWithMain(BackupAction.BackupFinished(userWalletId = userWallet?.walletId))
}
}
diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/OnboardingWalletFragment.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/OnboardingWalletFragment.kt
index 07d83bda21..b80aa53ebb 100644
--- a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/OnboardingWalletFragment.kt
+++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/OnboardingWalletFragment.kt
@@ -17,6 +17,7 @@ import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.ui.Modifier
import androidx.core.view.MenuProvider
import androidx.fragment.app.viewModels
+import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.transition.TransitionManager
import by.kirich1409.viewbindingdelegate.viewBinding
@@ -574,22 +575,28 @@ class OnboardingWalletFragment :
}
animator.showSuccess {
- flCardsContainer.hide()
- imvCardBackground.hide()
- showConfetti(true)
- imvSuccess.alpha = 0f
- imvSuccess.show()
- imvSuccess.animate()?.alpha(1f)?.duration = 400
+ if (lifecycle.currentState.isAtLeast(Lifecycle.State.STARTED)) {
+ flCardsContainer.hide()
+ imvCardBackground.hide()
+ showConfetti(true)
+ imvSuccess.alpha = 0f
+ imvSuccess.show()
+ imvSuccess.animate()?.alpha(1f)?.duration = 400
+ }
}
}
- internal fun showConfetti(show: Boolean) = with(binding.vConfetti) {
- lavConfetti.show(show)
+ internal fun showConfetti(show: Boolean) {
+ if (lifecycle.currentState.isAtLeast(Lifecycle.State.STARTED)) {
+ with(binding.vConfetti) {
+ lavConfetti.show(show)
- if (show) {
- lavConfetti.playAnimation()
- } else {
- lavConfetti.cancelAnimation()
+ if (show) {
+ lavConfetti.playAnimation()
+ } else {
+ lavConfetti.cancelAnimation()
+ }
+ }
}
}
diff --git a/app/src/main/res/layout/item_backup_info_adapter.xml b/app/src/main/res/layout/item_backup_info_adapter.xml
index 469434318b..46b359a8f1 100644
--- a/app/src/main/res/layout/item_backup_info_adapter.xml
+++ b/app/src/main/res/layout/item_backup_info_adapter.xml
@@ -23,9 +23,9 @@
android:id="@+id/tv_body"
android:layout_width="0dp"
android:layout_height="wrap_content"
- android:layout_marginStart="64dp"
+ android:layout_marginStart="32dp"
android:layout_marginTop="10dp"
- android:layout_marginEnd="64dp"
+ android:layout_marginEnd="32dp"
android:textColor="@color/text_secondary"
android:textAlignment="center"
tools:text="Body"
diff --git a/common/ui/src/main/java/com/tangem/common/ui/bottomsheet/permission/GiveTxPermisssionBottomSheet.kt b/common/ui/src/main/java/com/tangem/common/ui/bottomsheet/permission/GiveTxPermisssionBottomSheet.kt
index 52398bd178..5d8b37fd46 100644
--- a/common/ui/src/main/java/com/tangem/common/ui/bottomsheet/permission/GiveTxPermisssionBottomSheet.kt
+++ b/common/ui/src/main/java/com/tangem/common/ui/bottomsheet/permission/GiveTxPermisssionBottomSheet.kt
@@ -130,7 +130,7 @@ private fun ApprovalBottomSheetInfo(data: GiveTxPermissionState.ReadyForRequest)
}
SpacerH16()
FooterContainer(
- footer = stringResource(id = R.string.give_permission_fee_footer),
+ footer = data.footerText.resolveReference(),
modifier = Modifier.padding(horizontal = TangemTheme.dimens.spacing16),
) {
FeeItem(fee = data.fee)
@@ -321,6 +321,7 @@ private val previewData = GiveTxPermissionBottomSheetConfig(
onChangeApproveType = { ApproveType.LIMITED },
subtitle = resourceReference(R.string.give_permission_staking_subtitle, wrappedList("1")),
dialogText = resourceReference(R.string.give_permission_staking_footer),
+ footerText = resourceReference(R.string.swap_give_permission_fee_footer),
),
onCancel = {},
)
\ No newline at end of file
diff --git a/common/ui/src/main/java/com/tangem/common/ui/bottomsheet/permission/state/GiveTxPermissionState.kt b/common/ui/src/main/java/com/tangem/common/ui/bottomsheet/permission/state/GiveTxPermissionState.kt
index 9f52bca622..b88bfa47d4 100644
--- a/common/ui/src/main/java/com/tangem/common/ui/bottomsheet/permission/state/GiveTxPermissionState.kt
+++ b/common/ui/src/main/java/com/tangem/common/ui/bottomsheet/permission/state/GiveTxPermissionState.kt
@@ -15,6 +15,7 @@ sealed class GiveTxPermissionState {
data class ReadyForRequest(
val subtitle: TextReference,
val dialogText: TextReference,
+ val footerText: TextReference,
val currency: String,
val amount: String,
val walletAddress: String,
diff --git a/core/res/src/main/res/values-de/strings.xml b/core/res/src/main/res/values-de/strings.xml
index 91ac04b5bf..e2bb4db22f 100644
--- a/core/res/src/main/res/values-de/strings.xml
+++ b/core/res/src/main/res/values-de/strings.xml
@@ -20,7 +20,7 @@
Gehe zu den Einstellungen, um die biometrische Authentifizierung in der Tangem-App zu aktivieren
Biometrische Authentifizierung aktivieren
Dadurch werden alle gespeicherten Zugangscodes für die Wallet gelöscht. Jede weitere Operation mit der Wallet erfordert die Übermittlung des Zugangscodes.
- Durch das Entfernen der gespeicherten Karte oder Ring werden alle gespeicherten Wallets und deren Zugangscodes aus der App gelöscht.
+ Durch das Entfernen der gespeicherten Geräte werden alle gespeicherten Wallets und deren Zugangscodes aus der App gelöscht.
Zugangscode speichern
Bei Interaktionen mit deiner Karte oder Ring wird anstelle des Zugangscodes eine biometrische Authentifizierung abgefragt.
Behalte die Wallet in der App
@@ -41,8 +41,8 @@
Backup-Prozess starten
Verwende eine Bankkarte oder eine andere Zahlungsmethode
- - %d Karte oder Ring
- - %d Karten oder Ringe
+ - %d Gerät
+ - %d Geräte
Deaktiviere diese Option, wenn du nicht möchtest, dass diese Karte oder Ring zum Zurücksetzen von Zugangscodes auf anderen Karten oder Ringe in dieser Wallets verwendet wird. Bitte beachte, dass du dann auch den Zugangscode auf dieser Karte oder Ring nicht zurücksetzen kannst.
Ermöglicht die Verwendung dieser Karte oder Ring zum Zurücksetzen des Zugangscodes auf anderen Karten oder Ringe in dieser Brieftasche
@@ -51,15 +51,15 @@
Möchtest du das wirklich tun?
Zugangscode ändern
Der Zugangscode wird nur auf dieser Karte oder Ring geändert
- Alle Karten oder Ringe der ausgewählten Wallet wurden auf die Werkseinstellungen zurückgesetzt. Du kannst nun eine neue Wallet aufsetzen.
+ Alle Tangem Geräte der ausgewählten Wallet wurden auf die Werkseinstellungen zurückgesetzt. Du kannst nun eine neue Wallet aufsetzen.
Komplett zurücksetzen
- Möchtest du die nächste Karte oder Ring in dieser Wallet zurücksetzen?
+ Möchtest du die nächsten geräte in dieser Wallet zurücksetzen?
Karte oder Ring zurücksetzen
- Wir empfehlen dir, den Zurücksetzungsprozess für alle Karten oder Ringe in dieser Wallet abzuschließen
- Du hast nicht alle deine Karten oder Ringe zurückgesetzt
+ Wir empfehlen dir, den Zurücksetzungsprozess für aller Geräte in dieser Wallet abzuschließen
+ Du hast nicht alle deine Geräte zurückgesetzt
Auf Werkseinstellungen zurücksetzen
Sicherheitsmodus
- Karten oder Ring-Einstellungen
+ Geräteeinstellungen
Zusätzlich zu den Netzwerkgebühren erhebt das Cardano-Netzwerk %1$s ADA bei Transaktionen mit dem Token %2$s
Cardano-Transaktionsanforderungen
Um eine %1$s Transaktion durchzuführen, musst du einen gewissen ADA-Betrag einzahlen, um die Netzwerkgebühr und den ADA-Mindestwert zu decken (5 ADA werden empfohlen).
@@ -219,7 +219,7 @@
Empfehlungsprogramm
Flippe den Bildschirm deines Geräts nach unten, um Salden schnell ein- und auszublenden
%s Hasch
- Karten- oder Ring-ID
+ Geräte-ID
Kontakt zum Support
Weitere Karten oder Ringe verknüpfen
App Währung
@@ -298,17 +298,16 @@
Eine Transaktion kann nicht gesendet werden
Fehler in der Coinbeschreibung
Nur diese
- Das Netzwerk erhebt eine Token-Genehmigungsgebühr, um zu überprüfen, ob Sie die Verwendung Ihres Tokens für den Swap genehmigen.
Gib das Genehmigungslimit für das ausgewählte Token an
Betrag %s
Die Genehmigungsfunktion ist erforderlich, um einer anderen Adresse die Berechtigung zur Verwendung einer bestimmten Menge Ihrer Token zu erteilen. Standardmäßig können Smart Contracts nicht auf deine Token zugreifen, es sei denn, du stimmen zu. Indem du deine Token \"freischaltest\", autorisierst du den StakeKit Smart Contract, sie zu verwenden. Die Miner des Netzwerks erhalten eine Gasgebühr (von dir bezahlt), um diese Aktion in der Blockchain aufzuzeichnen. Du kannst deine Token einsetzen, nachdem du die Genehmigung erteilt hast.
- Um fortzufahren, musst du StakeKit Smart Contract erlauben, deine %s zu verwenden
+ Um fortzufahren, musst du Polygon Smart Contract erlauben, deine %s zu verwenden
Um fortzufahren, erteile %1s Smart Contracts die Berechtigung, dein zu %2s verwenden.
Erlaubnis erteilen
Unbegrenzt
Karte oder Ring bestellen
Karte oder Ring scannen
- Diese Informationen wurden mithilfe von KI generiert.\n Tippe hier, wenn Du Fehler finden.
+ Diese Informationen wurden mithilfe von KI generiert.\nTippe hier, wenn Du Fehler finden.
Um den Zugangscode zu ändern, halte die Karte oder Ring wie oben gezeigt an das Gerät und entferne sie erst am Ende des Vorgangs.
Um den Passcode zu ändern, halte die Karte oder Ring wie oben gezeigt an das Gerät und entferne sie erst am Ende des Vorgangs.
Um die Wallet zu erstellen, halte die Karte oder Ring wie oben gezeigt an das Gerät und entferne sie erst am Ende des Vorgangs.
@@ -455,11 +454,11 @@
Rufe dies auf oder tippe auf die Suchleiste, um Token direkt vom Markt hinzuzufügen
Token hinzufügen
NFC ist auf deinem Gerät nicht verfügbar
- Du musst einen einzigen Zugangscode einrichten, um alle deine Karten oder Ringe zu schützen
+ Du musst einen einzigen Zugangscode einrichten, um alle deine Geräte zu schützen
Schützen
Du kannst später auf jeder Karte oder Ring einen individuellen Zugangscode einrichten
Personalisieren
- Stelle den Zugangscode mit einer verknüpften Karte oder einem Ring wieder her. Bewahre nicht alle Deine Geräte an einem Ort auf.
+ Stelle den Zugangscode mit einem verknüpften Gerät wieder her. Bewahre nicht alle Deine Geräte an einem Ort auf.
Wiederherstellen
Wähle ein beliebiges Wort, eine Phrase oder eine Zahl als Zugangscode
Zugangscode erstellen
@@ -525,16 +524,16 @@
Bereite die primäre Karte oder Ring mit der Nummer %s vor.
Bereite den Ring vor und drücke unten die Scan-Taste
Deine Tangem-Karte oder Ring ist konfiguriert und einsatzbereit.
- Maximale Anzahl an Karten oder Ringe hinzugefügt. Schließe den Sicherungsvorgang ab.
+ Maximale Anzahl an Geräten hinzugefügt. Schließe den Sicherungsvorgang ab.
Karte oder Ring aktivieren
Sicherungs-Karte oder Ring
Sicherungskarte oder Ring Nr. %d
Sicherungs-Ring
- Keine Sicherungskarten oder Sicherungsring
+ Keine Sicherungsgeräte
Benachrichtigungen
- Eine Backup-Karte oder Ring hinzugefügt
+ Eine Backupgerät hinzugefügt
Bereite deine Karte oder Ring vor
- Zwei Backup-Karten oder Ring hinzugefügt
+ Zweis Backupgerät hinzugefügt
Um zu beginnen, lade einfach die wallet mit einem beliebigen Betrag auf
Um zu beginnen, lade die Wallet einfach mit mehr als %1$s %2$s auf.
Krypto kaufen
@@ -609,7 +608,7 @@
Möchtest du Biometrie nutzen?
Beachte, dass für Transaktionen mit deinem Guthaben weiterhin deine Karte oder Ring erforderlich ist
Karte oder Ring scannen
- Scanne die Karte oder Ring, um ihre Einstellungen zu ändern. Die Änderungen wirken sich nur auf die von dir gescannte Karte oder Ring aus und haben keine Auswirkungen auf andere mit deiner Wallet verknüpften Karten oder Ringe.
+ Scanne die Karte oder Ring, um ihre Einstellungen zu ändern. Die Änderungen wirken sich nur auf die von dir gescannte Karte oder Ring aus und haben keine Auswirkungen auf andere mit deiner Wallet verknüpften Geräte.
Halte deine Karte oder Ring bereit!
Bereits in der eingegebenen Adresse enthalten
Der Provisionsbetrag ist %s mal der empfohlene Betrag. Stelle sicher, dass die benutzerdefinierten Einstellungen korrekt sind.
@@ -794,6 +793,7 @@
Lerne Tangem kennen
Tausche, kaufen Sie NFTs, vergebe Kredite und tätige Einlagen bei mehr als 100 verschiedenen dezentralen Diensten
Web 3.0-kompatibel
+ Das Netzwerk erhebt eine Token-Genehmigungsgebühr, um zu überprüfen, ob Sie die Verwendung Ihres Tokens für den Swap genehmigen.
Tausche mehr Token zu besseren Kursen direkt in deiner Brieftasche.
Neuer Swap-Anbieter verfügbar!
Der Betrag umfasst:\n- Gebühr des Dienstanbieters\n- Netzgebühr für die Rücksendung von %s von der Vermittlungsstelle an die Adresse des Nutzers.
@@ -880,6 +880,7 @@
Antrag auf Erstellung einer Transaktion für %1$s\n%2$s\n\nBetrag: %3$s\nGebühr: %4$s\nGesamt: %5$s\nSaldo: %6$s
Die Transaktion kann nicht gesendet werden. Nicht genügend Guthaben.
WalletConnect Sitzung konnte nicht aufgebaut werden. Bitte versuche es später noch einmal.
+ Nicht alle Token wurden zu Deiner Liste hinzugefügt. Bitte füge sie zuerst hinzu und versuche es erneut. Fehlende Token: \n
Nachricht konnte nicht signiert werden.\nBitte, versuche es erneut
WalletConnect-Sitzung konnte nicht aufgebaut werden: Timeout-Fehler. Bitte versuche es später noch einmal.
Sitzungsanfrage enthält nicht unterstützte Blockchains für WalletConnect-Verbindung. Nicht unterstützte Blockchains:\n
@@ -987,7 +988,7 @@
Du hast eine unterbrochene Sicherung. Möchtest du diese fortsetzen?
Ja, fortsetzen
Verwerfen
- Wenn du das Backup jetzt abbrichst, musst du die Karten oder Ringe auf die Werkseinstellungen zurücksetzen, um von vorne zu beginnen
+ Wenn du das Backup jetzt abbrichst, musst du die Geräte auf die Werkseinstellungen zurücksetzen, um von vorne zu beginnen
Sicherung fortsetzen
Dies ist eine unwiderrufliche Aktion
Anmelden mit %s
diff --git a/core/res/src/main/res/values-es/strings.xml b/core/res/src/main/res/values-es/strings.xml
index ca139eb0a7..6703130663 100644
--- a/core/res/src/main/res/values-es/strings.xml
+++ b/core/res/src/main/res/values-es/strings.xml
@@ -83,10 +83,12 @@
Ir a %1$s
No ha otorgado acceso a su cámara, cambie su configuración de privacidad
Cancelar
+ Cambie
Elige una acción
Reclamar
Reclame recompensas
Cerrar
+ confirme
Continuar
Copiar
Copiar la dirección
@@ -148,7 +150,7 @@
Renombrar
Guarde
Guardar cambios
- Buscar en el mercado
+ Buscar
Buscar tokens
sec
Seed phrase
@@ -298,11 +300,10 @@
No se puede completar una transacción
Error de descripción de moneda
Esta transacción
- La red cobrará una tarifa de aprobación de token para verificar que está autorizando el uso de su token para el swap.
Especifique el límite aprobado para el token seleccionado.
Montante %s
La función Aprobar es necesaria para otorgar permiso a otra dirección para usar una cantidad específica de sus tokens. Por diseño, los contratos inteligentes no pueden acceder a sus tokens sin su aprobación. Al \"desbloquear\" sus tokens, autoriza al contrato inteligente de StakeKit a usarlos. Los mineros de la red reciben una tarifa de gas (pagada por usted) por registrar esta acción en la cadena de bloques. Puede apostar su token después de dar su aprobación.
- Para continuar, debe autorizar el contrato inteligente de StakeKit para utilizar su %s
+ Para continuar, debe autorizar el contrato inteligente de Polygon para utilizar su %s
Para continuar, de autorización a los smart contracts de %1s para usar su %2s
Dar autorización
Ilimitado
@@ -550,6 +551,9 @@
Restaurar código de acceso
Tarjetas idénticas
Código de acceso
+ Nuestros servicios no están disponibles en este país
+ Cámbielo o confírmelo
+ Su residencia ha sido identificada como
Agrupar
Por saldo
Organizar tokens
@@ -710,13 +714,14 @@
Reclamo de recompensa
Método para recibir recompensas por apuesta.\nPuede ser automático, donde la recompensa se acredita en tu dirección, o manual, donde debes retirar la recompensa creando una transacción para recibirla.
Calendario de recompensas
- Este es un cronograma que determina cuándo los participantes reciben sus recompensas.
+ Este es un cronograma que determina cuándo los participantes reciben sus recompensas. La duración de la distribución de recompensas puede variar ligeramente según el validador y la carga de la red.
Recompensas para reclamar: %s
Staking %s
Periodo de disociación
El período que debes esperar después de solicitar el retiro de fondos del staking antes de que los tokens estén disponibles.
Periodo de calentamiento
El tiempo permitido para activar la participación en la apuesta.
+ La red cobrará una tarifa de aprobación de token para verificar que usted está autorizando el uso de su token para el staking.
Al utilizar la función de staking, usted acepta %1$s y %2$s del proveedor
Bloqueado
Migrar
@@ -775,6 +780,7 @@
Desunión
Desbloquear
Desbloqueando
+ El monto excede el saldo apostado
Sin staking
Unstaking
Detenando el staking de activos %s
@@ -796,6 +802,7 @@
Descubra Tangem
Intercambie, compre NFT, haga préstamos y depósitos en más de 100 servicios descentralizados diferentes
Compatible con Web 3.0
+ La red cobrará una tarifa de aprobación de token para verificar que está autorizando el uso de su token para el swap.
Intercambie más tokens a mejores tasas directamente en su billetera.
¡Nuevo proveedor de intercambio disponible!
El monto incluye:\n• Tarifas del proveedor de servicios\n• Tarifas de red por enviar %s desde el intercambio a la dirección del usuario.
diff --git a/core/res/src/main/res/values-fr/strings.xml b/core/res/src/main/res/values-fr/strings.xml
index 23a43e7ff8..80f7d2e337 100644
--- a/core/res/src/main/res/values-fr/strings.xml
+++ b/core/res/src/main/res/values-fr/strings.xml
@@ -83,10 +83,12 @@
Aller à %1$s
Vous n\'avez pas octroyé l\'accès à votre caméra, veuillez modifier vos paramètres de confidentialité
Annuler
+ Changez
Choisissez une action
Réclamer
Réclamez des récompenses
Fermer
+ Confirmez
Continuer
Copier
Copier l\'adresse
@@ -298,11 +300,10 @@
Impossible d\'effectuer une transaction
Erreur de description de la pièce
Cette transaction
- Le réseau facturera des frais d\'approbation de jeton pour vérifier que vous autorisez l\'utilisation de votre jeton pour l\'échange.
Spécifiez la limite approuvée pour le jeton sélectionné
Montant %s
La fonction Approuver est nécessaire pour accorder la permission à une autre adresse d\'utiliser une quantité spécifique de vos jetons. De par leur conception, les contrats intelligents ne peuvent pas accéder à vos jetons sans votre approbation. En « déverrouillant » vos jetons, vous autorisez le contrat intelligent StakeKit à les utiliser. Les mineurs du réseau reçoivent des frais de gaz (payés par vous) pour enregistrer cette action sur la blockchain. Vous pouvez staker votre jeton après avoir donné votre approbation.
- Pour continuer, vous devez autoriser le contrat intelligent StakeKit à utiliser votre %s
+ Pour continuer, vous devez autoriser le contrat intelligent Polygon à utiliser votre %s
Pour continuer, accordez aux smart contracts de %1s l\'autorisation d\'utiliser votre %2s
Donner l\'autorisation
Illimité
@@ -550,6 +551,9 @@
Restauration du code d\'accès
Cartes identiques
Code d\'accès
+ Nos services ne sont pas disponibles dans ce pays
+ Modifiez-le ou confirmez-le
+ Votre résidence a été identifiée comme
Grouper
Par solde
Organiser les jetons
@@ -710,13 +714,14 @@
Réclamation de récompense
Méthode de réception des récompenses de staking.\nElle peut être automatique, où la récompense est créditée sur votre adresse, ou manuelle, où vous devez retirer la récompense en créant une transaction pour la recevoir.
Calendrier de récompenses
- Il s\'agit d\'un calendrier qui détermine le moment où les participants au staking reçoivent leurs récompenses.
+ Il s\'agit d\'un calendrier qui détermine le moment où les participants au staking reçoivent leurs récompenses. La durée de distribution des récompenses peut varier légèrement en fonction du validateur et de la charge du réseau.
Récompenses à réclamer: %s
Staking %s
Période de dissociation
La période que vous devez attendre après avoir demandé le retrait des fonds du staking avant que les jetons ne soient disponibles.
Période d\'échauffement
Le temps imparti pour activer la participation au staking.
+ Le réseau facturera des frais d’approbation de jeton pour vérifier que vous autorisez l’utilisation de votre jeton pour le jalonnement.
En utilisant la fonctionnalité de staking, vous acceptez les %1$s et %2$s du fournisseur
Bloqué
Migrer
@@ -775,6 +780,7 @@
Dissociation
Débloquer
Déverrouillage
+ Le montant dépasse le solde misé
Non-staké
Unstaking
En train de destaker les actifs %s
@@ -796,6 +802,7 @@
Découvrez Tangem
Échangez, achetez des NFT, faites des prêts et des dépôts dans plus de 100 services décentralisés différents
Compatible avec Web 3.0
+ Le réseau facturera des frais d\'approbation de jeton pour vérifier que vous autorisez l\'utilisation de votre jeton pour l\'échange.
Échangez plus de jetons à de meilleurs taux directement dans votre portefeuille.
Nouveau fournisseur d\'échange disponible !
Le montant comprend :\n• les frais du fournisseur de services\n• les frais de réseau pour l\'envoi de %s depuis l\'échange vers l\'adresse de l\'utilisateur.
diff --git a/core/res/src/main/res/values-ja/strings.xml b/core/res/src/main/res/values-ja/strings.xml
index 9daec072f7..d5ae3921d5 100644
--- a/core/res/src/main/res/values-ja/strings.xml
+++ b/core/res/src/main/res/values-ja/strings.xml
@@ -297,11 +297,10 @@
取引を送信できません
コインの説明エラー
取引
- ネットワークは、あなたがトークンのスワップを承認していることを確認するために、トークン承認手数料を請求します。
選択したトークンの承認制限を指定します
金額%s
承認機能は、別のアドレスに特定の量のトークンを使用する許可を与えるために必要です。設計上スマートコントラクトは、承認しない限りトークンにアクセスできません。トークンを「ロック解除」すると、StakeKitスマート コントラクトがトークンを使用する権限が与えられます。ネットワークのマイナーは、このアクションをブロックチェーンに記録するためにガス料金(あなたが支払う)を受け取ります。承認後、トークンをステーキングできます。
- 続行するには、StakeKitスマートコントラクトが%sを使用することを許可する必要があります
+ 続行するには、Polygonスマートコントラクトが%sを使用することを許可する必要があります
続行するには、%1sスマートコントラクトに%2sを使用する権限を付与してください
許可を与える
無制限
@@ -712,6 +711,7 @@
ステーキングから資金の引き出しを要求した後、トークンが利用可能になるまでの待機期間。
ウォームアップ期間
ステーキングへの参加を有効にするために割り当てられた時間。
+ ネットワークは、ステーキングのためにトークンの使用を承認していることを確認するために、トークン承認手数料を請求します。
ステーキング機能を使用すると、プロバイダーの%1$sと%2$sに同意したことになります
ロック中
移行
@@ -770,6 +770,7 @@
ステーキング解約中
ロック解除
ロック解除中
+ 金額がステーキング残高を超えています
ステーキングされていない
ステーキング解除
ステーキング解除中の資産%s
@@ -791,6 +792,7 @@
Tangemのご紹介
100種類以上の分散型サービスで、NFTの交換・購入や、借入・預金を行うことができます。
Web3.0対応
+ ネットワークは、あなたがトークンのスワップを承認していることを確認するために、トークン承認手数料を請求します。
より多くのトークンをより良いレートで、ウォレット内にて直接交換します。
新しいスワッププロバイダーが利用可能になりました!
この金額には以下が含まれます:\n- サービスプロバイダーの手数料\n- 取引所からユーザーのアドレスに%s を送り返すためのネットワーク手数料。
diff --git a/core/res/src/main/res/values-ru/strings.xml b/core/res/src/main/res/values-ru/strings.xml
index 1d7f48e667..c007d49526 100644
--- a/core/res/src/main/res/values-ru/strings.xml
+++ b/core/res/src/main/res/values-ru/strings.xml
@@ -305,11 +305,10 @@
Не могу отправить транзакцию
Ошибка в описании монеты
Транзакция
- Комиссия сети за одобрение токена будет взиматься за подтверждение того, что именно вы разрешаете использовать ваш токен для обмена.
Укажите лимит доступа к выбранному токену
Количество %s
Функция подтверждения необходима для предоставления другому адресу разрешения на использование определенного количества ваших токенов.По замыслу смарт-контракты не могут получить доступ к вашим токенам, если вы не одобрите доступ со своей стороны. «Разблокируя» свои токены, вы даете смарт-контракту StakeKit разрешение использовать ваши активы. Майнеры сети получают компенсацию за газ (оплачиваемый вами) за запись этого действия в блокчейне. Как только разрешение будет предоставлено, вы сможете осуществить стейкинг токена.
- Чтобы продолжить, вам необходимо разрешить смарт контракту StakeKit использовать ваш %s
+ Чтобы продолжить, вам необходимо разрешить смарт контракту Polygon использовать ваш %s
Чтобы продолжить, вам нужно разрешить смарт-контракту %1s использовать ваш %2s
Дать разрешение
Безлимитно
@@ -519,7 +518,7 @@
Ваша seed-фраза
-
+ - %d
- %d слова
- %d слов
- %d слов
@@ -730,13 +729,14 @@
Способ вознаграждения
Способ получения вознаграждений за стейкинг. Оно может зачисляться автоматически на ваш адрес или вручную, когда вознаграждение нужно вывести, создав транзакцию на её получение.
Период вознагражения
- Это период, определяющий, когда участники стейкинга получат свои вознаграждения.
+ Это график, который определяет, когда участники стейкинга получают свои награды. Время распределения наград может немного варьироваться в зависимости от валидатора и нагрузки сети.
Вознаграждение для получения: %s
Стейкинг %s
Период отзыва
Период, который необходимо подождать после запроса на вывод средств из стейкинга, прежде чем токены станут доступны.
Период прогрева
Время, необходимое для начала процесса стейкинга и активации процесса начисления наград
+ Комиссия сети за одобрение токена будет взиматься за подтверждение того, что именно вы разрешаете использовать ваш токен для стейкинга.
Пользуясь стейкинг сервисом, вы соглашаетесь с %1$s и %2$s
Заблокировано
Переместить
@@ -794,6 +794,7 @@
Отзыв
Разблокировать
Разблокировка
+ Сумма превышает застейканный баланс
Вывод из стейкинга
Завершение стейкинга
Завершение стейкинга %s
@@ -815,6 +816,7 @@
Встречайте Tangem
Обменивайте, покупайте NFT, получайте займы и делайте вклады в более чем 100 различных децентрализованных сервисах
Поддержка Web 3.0
+ Комиссия сети за одобрение токена будет взиматься за подтверждение того, что именно вы разрешаете использовать ваш токен для обмена.
Обменивайте больше токенов по лучшим курсам прямо в вашем кошельке.
Новый провайдер обмена!
В сумму включено: \n• комиссия провайдера сервиса\n• комиссия сети за отправку %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 c7e208ecb6..416b3bdb21 100644
--- a/core/res/src/main/res/values-uk-rUA/strings.xml
+++ b/core/res/src/main/res/values-uk-rUA/strings.xml
@@ -85,10 +85,12 @@
Перейдіть до %1$s
Ви не надали доступ до камери, будь ласка, змініть налаштування конфіденційності
Скасувати
+ Змінити
Виберіть дію
Отримати
Отримати винагороди
Закрити
+ Підтвердити
Продовжити
Копіювати
Скопіювати адресу
@@ -304,11 +306,10 @@
Не вдається відправити транзакцію
Помилка в описі монети
Транзакція
- Мережа стягує комісію за схвалення токену за підтвердження, що саме ви дозволяєте використовувати ваш токен для обміну.
Вкажіть ліміт доступу для обраного токена
Кількість %s
Функція підтвердження необхідна для надання дозволу іншій адресі на використання певної кількості ваших токенів. За задумом, смарт-контракти не можуть отримати доступ до ваших токенів без вашого схвалення. \"Розблоковуючи\" свої токени, ви дозволяєте смарт-контракту StakeKit використовувати їх. Майнери мережі отримують плату за газ (сплачену вами), щоб зафіксувати цю дію в блокчейні. Ви зможете застейкати свій токен після того, як дасте дозвіл.
- Щоб продовжити, вам потрібно дозволити смарт-контракту StakeKit використовувати ваш %s
+ Щоб продовжити, вам потрібно дозволити смарт-контракту Polygon використовувати ваш %s
Щоб продовжити, вам потрібно дозволити смарт-контракту %1s використовувати ваш %2s
Надати дозвіл
Необмежено
@@ -344,7 +345,7 @@
Ринкова капіталізація
Спочатку був створений блокчейн криптовалюти
Основна мережа
- Використання неосновних мереж для токенів дозволяє забезпечити крос-блокчейн інтероперабельність, що дає змогу використовувати активи в різноманітних децентралізованих додатках та смарт-контрактах на різних платформах. Однак це часто вимагає наявності кастодіана або смарт-контракту для безпечного зберігання оригінального активу, що вводить централізацію та ризик контрагента.
+ Використання нерідних мереж для токенів забезпечує сумісність між блокчейнами, дозволяючи використовувати активи в різноманітних децентралізованих програмах і смарт-контрактах на різних платформах. Однак для цього часто використовується зберігач або смарт-контракт для надійного зберігання оригінального активу, вводячи централізацію та ризик контрагента.
Не оригінальний або первинний блокчейн, на якому розміщено токен
Неосновні мережі
Оберіть мережі
@@ -519,7 +520,7 @@
Ваша seed-фраза
-
+ - %d слово
- %d слова
- %d слів
- %d слів
@@ -566,6 +567,9 @@
Відновлення коду доступу
Ідентичні картки
Код доступу
+ Наші сервіси недоступні в цій країні
+ Змінити або підтвердити
+ Ваше місце проживання визначено як
Групами
За балансом
Сортування токенів
@@ -730,13 +734,14 @@
Отримати винагороду
Метод отримання винагород за стейкінг.\nВін може зараховуватися автоматично на вашу адресу або вручну, коли винагороду треба вивести, створивши транзакцію на її отримання.
Розклад винагород
- Це період, який визначає, коли учасники стейкінгу отримують свої винагороди.
+ Це графік, який визначає, коли учасники стейкінгу отримують свої винагороди. Час розподілу винагород може дещо відрізнятися залежно від валідатора та навантаження на мережу.
Нагороди для отримання: %s
Стейкінг %s
Період розблокування
Період, який ви повинні чекати після запиту на виведення коштів зі стейкінгу, перш ніж токени стануть доступними.
Період блокування
Відведений час для активації участі в стейкінгу.
+ Комісія мережі за схвалення токену, щоб верифікувати, що саме ви даєте дозвіл на використання вашого токена для стейкінгу.
Використовуючи функцію стейкінгу, ви погоджуєтесь з %1$s та %2$s
Заблоковано
Перемістити
@@ -795,6 +800,7 @@
Розблокування
Розблокувати
Розблокування
+ Сума перевищує баланс стейкінгу
Вивід зі стейкінгу
Зняти зі стейкінгу
Виведення зі стейкінгу %s
@@ -816,6 +822,7 @@
Зустрічайте Tangem
Обмінюйте, купуйте NFT, отримуйте позики та робіть депозити у понад 100 різних децентралізованих сервісах
Web 3.0 сумісність
+ Мережа стягує комісію за схвалення токену за підтвердження, що саме ви дозволяєте використовувати ваш токен для обміну.
Обмінюйте більше токенів за вигіднішим курсом прямо у своєму гаманці.
З\'явився новий провайдер обмінів!
Сума включає: \n• комісію постачальника послуг\n• комісію мережі за відправлення %s з біржі назад на адресу користувача.
@@ -902,6 +909,7 @@
Запит на створення транзакції для %1$s\n%2$s\n\nСума: %3$s\nКомісія: %4$s\nВсього: %5$s\nБаланс: %6$s
Неможливо відправити транзакцію. Недостатньо коштів.
Не вдалося встановити сеанс WalletConnect. Будь ласка, спробуйте пізніше.
+ Не всі токени додано до вашого списку. Будь ласка, додайте їх спочатку і спробуйте ще раз. Відсутні токени:\n
Не вдалося підписати повідомлення.\nБудь ласка, спробуйте ще раз
Не вдалося створити сеанс WalletConnect за відведений час. Будь ласка, спробуйте пізніше.
Запит на підключення сеансу WalletConnect містить непідтримувані блокчейни. Непідтримувані блокчейни:\n
diff --git a/core/res/src/main/res/values/strings.xml b/core/res/src/main/res/values/strings.xml
index 7bb68fb3cf..5a6cfa6ddc 100644
--- a/core/res/src/main/res/values/strings.xml
+++ b/core/res/src/main/res/values/strings.xml
@@ -300,11 +300,10 @@
Can\'t send a transaction
Coin description error
Transaction
- The network will charge a token approval fee to verify that you are authorizing the use of your token for the swap.
Specify the approve limit for the selected token
Amount %s
The Approve function is needed to grant permission to another address to use a specific amount of your tokens. By design, smart contracts can\'t access your tokens unless you approve. By \"unlocking\" your tokens, you authorize the StakeKit smart contract to use them. The network\'s miners receive a gas fee (paid by you) to record this action on the blockchain. You can stake your token after giving approval.
- To continue you need to allow StakeKit smart contract to use your %s
+ To continue you need to allow Polygon smart contract to use your %s
To continue, grant %1s smart contracts permission to use your %2s
Give Permission
Unlimited
@@ -507,7 +506,7 @@
Your seed phrase
-
+ - %d word
- %d words
To import your wallet, enter your seed phrase in the field below
@@ -722,6 +721,7 @@
The period you must wait after requesting to withdraw funds from staking before the tokens become available.
Warmup period
The allocated time for activating participation in staking.
+ The network will charge a token approval fee to verify that you are authorizing the use of your token for the staking.
By using staking functionality, you agree with provider’s %1$s and %2$s
Locked
Migrate
@@ -780,6 +780,7 @@
Unbonding
Unlock
Unlocking
+ Amount exceeds staked balance
Unstaked
Unstaking
Unstaking assets %s
@@ -801,6 +802,7 @@
Meet Tangem
Exchange, buy NFT\'s, make loans and deposits in more than 100 different decentralized services
Web 3.0 Compatible
+ The network will charge a token approval fee to verify that you are authorizing the use of your token for the swap.
Exchange more tokens at better rates directly in your wallet.
New Swap Provider Available!
The amount includes:\n• service provider\'s fee\n• network fee for sending %s from the exchange back to the user\'s address.
diff --git a/core/ui/src/main/java/com/tangem/core/ui/components/currency/fiaticon/FiatIcon.kt b/core/ui/src/main/java/com/tangem/core/ui/components/currency/fiaticon/FiatIcon.kt
index 13462984c2..0de3e1e864 100644
--- a/core/ui/src/main/java/com/tangem/core/ui/components/currency/fiaticon/FiatIcon.kt
+++ b/core/ui/src/main/java/com/tangem/core/ui/components/currency/fiaticon/FiatIcon.kt
@@ -24,7 +24,7 @@ fun FiatIcon(
size: Dp,
isGrayscale: Boolean,
modifier: Modifier = Modifier,
- @DrawableRes fallbackResId: Int = R.drawable.ic_shape_circle,
+ @DrawableRes fallbackResId: Int = R.drawable.ic_shape_circle_40,
) {
val iconData: Any = if (url.isNullOrBlank()) fallbackResId else url
val alpha = if (isGrayscale) GRAY_SCALE_ALPHA else 1f
diff --git a/core/ui/src/main/res/drawable/ic_shape_circle.xml b/core/ui/src/main/res/drawable/ic_shape_circle.xml
deleted file mode 100644
index 59a662d141..0000000000
--- a/core/ui/src/main/res/drawable/ic_shape_circle.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/core/ui/src/main/res/drawable/ic_shape_circle_40.xml b/core/ui/src/main/res/drawable/ic_shape_circle_40.xml
new file mode 100644
index 0000000000..d618196f7b
--- /dev/null
+++ b/core/ui/src/main/res/drawable/ic_shape_circle_40.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/domain/manage-tokens/src/main/kotlin/com/tangem/domain/managetokens/ValidateTokenFormUseCase.kt b/domain/manage-tokens/src/main/kotlin/com/tangem/domain/managetokens/ValidateTokenFormUseCase.kt
index ffbfa795bf..79a0481bc4 100644
--- a/domain/manage-tokens/src/main/kotlin/com/tangem/domain/managetokens/ValidateTokenFormUseCase.kt
+++ b/domain/manage-tokens/src/main/kotlin/com/tangem/domain/managetokens/ValidateTokenFormUseCase.kt
@@ -16,12 +16,19 @@ class ValidateTokenFormUseCase(
networkId: Network.ID,
formValues: AddCustomTokenForm.Raw,
): EitherNel = either {
- if (formValues.name.isBlank() && formValues.symbol.isBlank() && formValues.decimals.isBlank()) {
- val contractAddress = withError({ nonEmptyListOf(it) }) {
- ensureIsContractAddressValid(formValues.contractAddress, networkId)
- }
+ if (formValues.name.isBlank() &&
+ formValues.symbol.isBlank() &&
+ formValues.decimals.isBlank()
+ ) {
+ if (formValues.contractAddress.isBlank()) {
+ AddCustomTokenForm.Validated.Empty
+ } else {
+ val contractAddress = withError({ nonEmptyListOf(it) }) {
+ ensureIsContractAddressValid(formValues.contractAddress, networkId)
+ }
- AddCustomTokenForm.Validated.ContractAddress(contractAddress)
+ AddCustomTokenForm.Validated.ContractAddressOnly(contractAddress)
+ }
} else {
zipOrAccumulate(
{ ensureIsContractAddressValid(formValues.contractAddress, networkId) },
@@ -43,10 +50,6 @@ class ValidateTokenFormUseCase(
contractAddress: String,
networkId: Network.ID,
): String {
- ensure(contractAddress.isNotBlank()) {
- CustomTokenFormValidationException.ContractAddress.Empty
- }
-
val isValid = catch({ repository.validateContractAddress(contractAddress, networkId) }) {
raise(CustomTokenFormValidationException.DataError(it))
}
diff --git a/domain/manage-tokens/src/main/kotlin/com/tangem/domain/managetokens/model/AddCustomTokenForm.kt b/domain/manage-tokens/src/main/kotlin/com/tangem/domain/managetokens/model/AddCustomTokenForm.kt
index a5b5dc5bdc..c2cebdb84e 100644
--- a/domain/manage-tokens/src/main/kotlin/com/tangem/domain/managetokens/model/AddCustomTokenForm.kt
+++ b/domain/manage-tokens/src/main/kotlin/com/tangem/domain/managetokens/model/AddCustomTokenForm.kt
@@ -11,7 +11,9 @@ sealed class AddCustomTokenForm {
sealed class Validated : AddCustomTokenForm() {
- data class ContractAddress(
+ data object Empty : Validated()
+
+ data class ContractAddressOnly(
val contractAddress: String,
) : Validated()
diff --git a/domain/manage-tokens/src/main/kotlin/com/tangem/domain/managetokens/model/exceptoin/CustomTokenFormValidationException.kt b/domain/manage-tokens/src/main/kotlin/com/tangem/domain/managetokens/model/exceptoin/CustomTokenFormValidationException.kt
index a197980215..37781b95e1 100644
--- a/domain/manage-tokens/src/main/kotlin/com/tangem/domain/managetokens/model/exceptoin/CustomTokenFormValidationException.kt
+++ b/domain/manage-tokens/src/main/kotlin/com/tangem/domain/managetokens/model/exceptoin/CustomTokenFormValidationException.kt
@@ -4,8 +4,6 @@ sealed class CustomTokenFormValidationException {
sealed class ContractAddress : CustomTokenFormValidationException() {
- data object Empty : ContractAddress()
-
data object Invalid : ContractAddress()
}
diff --git a/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/model/CustomTokenFormModel.kt b/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/model/CustomTokenFormModel.kt
index c1c6f9922e..a6a587dc8c 100644
--- a/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/model/CustomTokenFormModel.kt
+++ b/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/model/CustomTokenFormModel.kt
@@ -61,15 +61,9 @@ internal class CustomTokenFormModel @Inject constructor(
if (params.network.canHandleTokens) {
observeTokenFormUpdates()
- } else {
- modelScope.launch {
- customCurrencyValidator.createCoin(
- userWalletId = params.userWalletId,
- networkId = params.network.id,
- derivationPath = getDerivationPath(),
- )
- }
}
+
+ createCoin()
}
private fun getInitialState(): CustomTokenFormUM {
@@ -112,6 +106,7 @@ internal class CustomTokenFormModel @Inject constructor(
}
.distinctUntilChanged()
.sample(periodMillis = 1_000)
+ .drop(count = 1) // Skip initial state
.onEach { formValues ->
customCurrencyValidator.validateForm(
userWalletId = params.userWalletId,
@@ -151,6 +146,14 @@ internal class CustomTokenFormModel @Inject constructor(
}
}
+ private fun createCoin() = modelScope.launch {
+ customCurrencyValidator.createCoin(
+ userWalletId = params.userWalletId,
+ networkId = params.network.id,
+ derivationPath = getDerivationPath(),
+ )
+ }
+
private fun updateStateWithCurrency(
currency: CryptoCurrency,
fillForm: Boolean,
diff --git a/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/utils/CustomCurrencyValidator.kt b/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/utils/CustomCurrencyValidator.kt
index 685849ec59..d5ba7409da 100644
--- a/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/utils/CustomCurrencyValidator.kt
+++ b/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/utils/CustomCurrencyValidator.kt
@@ -75,9 +75,12 @@ internal class CustomCurrencyValidator @Inject constructor(
is AddCustomTokenForm.Validated.All -> {
findOrCreateCurrency(userWalletId, networkId, derivationPath, validatedForm)
}
- is AddCustomTokenForm.Validated.ContractAddress -> {
+ is AddCustomTokenForm.Validated.ContractAddressOnly -> {
findToken(userWalletId, networkId, derivationPath, validatedForm)
}
+ is AddCustomTokenForm.Validated.Empty -> {
+ createCoin(userWalletId, networkId, derivationPath)
+ }
}
}.saveInAndJoin(validateFormJobHolder)
}
@@ -132,7 +135,7 @@ internal class CustomCurrencyValidator @Inject constructor(
userWalletId: UserWalletId,
networkId: Network.ID,
derivationPath: Network.DerivationPath,
- validatedForm: AddCustomTokenForm.Validated.ContractAddress,
+ validatedForm: AddCustomTokenForm.Validated.ContractAddressOnly,
) {
updateStatus(Status.SearchingToken)
diff --git a/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/utils/ui/CustomCurrencyFormOperations.kt b/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/utils/ui/CustomCurrencyFormOperations.kt
index d99bb9473b..03c990ab76 100644
--- a/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/utils/ui/CustomCurrencyFormOperations.kt
+++ b/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/utils/ui/CustomCurrencyFormOperations.kt
@@ -94,9 +94,6 @@ internal fun CustomTokenFormUM.updateWithContractAddressException(
val updatedFields = fields.mutate {
it[Field.CONTRACT_ADDRESS] = it.getValue(Field.CONTRACT_ADDRESS).copy(
error = when (exception) {
- CustomTokenFormValidationException.ContractAddress.Empty -> {
- null // Should not display this error
- }
CustomTokenFormValidationException.ContractAddress.Invalid -> {
resourceReference(R.string.custom_token_creation_error_invalid_contract_address)
}
diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/approval/ShowApprovalBottomSheetTransformer.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/approval/ShowApprovalBottomSheetTransformer.kt
index 47745c4c89..ecfbc65c33 100644
--- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/approval/ShowApprovalBottomSheetTransformer.kt
+++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/approval/ShowApprovalBottomSheetTransformer.kt
@@ -72,6 +72,7 @@ internal class ShowApprovalBottomSheetTransformer(
formatArgs = wrappedList(cryptoCurrency.symbol),
),
dialogText = resourceReference(R.string.give_permission_staking_footer),
+ footerText = resourceReference(R.string.staking_give_permission_fee_footer),
onChangeApproveType = prevState.clickIntents::onApproveTypeChange,
),
onCancel = onDismiss,
diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/StateBuilder.kt b/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/StateBuilder.kt
index 96ae124966..1e509b2280 100644
--- a/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/StateBuilder.kt
+++ b/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/StateBuilder.kt
@@ -1190,6 +1190,7 @@ internal class StateBuilder(
formatArgs = wrappedList(providerName, permissionDataState.currency),
),
dialogText = resourceReference(R.string.swapping_approve_information_text),
+ footerText = resourceReference(R.string.swap_give_permission_fee_footer),
)
}
}
diff --git a/gradle/dependencies.toml b/gradle/dependencies.toml
index 87e70174f7..86575e6cfd 100644
--- a/gradle/dependencies.toml
+++ b/gradle/dependencies.toml
@@ -88,7 +88,7 @@ markdownComposeView = "0.5.4"
# endregion Other libraries
# region Tangem
-tangemBlockchainSdk = "release-app_5.17-830"
+tangemBlockchainSdk = "release-app_5.17-831"
#tangemBlockchainSdk = "0.0.1" # Keep it! - used for local builds
tangemCardSdk = "release-app_5.17-392"
#tangemCardSdk = "0.0.1" # Keep it! - used for local builds ^