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 } }