diff --git a/core/res/src/main/res/values-fr/strings.xml b/core/res/src/main/res/values-fr/strings.xml
index 5d857cb793..075f05f465 100644
--- a/core/res/src/main/res/values-fr/strings.xml
+++ b/core/res/src/main/res/values-fr/strings.xml
@@ -1087,6 +1087,8 @@
de : %s
à : %s
validateur : %s
+ Les notifications sont activées, mais elles ne fonctionneront pas tant que vous n\'aurez pas autorisé les notifications dans les paramètres de votre appareil.
+ Notifications de transaction
Minimum %s
Le montant minimum pour effectuer cette transaction est %1$s.
Réessayez
diff --git a/core/res/src/main/res/values-ja/strings.xml b/core/res/src/main/res/values-ja/strings.xml
index 7af3b7a089..543d824195 100644
--- a/core/res/src/main/res/values-ja/strings.xml
+++ b/core/res/src/main/res/values-ja/strings.xml
@@ -61,6 +61,13 @@
システムのデフォルト
テーマ
アプリ設定
+ ウォレットを追加
+ ログインするウォレットを選択する
+ お帰りなさい!
+
+ - %d 枚のカード
+
+ スマートフォンウォレット
ウォレットのバックアップが正常に完了しました。
これらの単語は紛失した場合、復元できません。必ず安全な場所に保管してください。
バックアップが完了しました
@@ -846,6 +853,7 @@
%1$s 、 %2$s
宛先タグ
アドレスを入力
+ ENS名またはアドレスを入力
アドレスはウォレットアドレスと同じです
最低額は%sです
最小の変更は%sです
@@ -927,11 +935,15 @@
無効な金額
手数料が残高を超えています
合計金額が残高を超えています
+ トークンを変更してもよろしいですか? 変更後、以前のデータはリセットされます。
+ トークンの変更
スワップして送信
トークンを送信すれば、送信中に変換されます。受信者は必要なものをシームレスに受け取ります。
受信者は受け取ります
受信者に送信されます
受取金額
+ 変換をキャンセルしてもよろしいですか? 変更後、以前のデータはリセットされます。
+ キャンセルの確認
スワップして送信
取引が送信されました
設定したいカードまたはリングをスキャンするために準備してください。
diff --git a/core/res/src/main/res/values-ru/strings.xml b/core/res/src/main/res/values-ru/strings.xml
index 071f03c35f..71e9bf29d3 100644
--- a/core/res/src/main/res/values-ru/strings.xml
+++ b/core/res/src/main/res/values-ru/strings.xml
@@ -1105,6 +1105,8 @@
от: %s
на: %s
валидатор: %s
+ Уведомления включены, но не будут работать, пока вы не разрешите их в настройках устройства.
+ Уведомления о транзакциях
Минимум %s
Минимальная сумма транзакции равна %1$s.
Комиссии сети Tron для популярных токенов могут быть выше. Стейкинг TRX может помочь снизить расходы на транзакции.
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 fe103942ab..9b3e3dfe52 100644
--- a/core/res/src/main/res/values-uk-rUA/strings.xml
+++ b/core/res/src/main/res/values-uk-rUA/strings.xml
@@ -1105,6 +1105,8 @@
від: %s
до: %s
валідатор: %s
+ Сповіщення ввімкнені, але не працюватимуть, доки ви не дозволите їх у налаштуваннях пристрою.
+ Сповіщення про транзакції
Мінімум %s
Мінімальна сума транзакції становить %1$s.
Комісії мережі Tron для популярних токенів можуть бути вищими. Стейкінг TRX може допомогти знизити транзакційні витрати.
diff --git a/core/res/src/main/res/values/strings.xml b/core/res/src/main/res/values/strings.xml
index 2ee799d6f3..9afd794d7f 100644
--- a/core/res/src/main/res/values/strings.xml
+++ b/core/res/src/main/res/values/strings.xml
@@ -64,6 +64,10 @@
Add Wallet
Select a wallet to log in
Welcome back!
+
+ - %d card
+ - %d cards
+
Phone Wallet
You successfully backed up your wallet.
These words can’t be recovered if lost. Make sure to keep it somewhere secure.
@@ -426,6 +430,7 @@
To complete setup, back up your wallet and secure app access with a Access Code.
Finish Now
Finish Wallet Activation
+ To complete setup, secure app access with Access Code.
Recover an existing wallet stored in your Google Drive backup
Google Drive Backup
Go to backup
@@ -866,6 +871,7 @@
%1$s, %2$s
Destination Tag
Enter address
+ Enter ENS name or address
Address is the same as wallet address
Minimum amount is %s
Minimum change is %s
@@ -947,11 +953,15 @@
Invalid amount
Fee exceeds balance
Total amount exceeds balance
+ Are you sure you want to change the token? After changing, previous data will be reset.
+ Changing token
Swap and send
Send any token, and we’ll convert it on the way. Your recipient gets exactly what they need—seamlessly.
Recipient will receive
Will be sent a recipient
Amount to receive
+ Are you sure you want to cancel the conversion? After changing, previous data will be reset.
+ Confirm cancelation
Send with swap
Transaction sent
Prepare to scan card or ring you want to set up.
@@ -1497,6 +1507,8 @@
Transaction request
Transaction request
Unlimited Amount
+ Ensure that each pairing attempt uses a fresh and unique URI
+ URI already used
Wallet connect
Discard
You have an interrupted backup. Do you want to resume?
diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/components/AlertsComponentV2.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/components/AlertsComponentV2.kt
index 78ea021b35..db7a6f0f00 100644
--- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/components/AlertsComponentV2.kt
+++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/components/AlertsComponentV2.kt
@@ -12,6 +12,7 @@ internal class AlertsComponentV2(
) : AppComponentContext by appComponentContext, ComposableBottomSheetComponent {
override fun dismiss() {
+ messageUM.onDismissRequest()
router.pop()
}
diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/components/WcPairComponent.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/components/WcPairComponent.kt
index 675c063840..a171a0f38a 100644
--- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/components/WcPairComponent.kt
+++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/components/WcPairComponent.kt
@@ -115,8 +115,11 @@ internal class WcPairComponent(
is Alert.Type.Verified -> WcAlertsFactory.createVerifiedDomainAlert(alertType.appName)
is Alert.Type.UnknownDomain -> WcAlertsFactory.createUnknownDomainAlert(model::connectFromAlert)
is Alert.Type.UnsafeDomain -> WcAlertsFactory.createUnsafeDomainAlert(model::connectFromAlert)
- is Alert.Type.UnsupportedDApp -> WcAlertsFactory.createUnsupportedDomainAlert(alertType.appName)
- is Alert.Type.UnsupportedNetwork -> WcAlertsFactory.createUnsupportedChainAlert(alertType.appName)
+ is Alert.Type.UnsupportedDApp ->
+ WcAlertsFactory.createUnsupportedDomainAlert(alertType.appName, model::errorAlertOnDismiss)
+ is Alert.Type.UnsupportedNetwork ->
+ WcAlertsFactory.createUnsupportedChainAlert(alertType.appName, model::errorAlertOnDismiss)
+ is Alert.Type.UriAlreadyUsed -> WcAlertsFactory.createUriAlreadyUsedAlert(model::errorAlertOnDismiss)
}
}
diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/model/WcPairModel.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/model/WcPairModel.kt
index f92ac32008..c745515dc4 100644
--- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/model/WcPairModel.kt
+++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/model/WcPairModel.kt
@@ -149,6 +149,10 @@ internal class WcPairModel @Inject constructor(
connect()
}
+ fun errorAlertOnDismiss() {
+ router.pop()
+ }
+
private fun onConnect(securityStatus: CheckDAppResult) {
when (securityStatus) {
CheckDAppResult.SAFE -> connect()
@@ -193,16 +197,23 @@ internal class WcPairModel @Inject constructor(
}
private fun processError(error: WcPairError) {
- when (error) {
+ val alert = when (error) {
is WcPairError.UnsupportedDApp -> {
WcAppInfoRoutes.Alert.Type.UnsupportedDApp(error.appName)
}
is WcPairError.UnsupportedBlockchains -> {
WcAppInfoRoutes.Alert.Type.UnsupportedNetwork(error.appName)
}
- else -> null
- }?.let { stackNavigation.pushNew(WcAppInfoRoutes.Alert(it)) }
- ?: run { messageSender.send(ToastMessage(message = stringReference(error.message))) }
+ is WcPairError.UriAlreadyUsed -> {
+ WcAppInfoRoutes.Alert.Type.UriAlreadyUsed
+ }
+ else -> {
+ messageSender.send(ToastMessage(message = stringReference(error.message)))
+ router.pop()
+ null
+ }
+ }
+ alert?.let { stackNavigation.pushNew(WcAppInfoRoutes.Alert(it)) }
}
override fun onWalletSelected(userWalletId: UserWalletId) {
diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/routes/WcAppInfoRoutes.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/routes/WcAppInfoRoutes.kt
index 56215acac5..cf5b226353 100644
--- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/routes/WcAppInfoRoutes.kt
+++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/routes/WcAppInfoRoutes.kt
@@ -34,6 +34,7 @@ internal sealed class WcAppInfoRoutes : TangemBottomSheetConfigContent, Route {
data object UnsafeDomain : Type()
data class UnsupportedDApp(val appName: String) : Type()
data class UnsupportedNetwork(val appName: String) : Type()
+ data object UriAlreadyUsed : Type()
}
}
}
\ No newline at end of file
diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/utils/WcAlertsFactory.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/utils/WcAlertsFactory.kt
index 192c86c846..686b3ff2a7 100644
--- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/utils/WcAlertsFactory.kt
+++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/utils/WcAlertsFactory.kt
@@ -74,11 +74,11 @@ internal object WcAlertsFactory {
}
}
- fun createUnsupportedDomainAlert(appName: String): MessageBottomSheetUMV2 {
+ fun createUnsupportedDomainAlert(appName: String, onDismiss: () -> Unit): MessageBottomSheetUMV2 {
return messageBottomSheetUM {
infoBlock {
icon(R.drawable.ic_wallet_connect_24) {
- type = MessageBottomSheetUMV2.Icon.Type.Informative
+ type = Type.Informative
backgroundType = MessageBottomSheetUMV2.Icon.BackgroundType.SameAsTint
}
title = resourceReference(R.string.wc_alert_unsupported_dapps_title)
@@ -86,16 +86,34 @@ internal object WcAlertsFactory {
}
primaryButton {
text = resourceReference(R.string.common_got_it)
- onClick { closeBs() }
+ onClick { onDismiss() }
+ }
+ onDismissRequest = onDismiss
+ }
+ }
+
+ fun createUriAlreadyUsedAlert(onDismiss: () -> Unit): MessageBottomSheetUMV2 {
+ return messageBottomSheetUM {
+ infoBlock {
+ icon(R.drawable.ic_wallet_connect_24) {
+ type = Type.Informative
+ backgroundType = MessageBottomSheetUMV2.Icon.BackgroundType.SameAsTint
+ }
+ title = resourceReference(R.string.wc_uri_already_used_title)
+ body = resourceReference(R.string.wc_uri_already_used_description)
+ }
+ primaryButton {
+ text = resourceReference(R.string.common_got_it)
+ onClick { onDismiss() }
}
}
}
- fun createUnsupportedChainAlert(appName: String): MessageBottomSheetUMV2 {
+ fun createUnsupportedChainAlert(appName: String, onDismiss: () -> Unit): MessageBottomSheetUMV2 {
return messageBottomSheetUM {
infoBlock {
icon(R.drawable.ic_network_new_24) {
- type = MessageBottomSheetUMV2.Icon.Type.Informative
+ type = Type.Informative
backgroundType = MessageBottomSheetUMV2.Icon.BackgroundType.SameAsTint
}
title = resourceReference(R.string.wc_alert_unsupported_networks_title)
@@ -103,8 +121,9 @@ internal object WcAlertsFactory {
}
primaryButton {
text = resourceReference(R.string.common_got_it)
- onClick { closeBs() }
+ onClick { onDismiss() }
}
+ onDismissRequest = onDismiss
}
}
@@ -128,6 +147,7 @@ internal object WcAlertsFactory {
text = resourceReference(R.string.balance_hidden_got_it_button)
onClick { onDismiss() }
}
+ onDismissRequest = onDismiss
}
}