diff --git a/core/res/src/main/res/values-de/strings.xml b/core/res/src/main/res/values-de/strings.xml
index 8b478ee2f8..da19ef28cc 100644
--- a/core/res/src/main/res/values-de/strings.xml
+++ b/core/res/src/main/res/values-de/strings.xml
@@ -195,6 +195,7 @@
Der Server ist nicht verfügbar. Bitte versuche es später erneut.
Teilen
Link teilen
+ Weniger anzeigen
Mehr anzeigen
Signieren
Signieren und senden
@@ -298,23 +299,23 @@
Gekauft
Einkaufen
Einkaufen...
- Abgebrochen
- Bestätigt
- Bestätigen
- Wird bestätigt...
- Getauscht
- Tauschen läuft
- Austauschen...
- Fehlgeschlagen
- Pausiert
+ Transaktion abgebrochen
+ Anzahlung bestätigt
+ Warten auf Bestätigung
+ Warte auf Bestätigung...
+ Umtausch abgeschlossen
+ Warten auf Umtausch
+ Warte auf den Wechsel...
+ Umtausch fehlgeschlagen
+ Tausch pausiert
Einzahlung empfangen
- Einzahlung wird erwartet
+ Warten auf Einzahlung
Warten auf Einzahlung...
- Rückerstattet
- Rückerstattung
+ Rückerstattung abgeschlossen
+ Warten auf Rückerstattung
An dich gesendet
- wird an dich versendet...
- Gesendet
+ Betrag senden...
+ Gesendete Gelder
Daten stammen vom Anbieter. Der geschätzte Betrag kann sich aufgrund der Marktbedingungen ändern.
Status des Tausches
Verifizierung erforderlich
@@ -338,6 +339,7 @@
Diese Transaktion ausblenden
Sobald der Transaktionsstatus ausgeblendet ist, kann er nicht mehr angezeigt werden. Stattdessen kannst Du ihn durch einfaches Wischen schließen.
Diese Transaktion ausblenden
+ Tauschen mit
Keine Token gefunden. Bitte versuche eine andere Anfrage
ID: %s
Transaktions-ID kopiert
@@ -445,7 +447,7 @@
7T
Alle
Erfahrene Käufer
- Bewertung
+ Kapitalisierung
Sortieren nach
Top-Gewinner
Top-Verlierer
@@ -496,9 +498,9 @@
MarketCap
Der Gesamtmarktwert einer Kryptowährung, berechnet sich durch Multiplikation des aktuellen Preises des Coins mit der Gesamtzahl der im Umlauf befindlichen Coins
MarketCap
- Marktbewertung
+ Marktposition
Position im Krypto-Rating zwischen allen Coins basierend auf der Marktkapitalisierung
- Marktbewertung
+ Marktposition
Maximale Versorgung
Die maximale Anzahl von Coins oder Tokens, die jemals für eine bestimmte Kryptowährung existieren können
Maximale Versorgung
@@ -558,6 +560,7 @@
Nicht hinzugefügt
NFT senden
Eigenschaften
+ Unbetitelte Sammlung
%1$d NFTs in der %2$d Sammlung
Tippe hier, um das erste NFT zu erhalten
NFT-Sammlungen
@@ -858,7 +861,7 @@
Der Betrag der unstaked wird, wird aufgrund der Netzwerkregeln auf %1$s TRX gerundet.
Nicht gestakte beanspruche
Gebühr für das Staking-Konto
- Ein Staking-Konto ist ein spezielles Konto, auf dem eingesetzte SOL-Token gelagert werden. Es wird erstellt, wenn du deine Token an einen Validator delegierst, um an der Transaktionsvalidierung teilzunehmen und Belohnungen zu verdienen. Für die Erstellung des Staking-Kontos wird eine geringe Gebühr erhoben, die nach Abschluss des Stakings zurückgegeben wird.
+ Ein Staking-Konto ist ein spezielles Konto, auf dem eingesetzte SOL-Token gespeichert werden. Es wird erstellt, indem Sie Ihre Token an einen Validator delegieren, um an der Transaktionsvalidierung teilzunehmen und Belohnungen zu erhalten. Für die Einrichtung des Staking-Kontos wird eine geringe Gebühr erhoben, die nach Abschluss des Stakings zurückerstattet wird.
Jährliche prozentuale Rendite
Die jährliche prozentuale Rendite, die du durch die Teilnahme am Staking erzielen kannst.
Effektiver Jahreszins
@@ -867,7 +870,7 @@
Durchschnittliche Belohnungsquote
Was ist Staking?
%s geschätzter Profit
- Marktbewertung
+ Marktposition
Metriken
Gemäß den Netzwerkregeln %1$s sind Ansprüche ab %2$s möglich. Die unten aufgeführten Beträge werden Deinem Konto nach der Aufhebung des Stakings gutgeschrieben.
Mindestanforderungen
@@ -893,15 +896,15 @@
Beim Staking im Cardano-Netzwerk wird Dein gesamtes Guthaben verwendet. Weitere 2 ADA werden reserviert und nach dem Unstaking zurückgegeben. Deine ADA bleiben während des Stakings freigeschaltet.
Einzelheiten zum ADA-Staking
Verdiente Belohnungen werden an Deine Wallet gesendet und stehen Dir sofort zur Verfügung
- Stake sicher und verdienen Belohnungen
- Sicher staken und tägliche Belohnungen verdienen.
- Sicher staken und stündliche Belohnungen verdienen.
- Sicher staken und monatliche Belohnungen verdienen.
+ Tangem ermöglicht es Benutzern, ihre Kryptowährungen zu Staken
+ Tangem ermöglicht es Benutzern, ihre Kryptowährungen zu Staken
+ Tangem ermöglicht es Benutzern, ihre Kryptowährungen zu Staken
+ Tangem ermöglicht es Benutzern, ihre Kryptowährungen zu Staken
Mit dem Staking kannst Du %1$s verdienen. Deine Staking-Belohnungen erhältst Du jeden tag.
Mit dem Staking kannst Du %1$s verdienen. Deine Staking-Belohnungen erhältst Du jede Stunde.
Mit dem Staking kannst Du %1$s verdienen. Deine Staking-Belohnungen erhältst Du jeden Monat.
Mit dem Staking kannst Du %1$s verdienen. Deine Staking-Belohnungen erhältst Du jede Woche.
- Sicher staken und wöchentliche Belohnungen verdienen.
+ Tangem ermöglicht es Benutzern, ihre Kryptowährungen zu Staken
Verdiene Staking-Belohnungen
Dein verbleibender Stakingbetrag ist zu niedrig, um den Einsatz aufzuheben. Du musst mehr Staken, um den Mindestbetrag zum Aufheben des Einsatzes zu erreichen.
Niedriges Stakingguthaben
@@ -1037,7 +1040,7 @@
Du bist dabei, dieses Token vom Hauptbildschirm auszublenden. Du kannst es jederzeit über die Seite „Token verwalten“ wieder hinzufügen.
Blende %s aus
Token ausblenden
- Durch das Staking kannst du alle %2$s Tage %1$s verdienen und Belohnungen erhalten
+ Durch Staking kannst Du %1$s erhalten und alle %2$s Tage Belohnungen bekommen.
Staking-Dienst
%1$s Token in %%image%% %2$s Netzwerk
Token in %%image%% %1$s Netzwerk
@@ -1158,6 +1161,8 @@
Jetzt mit 10 % Rabatt kaufen
Greife auf 13.000+ Kryptowährungen zu. Kaufe, verkaufe, tausche und stake Sie mit einem einzigen Fingertipp.\nVerbinde bis zu drei Karten für ein Backup.
Entdecke die Tangem Wallet
+ Bleib stets über eingehende Wallet-Transaktionen und Tangem-Updates auf dem Laufenden.
+ Push-Benachrichtigungen
Wallet-Einstellungen
Tangem
Verwende %s oder scanne eine Karte oder Ring, um den Zugriff auf deine Wallet freizuschalten.
@@ -1185,7 +1190,7 @@
Die Genehmigung des Swaps ist im Gange und wird in Kürze abgeschlossen sein.
Genehmigung in Arbeit
Der Mindestbetrag für den Tausch beträgt %1$s. Bitte stelle sicher, dass der Restsaldo nach dem Swap nicht unter %2$s liegt.
- Du hast keine %s Coins in deiner Liste
+ Du hast keine %s austauschbaren Coins in Deiner Liste
Keine Token zum Tauschen verfügbar
Um eine Transaktion durchzuführen, du etwas etwas einzahlen %1$s %2$s
Die Gebühr %s kann nicht gedeckt werden
@@ -1260,6 +1265,7 @@
Verifizierte Domain
Falsche Karte oder falscher Ring in der App ausgewählt
Wir haben eine Art Problem
+ Erlaubnis auszugeben
Vertragsadresse
Verbinden
Netzwerk
@@ -1275,9 +1281,12 @@
Verbindungen
Inhalt
Daten kopieren
+ Benutzerdefinierter Freibetrag
Alle trennen
Text über die Trennung aller dApps
Alle dApps trennen
+ Geschätzte Wallet-Änderungen
+ Böswillige/ gefährliche Transaktion
Füge Deinem Profil für dieses Wallet das Netzwerk %s hinzu
Die Wallet verfügt über keine erforderlichen Netzwerke
Neue Verbindung
@@ -1290,6 +1299,7 @@
An
Transaktionsanfrage
Transaktionsanfrage
+ Unbegrenzte Menge
Wallet verbinden
Verwerfen
Du hast eine unterbrochene Sicherung. Möchtest du diese fortsetzen?
diff --git a/core/res/src/main/res/values-ja/strings.xml b/core/res/src/main/res/values-ja/strings.xml
index 26dd14488e..4f04c1933f 100644
--- a/core/res/src/main/res/values-ja/strings.xml
+++ b/core/res/src/main/res/values-ja/strings.xml
@@ -1146,6 +1146,8 @@
今すぐ10 % オフで購入
1.3万種類以上の暗号資産にアクセス。ワンタップで買付、売却、スワップ、ステーキングが可能です。\nバックアップ用に最大3枚のカードを連携できます。
Tangemウォレットを見る
+ ウォレットの受信取引とTangemの更新について通知を受け取る。
+ プッシュ通知
ウォレット設定
Tangem
%sを使用するか、カード / リングをスキャンしてウォレットにアクセスしてください
diff --git a/core/res/src/main/res/values/strings.xml b/core/res/src/main/res/values/strings.xml
index 51d8a3384e..b9c01568f4 100644
--- a/core/res/src/main/res/values/strings.xml
+++ b/core/res/src/main/res/values/strings.xml
@@ -1304,6 +1304,8 @@
WalletConnect session was disconnected
Error code: %s. If the problem persists — feel free to contact our support.
We\'ve encountered unknown error
+ Error code: 8 005. If the problem persists — feel free to contact our support.
+ We\'ve encountered unknown error
Tangem does not currently support a required network by %s.
Unsuported networks
Tangem support a required network by %s.
diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/components/AlertsComponent.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/components/AlertsComponent.kt
index 5ba2668002..c4c0032fa8 100644
--- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/components/AlertsComponent.kt
+++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/components/AlertsComponent.kt
@@ -2,24 +2,21 @@ package com.tangem.features.walletconnect.connections.components
import androidx.compose.runtime.Composable
import androidx.compose.runtime.Immutable
+import androidx.compose.ui.Modifier
import com.tangem.core.decompose.context.AppComponentContext
import com.tangem.core.ui.components.bottomsheets.TangemBottomSheetConfig
import com.tangem.core.ui.components.bottomsheets.TangemBottomSheetConfigContent
-import com.tangem.core.ui.decompose.ComposableBottomSheetComponent
+import com.tangem.core.ui.decompose.ComposableContentComponent
import com.tangem.features.walletconnect.connections.ui.AlertsModalBottomSheet
import kotlinx.serialization.Serializable
internal class AlertsComponent(
appComponentContext: AppComponentContext,
private val params: Params,
-) : AppComponentContext by appComponentContext, ComposableBottomSheetComponent {
-
- override fun dismiss() {
- params.alertType.onDismiss()
- }
+) : AppComponentContext by appComponentContext, ComposableContentComponent {
@Composable
- override fun BottomSheet() {
+ override fun Content(modifier: Modifier) {
AlertsModalBottomSheet(
config = TangemBottomSheetConfig(
isShown = true,
@@ -48,6 +45,9 @@ internal class AlertsComponent(
@Serializable
data class UnsupportedNetworks(val appName: String, override val onDismiss: () -> Unit) : AlertType()
+ @Serializable
+ data class UnsupportedMethod(override val onDismiss: () -> Unit) : AlertType()
+
@Serializable
data class WcDisconnected(override val onDismiss: () -> Unit) : AlertType()
diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/routing/DefaultWcRoutingComponent.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/routing/DefaultWcRoutingComponent.kt
index 45ccb328ab..c64c2b892d 100644
--- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/routing/DefaultWcRoutingComponent.kt
+++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/routing/DefaultWcRoutingComponent.kt
@@ -15,6 +15,7 @@ import com.tangem.core.decompose.context.childByContext
import com.tangem.core.decompose.model.getOrCreateModel
import com.tangem.core.ui.decompose.ComposableContentComponent
import com.tangem.features.walletconnect.components.WcRoutingComponent
+import com.tangem.features.walletconnect.connections.components.AlertsComponent
import com.tangem.features.walletconnect.connections.components.WcAppInfoContainerComponent
import com.tangem.features.walletconnect.transaction.components.WcSignTransactionContainerComponent
import dagger.assisted.Assisted
@@ -67,6 +68,12 @@ internal class DefaultWcRoutingComponent @AssistedInject constructor(
source = config.request.source,
),
)
+ is WcInnerRoute.Alert -> AlertsComponent(
+ childContext,
+ AlertsComponent.Params(
+ alertType = config.alertType,
+ ),
+ )
}
}
diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/routing/WcInnerRoute.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/routing/WcInnerRoute.kt
index eae62e34c4..4c4c8cce4d 100644
--- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/routing/WcInnerRoute.kt
+++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/routing/WcInnerRoute.kt
@@ -3,6 +3,7 @@ package com.tangem.features.walletconnect.connections.routing
import com.tangem.core.decompose.navigation.Route
import com.tangem.domain.walletconnect.model.WcPairRequest
import com.tangem.domain.walletconnect.model.sdkcopy.WcSdkSessionRequest
+import com.tangem.features.walletconnect.connections.components.AlertsComponent
import kotlinx.serialization.Serializable
@Serializable
@@ -18,4 +19,7 @@ internal sealed interface WcInnerRoute : Route {
@Serializable
data class Pair(val request: WcPairRequest) : WcInnerRoute
+
+ @Serializable
+ data class Alert(val alertType: AlertsComponent.AlertType) : WcInnerRoute
}
\ No newline at end of file
diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/routing/WcRoutingModel.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/routing/WcRoutingModel.kt
index 99eaa067eb..05350f69ad 100644
--- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/routing/WcRoutingModel.kt
+++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/routing/WcRoutingModel.kt
@@ -11,6 +11,7 @@ import com.tangem.domain.walletconnect.model.WcEthMethodName
import com.tangem.domain.walletconnect.model.WcMethodName
import com.tangem.domain.walletconnect.model.WcSolanaMethodName
import com.tangem.features.walletconnect.components.WalletConnectFeatureToggles
+import com.tangem.features.walletconnect.connections.components.AlertsComponent
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
import kotlinx.coroutines.flow.*
import javax.inject.Inject
@@ -49,12 +50,15 @@ internal class WcRoutingModel @Inject constructor(
WcEthMethodName.SignTypeDataV4,
WcSolanaMethodName.SignMessage,
-> WcInnerRoute.SignMessage(rawRequest)
- WcEthMethodName.SignTransaction -> TODO()
- WcEthMethodName.SendTransaction -> TODO()
- WcSolanaMethodName.SignTransaction -> TODO()
- WcSolanaMethodName.SendAllTransaction -> TODO()
- WcEthMethodName.AddEthereumChain -> TODO()
- is WcMethodName.Unsupported -> TODO()
+ WcEthMethodName.SignTransaction,
+ WcEthMethodName.SendTransaction,
+ WcSolanaMethodName.SignTransaction,
+ WcSolanaMethodName.SendAllTransaction,
+ WcEthMethodName.AddEthereumChain,
+ is WcMethodName.Unsupported,
+ -> WcInnerRoute.Alert(
+ alertType = AlertsComponent.AlertType.UnsupportedMethod { innerRouter.pop() },
+ )
}
}
diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/ui/AlertsModalBottomSheet.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/ui/AlertsModalBottomSheet.kt
index ae14e28008..ef033fa61e 100644
--- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/ui/AlertsModalBottomSheet.kt
+++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/ui/AlertsModalBottomSheet.kt
@@ -146,6 +146,7 @@ private fun ButtonsContainer(alert: AlertsComponent.AlertType, modifier: Modifie
}
is AlertsComponent.AlertType.WrongCardSelected,
is AlertsComponent.AlertType.UnknownError,
+ is AlertsComponent.AlertType.UnsupportedMethod,
-> SecondaryButton(
modifier = buttonsModifier,
onClick = alert.onDismiss,
@@ -173,6 +174,7 @@ private fun AlertIcon(alert: AlertsComponent.AlertType, modifier: Modifier = Mod
is AlertsComponent.AlertType.WrongCardSelected,
is AlertsComponent.AlertType.UnknownDomain,
is AlertsComponent.AlertType.UnknownError,
+ is AlertsComponent.AlertType.UnsupportedMethod,
-> TangemTheme.colors.icon.attention
is AlertsComponent.AlertType.MaliciousTransaction,
is AlertsComponent.AlertType.UnsafeDomain,
@@ -190,6 +192,7 @@ private fun AlertIcon(alert: AlertsComponent.AlertType, modifier: Modifier = Mod
is AlertsComponent.AlertType.UnsupportedNetworks -> R.drawable.ic_network_new_24
is AlertsComponent.AlertType.WrongCardSelected,
is AlertsComponent.AlertType.UnknownError,
+ is AlertsComponent.AlertType.UnsupportedMethod,
-> R.drawable.img_attention_20
is AlertsComponent.AlertType.VerifiedDomain -> R.drawable.img_approvale2_20
}
@@ -204,6 +207,7 @@ private fun AlertIcon(alert: AlertsComponent.AlertType, modifier: Modifier = Mod
is AlertsComponent.AlertType.VerifiedDomain,
is AlertsComponent.AlertType.UnknownError,
is AlertsComponent.AlertType.WrongCardSelected,
+ is AlertsComponent.AlertType.UnsupportedMethod,
-> Color.Unspecified
}
Box(
@@ -236,6 +240,7 @@ private fun AlertContentTitle(alert: AlertsComponent.AlertType, modifier: Modifi
is AlertsComponent.AlertType.VerifiedDomain -> R.string.wc_alert_verified_domain_title
is AlertsComponent.AlertType.WcDisconnected -> R.string.wc_alert_session_disconnected_title
is AlertsComponent.AlertType.WrongCardSelected -> R.string.wc_alert_wrong_card_title
+ is AlertsComponent.AlertType.UnsupportedMethod -> R.string.wc_alert_unsupported_method_title
}
Text(
modifier = modifier,
@@ -272,6 +277,9 @@ private fun AlertContentDescription(alert: AlertsComponent.AlertType, modifier:
R.string.wc_alert_session_disconnected_description,
)
is AlertsComponent.AlertType.WrongCardSelected -> stringResourceSafe(R.string.wc_alert_wrong_card_description)
+ is AlertsComponent.AlertType.UnsupportedMethod -> stringResourceSafe(
+ R.string.wc_alert_unsupported_method_description,
+ )
}
Text(
modifier = modifier,
@@ -315,6 +323,7 @@ private fun AlertAudit(alert: AlertsComponent.AlertType, modifier: Modifier = Mo
is AlertsComponent.AlertType.VerifiedDomain,
is AlertsComponent.AlertType.WcDisconnected,
is AlertsComponent.AlertType.WrongCardSelected,
+ is AlertsComponent.AlertType.UnsupportedMethod,
-> Unit
}
}
@@ -351,5 +360,6 @@ private class AlertTypesProvider : CollectionPreviewParameterProvider