Updated on 2026-08-14

This commit is contained in:
Tangem 2025-07-09 13:32:34 +04:00
parent 535bb9b8c3
commit e225af5b30
15 changed files with 343 additions and 69 deletions

View file

@ -8,7 +8,7 @@ import com.reown.android.relay.ConnectionType
import com.reown.walletkit.client.Wallet
import com.reown.walletkit.client.WalletKit
import com.tangem.core.analytics.api.AnalyticsEventHandler
import com.tangem.data.walletconnect.pair.unsupportedDApps
import com.tangem.data.walletconnect.pair.UnsupportedDApps
import com.tangem.domain.walletconnect.WcPairService
import com.tangem.domain.walletconnect.model.WcPairRequest
import com.tangem.domain.walletconnect.model.legacy.Account
@ -216,7 +216,7 @@ internal class DefaultLegacyWalletConnectRepository(
Timber.i("sessionProposal: $sessionProposal")
this@DefaultLegacyWalletConnectRepository.sessionProposal = sessionProposal
if (sessionProposal.name in unsupportedDApps) {
if (sessionProposal.name in UnsupportedDApps.list) {
Timber.i("Unsupported DApp")
scope.launch {
_events.emit(

View file

@ -1,5 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<string name="access_code_alert_skip_description">Ohne Zugangscode ist Deine Wallet nicht geschützt.</string>
<string name="access_code_alert_skip_ok">Trotzdem überspringen</string>
<string name="access_code_alert_skip_title">Zugangscode nicht festgelegt</string>
<string name="access_code_check_title">Zugangscode eingeben</string>
<string name="access_code_confirm_description">Bestätige Deinen zuvor eingegebenen Code, um fortzufahren</string>
<string name="access_code_confirm_title">Zugangscode erneut eingeben</string>
<string name="access_code_create_description">Lege einen %s -stelligen Zugangscode fest, um Deine Wallet zu entsperren.</string>
<string name="access_code_create_title">Zugangscode erstellen</string>
<string name="access_code_navtitle">Zugangscode</string>
<string name="action_buttons_buy_empty_search_message">Du kannst Deinen Token nicht finden? Gehe zum Bereich „Markt“ auf der Hauptseite und fügen diesen zum kaufen im Portfolio hinzu.</string>
<string name="action_buttons_sell_empty_search_message">Du kannst Deinen Token nicht finden? Gehe zum Bereich „Markt“ auf der Hauptseite und fügen diesen zum verkaufen im Portfolio hinzu.</string>
<string name="action_buttons_sell_navigation_bar_title">Verkaufen</string>
@ -49,6 +58,19 @@
<string name="app_settings_theme_mode_system">Systemstandard</string>
<string name="app_settings_theme_selector_title">Thema</string>
<string name="app_settings_title">App Einstellungen</string>
<string name="backup_complete_description">Du hast Deine Wallet erfolgreich gesichert.</string>
<string name="backup_complete_seed_description">Diese Wörter können bei Verlust nicht wiederhergestellt werden. Bewahre diese an einem sicheren Ort auf.</string>
<string name="backup_complete_title">Sicherung abgeschlossen</string>
<string name="backup_info_description">Deine geheime Wiederherstellungsphrase ist ein fester Satz von %s Zufällige Wörter, die für den Zugriff auf und die Wiederherstellung Deiner Wallet verwendet werden.</string>
<string name="backup_info_keep_description">Diese Wörter können bei Verlust nicht wiederhergestellt werden. Bewahre diese an einem sicheren Ort auf.</string>
<string name="backup_info_keep_title">Sicher aufbewahren</string>
<string name="backup_info_save_description">Bewahre diese %s Wörter an einem sicheren Ort auf , z. B. in einem Passwort-Manager, und teile diese niemals mit Dritten.</string>
<string name="backup_info_save_title">Keine Wiederherstellung möglich</string>
<string name="backup_info_title">Wiederherstellungsphrase</string>
<string name="backup_seed_caution">Gebe diese Wörter niemals weiter. Jeder, der sie erfährt, kann Deine gesamten Kryptowährungen stehlen. Tangem wird Dich niemals danach fragen. Die folgenden %s Wörter sind die Wiederherstellungsphrase Deiner Wallets. Mit dieser Phrase kannst Du Deine Wallet wiederherstellen, falls Du Dein Gerät verlierst.</string>
<string name="backup_seed_description">Schreibe diese %s Wörter der Reihe nach auf und bewahre sie sicher und vertraulich auf</string>
<string name="backup_seed_responsibility">Die volle Verantwortung für die Sicherheit und Sicherung der Wallet und der Wiederherstellungsphrase liegt beim Benutzer, nicht bei Tangem.</string>
<string name="backup_seed_title">Wiederherstellungsphrase</string>
<string name="balance_hidden_description">Um deine Kontostände ein- oder auszublenden, flippe einfach das Display deines Geräts nach unten, oder schalte es in den Einstellungen aus.</string>
<string name="balance_hidden_do_not_show_button">Nicht mehr anzeigen</string>
<string name="balance_hidden_got_it_button">Verstanden</string>
@ -103,6 +125,7 @@
<string name="common_approval">Genehmigung</string>
<string name="common_approve">Genehmigen</string>
<string name="common_attention">Achtung</string>
<string name="common_backup">Sicherungskopie</string>
<string name="common_balance">Bilanz: %s</string>
<string name="common_balance_title">Saldo</string>
<string name="common_biometric_authentication">biometrische Authentifizierung</string>
@ -119,10 +142,12 @@
<string name="common_claim">Beanspruchen</string>
<string name="common_claim_rewards">Stakingbelohnungen beanspruchen</string>
<string name="common_close">Schließen</string>
<string name="common_coming_soon">Demnächst verfügbar</string>
<string name="common_confirm">Bestätigen</string>
<string name="common_contact_tangem_support">Kontakt zum Tangem-Support</string>
<string name="common_contact_visa_support">Kontakt zum Visa-Support</string>
<string name="common_continue">Weiter</string>
<string name="common_convert">Umwandeln</string>
<string name="common_copy">Kopieren</string>
<string name="common_copy_address">Adresse kopieren</string>
<string name="common_create">Erstellen</string>
@ -154,6 +179,7 @@
<string name="common_fee_selector_option_slow">Langsam</string>
<string name="common_fee_selector_title">Gebühren</string>
<string name="common_finish">Beenden</string>
<string name="common_free">Kostenlos</string>
<string name="common_generate_addresses">Adressen synchronisieren</string>
<string name="common_go_to_provider">Zum Anbieter gehen</string>
<string name="common_go_to_token">Zum Token</string>
@ -206,6 +232,7 @@
<string name="common_show_more">Mehr anzeigen</string>
<string name="common_sign">Signieren</string>
<string name="common_sign_and_send">Signieren und senden</string>
<string name="common_skip">Überspringen</string>
<string name="common_stake">Staken</string>
<string name="common_staking">Staking</string>
<string name="common_start">Start</string>
@ -226,6 +253,7 @@
<string name="common_unreachable">Nicht erreichbar</string>
<string name="common_unstake">Staking beenden</string>
<string name="common_utxo_validate_withdrawal_message_warning">Aufgrund der Beschränkungen von %1$s können nur %2$d UTXOs in eine einzige Transaktion passen. Das bedeutet, dass du nur %3$s oder weniger senden kannst. Du musst den Betrag reduzieren.</string>
<string name="common_value_copied">Wert kopiert</string>
<string name="common_week">woche</string>
<string name="common_with">mit</string>
<string name="common_yes">Ja</string>
@ -308,7 +336,7 @@
<string name="express_exchange_notification_verification_title">KYC-Überprüfung durch den Anbieter erforderlich</string>
<string name="express_exchange_status_bought">Gekauft</string>
<string name="express_exchange_status_buying">Einkaufen</string>
<string name="express_exchange_status_buying_active">Einkaufen...</string>
<string name="express_exchange_status_buying_active">Warten auf Kauf...</string>
<string name="express_exchange_status_canceled">Transaktion abgebrochen</string>
<string name="express_exchange_status_confirmed">Anzahlung bestätigt</string>
<string name="express_exchange_status_confirming">Warten auf Bestätigung</string>
@ -386,6 +414,23 @@
<string name="home_button_scan">Karte oder Ring scannen</string>
<string name="hot_crypto_add_token_subtitle">An %s</string>
<string name="hot_crypto_token_network">Im %s Netzwerk</string>
<string name="hw_activation_need_backup">Jetzt sichern</string>
<string name="hw_activation_need_description">Um die Einrichtung abzuschließen, sicher Deine Wallet und sicher den App-Zugriff mit einem Access Code.</string>
<string name="hw_activation_need_finish">Jetzt beenden</string>
<string name="hw_activation_need_title">Wallet-Aktivierung abschließen</string>
<string name="hw_backup_icloud_description">Stelle eine vorhandene Wallet wieder her, die in Deinem iCloud-Backup gespeichert ist</string>
<string name="hw_backup_icloud_title">iCloud-Sicherung</string>
<string name="hw_backup_need_action">Gehe zum Backup</string>
<string name="hw_backup_need_description">Um Deine Wallet mit einem Zugangscode zu sichern, führe zuerst die Sicherung durch.</string>
<string name="hw_backup_need_title">Sicherung zuerst beenden</string>
<string name="hw_backup_no_backup">Kein Backup</string>
<string name="hw_backup_seed_description">Physische Karten, die Deine Kryptowährung sicher offline speichern.</string>
<string name="hw_backup_seed_title">Wiederherstellungs-Phrase</string>
<string name="hw_create_keys_description">Über eingehende Transaktionen benachrichtigt werden</string>
<string name="hw_create_keys_title">Schlüssel werden in der App gespeichert</string>
<string name="hw_create_seed_description">Bleibe über die neuesten Funktionen und Neuigkeiten auf dem Laufenden</string>
<string name="hw_create_seed_title">Sicherung der Seed-Phrase</string>
<string name="hw_create_title">Mobile Wallet erstellen</string>
<string name="information_generated_with_ai">Diese Informationen wurden mithilfe von KI generiert.\nTippe hier, wenn Du Fehler finden.</string>
<string name="initial_message_change_access_code_body">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.</string>
<string name="initial_message_change_passcode_body">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.</string>
@ -631,6 +676,7 @@
<string name="onboarding_create_wallet_options_title">Schlüssel anonym generieren</string>
<string name="onboarding_done_body">Deine Karte oder Ring ist aktiviert und einsatzbereit</string>
<string name="onboarding_done_header">Erfolgreich!</string>
<string name="onboarding_done_wallet">Deine Wallet ist eingerichtet und einsatzbereit!</string>
<string name="onboarding_exit_alert_message">In diesem Fall musst du ganz von vorne anfangen.</string>
<string name="onboarding_exit_alert_title">Möchtest du den Aktivierungsprozess abbrechen?</string>
<string name="onboarding_getting_started">Erste Schritte</string>
@ -797,7 +843,9 @@
<string name="send_alert_fee_too_low_text">Du hast eine Kommission angegeben, die unter dem empfohlenen Betrag liegt, was zu einer Verzögerung Ihrer Transaktion führen könnte. Weiter?</string>
<string name="send_alert_transaction_failed_text">Grund: %1$s\nCode: %2$s</string>
<string name="send_alert_transaction_failed_title">Die Transaktion ist nicht abgeschlossen</string>
<string name="send_amount_convert_to_another_token">In ein anderes Token umwandeln</string>
<string name="send_amount_label">Betrag</string>
<string name="send_amount_receive_token_subtitle">Wird an den Empfänger gesendet</string>
<string name="send_bitcoin_custom_fee_footer">Du kannst deine Transaktionsgebühr festlegen, indem du den Wert im Feld Satoshi pro vByte anpasst.</string>
<string name="send_custom_amount_fee_footer">Die Gebühr, die für deine Transaktion erhoben wird. Du kannst einen eigenen Wert festlegen.</string>
<string name="send_custom_evm_max_fee">Maximale Gebühr</string>
@ -843,6 +891,7 @@
<string name="send_notification_fee_too_high_title">Die individuelle Gebühr ist hoch</string>
<string name="send_notification_high_fee_text">Aufgrund der Besonderheiten des Netzes %1$s ist die Gebühr für die Überweisung des gesamten Guthabens höher. Um die Kommission zu reduzieren, Kannst du %2$s verlassen.</string>
<string name="send_notification_high_fee_title">Die Gebühr ist höher</string>
<string name="send_notification_invalid_amount_rent_destination">Das Empfängerkonto ist nicht aktiviert. Der Mindestbetrag der Übertragung muss gleich oder höher sein als der mietfreie Restbetrag: %1$s.</string>
<string name="send_notification_invalid_amount_rent_fee">Dein Kontostand darf nicht niedriger sein als die Miete. Bitte halte mindestens %1$s auf Deinem Konto oder ziehe den gesamten Betrag ab.</string>
<string name="send_notification_invalid_amount_text">Die enthaltene Kommission übersteigt den Überweisungsbetrag, was zu einem negativen Wert führt</string>
<string name="send_notification_invalid_amount_title">Ungültige Menge</string>
@ -861,7 +910,7 @@
<string name="send_recent_transactions">Jüngste</string>
<string name="send_recipient">Empfänger</string>
<string name="send_recipient_address_error">Keine gültige Adresse</string>
<string name="send_recipient_address_footer">Vergewisser dich, dass die empfangende Wallet-Adresse im %s Netzwerk ist, damit du deine Token nicht verlierst.</string>
<string name="send_recipient_address_footer">Stelle sicher, dass sich die empfangende Wallet-Adresse im ** %s -Netzwerk** befindet, um den Verlust Deiner Token zu vermeiden.</string>
<string name="send_recipient_address_footer_highlighted_part">senden an %s</string>
<string name="send_recipient_address_footer_v2">Stelle sicher, dass Du %s Netzwerkadresse hast, da Fehler zu verlorenen Übertragungen führen können</string>
<string name="send_recipient_label">Senden an</string>
@ -889,8 +938,10 @@
<string name="send_validation_invalid_amount">Ungültiger Betrag</string>
<string name="send_validation_invalid_fee">Die Gebühr geht über die Bilanz hinaus</string>
<string name="send_validation_invalid_total">Der Gesamtbetrag geht über die Bilanz hinaus</string>
<string name="send_with_swap_confirm_title">Tauschen und senden</string>
<string name="send_with_swap_notification_text">Sende uns ein Token, und wir konvertieren es unterwegs. Dein Empfänger erhält genau das, was er braucht nahtlos.</string>
<string name="send_with_swap_recipient_amount_text">Wird an den Empfänger gesendet</string>
<string name="send_with_swap_recipient_amount_title">Zu erhaltender Betrag</string>
<string name="send_with_swap_title">Senden mit Swap</string>
<string name="sent_transaction_sent_title">Transaktion gesendet</string>
<string name="settings_card_settings_footer">Bereite das Scannen der Karte oder Ring vor, die du einrichten möchtest.</string>
@ -1046,6 +1097,7 @@
<string name="swap_story_second_title">Unschlagbare Preise</string>
<string name="swap_story_third_subtitle">Problemlos und intuitiv, sodass Deine Token mit nur wenigen Handgriffen getauscht werden können</string>
<string name="swap_story_third_title">Einfach bequem</string>
<string name="swap_via_provider">Tausch über Anbieter</string>
<string name="swapping_alert_cex_description">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.</string>
<string name="swapping_alert_cex_description_with_slippage">Der Betrag beinhaltet:\n• Honorar des Dienstleisters\n• Netzwerkgebühr für das Senden %1$s von der Börse zurück an die Adresse des Benutzers. \n\n Provider-Slippage kann bis zu %2$s</string>
<string name="swapping_alert_dex_description">Der Betrag enthält die Gebühren des Dienstleisters.</string>
@ -1153,6 +1205,7 @@
<string name="visa_onboarding_in_progress_description">Das wird nicht lange dauern. Wir richten gerade Dein Konto ein.</string>
<string name="visa_onboarding_in_progress_issuer_description">Das wird nicht lange dauern. Wir schließen die Aktivierung ab.</string>
<string name="visa_onboarding_in_progress_title">Alles wird vorbereitet!</string>
<string name="visa_onboarding_pin_code_title">PIN-Code erstellen</string>
<string name="visa_onboarding_pin_not_accepted">PIN wurde nicht akzeptiert. Versuche es erneut oder verwende einen anderen Code.</string>
<string name="visa_onboarding_pin_validation_error_message">Ungültige PIN: Sequenzen oder Wiederholungen vermeiden</string>
<string name="visa_onboarding_success_screen_description">Schon kann es losgehen!</string>
@ -1201,6 +1254,29 @@
<string name="wallet_connect_subtitle">Mit dApps verbinden</string>
<string name="wallet_connect_title">WalletConnect</string>
<string name="wallet_connect_toast_awaiting_session_proposal">Das Herstellen der Verbindung kann einige Sekunden dauern</string>
<string name="wallet_create_hardware_badge">Von %s</string>
<string name="wallet_create_hardware_description">Kaufe eine Tangem Wallet physische Karten, die Deine Kryptowährungen sicher offline speichern.</string>
<string name="wallet_create_hardware_title">Hardware-Wallet</string>
<string name="wallet_create_mobile_description">Eine sichere Wallet wird in Sekundenschnelle auf Deinem Telefon erstellt.</string>
<string name="wallet_create_mobile_title">Mobile Wallet</string>
<string name="wallet_create_nav_info_title">Was soll ich wählen?</string>
<string name="wallet_create_scan_question">Besitzt Du bereits eine Tangem Wallet?</string>
<string name="wallet_create_scan_title">Jetzt scannen</string>
<string name="wallet_create_title">Wähle, wie Du Deine Wallet erstellen möchten</string>
<string name="wallet_import_buy_question">Möchtest Du eine Tangem-Wallet kaufen?</string>
<string name="wallet_import_buy_title">Jetzt kaufen</string>
<string name="wallet_import_google_drive_description">Eine vorhandene Wallet wiederherstellen, die Deinem Google Drive-Backup gespeichert ist</string>
<string name="wallet_import_google_drive_title">Importieren aus Google Drive</string>
<string name="wallet_import_navtitle">Vorhandenes Wallet hinzufügen</string>
<string name="wallet_import_scan_description">Physische Karten, die Deine Kryptowährung sicher offline speichern.</string>
<string name="wallet_import_scan_title">Scanne eine Tangem-Wallet</string>
<string name="wallet_import_seed_description">Deine Seed-Phrase, um Deine Wallet wiederherzustellen</string>
<string name="wallet_import_seed_navtitle">Wallet importieren</string>
<string name="wallet_import_seed_title">Importieren einer Wiederherstellungsphrase</string>
<string name="wallet_import_success_description">Du hast Deine Wallet erfolgreich gesichert.</string>
<string name="wallet_import_success_navtitle">Wallet importieren</string>
<string name="wallet_import_success_title">Import abgeschlossen</string>
<string name="wallet_import_title">Wallet importieren</string>
<string name="wallet_marketplace_block_title">%s Marktpreis</string>
<string name="wallet_marketprice_block_update_time">letzte 24h</string>
<string name="wallet_network_group_title">%s Netzwerk</string>
@ -1209,6 +1285,8 @@
<string name="wallet_promo_banner_button_title">Jetzt mit 10 % Rabatt kaufen</string>
<string name="wallet_promo_banner_description">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.</string>
<string name="wallet_promo_banner_title">Entdecke die Tangem Wallet</string>
<string name="wallet_settings_access_code_description">Geheimcode zum Schutz dieser Wallet. Wird für Anmeldung und Signaturen verwendet.</string>
<string name="wallet_settings_access_code_title">Zugangscode festlegen/ändern</string>
<string name="wallet_settings_push_notifications_description">Bleib stets über eingehende Wallet-Transaktionen und Tangem-Updates auf dem Laufenden.</string>
<string name="wallet_settings_push_notifications_title">Transaktionsbenachrichtigungen</string>
<string name="wallet_settings_title">Wallet-Einstellungen</string>
@ -1298,13 +1376,15 @@
<string name="warning_some_networks_unreachable_message">Wischen Sie nach unten, um zu aktualisieren, oder versuchen Sie es später erneut.</string>
<string name="warning_some_networks_unreachable_title">Einige Netzwerke sind nicht erreichbar</string>
<string name="warning_some_token_balances_not_updated">Einige Token-Guthaben konnten nicht aktualisiert werden</string>
<string name="warning_stellar_token_trustline_not_enough_xlm">Nicht genug %s. Lade Dein XLM-Konto auf, um dieses Token zu verknüpfen</string>
<string name="warning_testnet_card_message">Dies ist eine Testnet-Karte. Sie kann keine Transaktionen verarbeiten und sollte nur zu Test- und Entwicklungszwecken verwendet werden.</string>
<string name="warning_testnet_card_title">Nur für Testzwecke</string>
<string name="warning_token_balance_not_updated">Der Kontostand ist möglicherweise veraltet. Aktualisiere bittre die Seite.</string>
<string name="warning_token_required_min_coin_reserve">Nicht genug %1$s. Lade Dein XLM-Konto auf, um dieses Token zu verknüpfen</string>
<string name="warning_token_required_min_coin_reserve">Nicht genügend %1$s. Lade Dein %2$s -Konto auf, um dieses Token zu verknüpfen</string>
<string name="warning_token_trustline_button_title">Trustline aktivieren</string>
<string name="warning_token_trustline_subtitle">Um dieses Token zu erhalten, muss eine Trustline aktiviert sein. Das Netzwerk benötigt eine Reserve von %1$s %2$s.</string>
<string name="warning_token_trustline_title">Trustline erforderlich</string>
<string name="wc_alert_audit_malicious_domain">Bösartige/ verdächtige Domäne</string>
<string name="wc_alert_audit_unknown_domain">Unbekannte Domäne</string>
<string name="wc_alert_connect_anyway">Trotzdem verbinden</string>
<string name="wc_alert_connection_timeout_description">Zeitüberschreitungsfehler. Bitte versuche es später erneut.</string>

View file

@ -6,7 +6,7 @@
<string name="action_buttons_service_loading_alert_message">Esto puede tardar unos segundos. Inténtelo de nuevo más tarde.</string>
<string name="action_buttons_service_loading_alert_title">Los datos aún no se han cargado.</string>
<string name="action_buttons_something_wrong_alert_message">La acción no está disponible actualmente. Inténtalo de nuevo más tarde o actualiza los datos deslizando el dedo hacia abajo en la pantalla.</string>
<string name="action_buttons_something_wrong_alert_title">No disponible</string>
<string name="action_buttons_something_wrong_alert_title">La acción no está disponible</string>
<string name="action_buttons_swap_choose_token">Elige el token</string>
<string name="action_buttons_swap_empty_search_message">¿No encuentra el token en tu billetera? Consulte los mercados para encontrarlo y agregarlo al intercambio</string>
<string name="action_buttons_swap_no_available_pair_notification_message">No hay tokens disponibles para intercambiar con el token seleccionado. Por favor elige otro.</string>
@ -49,6 +49,17 @@
<string name="app_settings_theme_mode_system">Predeterminado del sistema</string>
<string name="app_settings_theme_selector_title">Tema</string>
<string name="app_settings_title">Ajustes de la app</string>
<string name="backup_complete_description">Copia de seguridad de tu billetera realizada con éxito.</string>
<string name="backup_complete_title">Copia de seguridad completada</string>
<string name="backup_info_description">Su frase secreta de recuperación es un conjunto fijo de %s palabras aleatorias que se utilizan para acceder a tu billetera y recuperarla.</string>
<string name="backup_info_keep_description">Estas palabras no pueden recuperarse si se pierden. Asegúrate de guardarlas en un lugar seguro.</string>
<string name="backup_info_keep_title">Mantenlo seguro</string>
<string name="backup_info_save_description">Guarda estas %s palabras en un lugar seguro, como un administrador de contraseñas, y nunca las compartas con nadie.</string>
<string name="backup_info_save_title">No hay recuperación posible</string>
<string name="backup_info_title">Frase de recuperación</string>
<string name="backup_seed_description">Escribe estas palabras %s en orden y guárdalas en un lugar seguro y privado</string>
<string name="backup_seed_responsibility">La responsabilidad total de la seguridad y la copia de seguridad de la billetera y la frase de recuperación recae en el usuario, no en Tangem.</string>
<string name="backup_seed_title">Frase de recuperación</string>
<string name="balance_hidden_description">Para ocultar o mostrar tus saldos, simplemente gira la pantalla de tu dispositivo hacia abajo, o desactívalo en Ajustes</string>
<string name="balance_hidden_do_not_show_button">No mostrar de nuevo</string>
<string name="balance_hidden_got_it_button">Entendido</string>
@ -65,6 +76,10 @@
<item quantity="one">%d tarjeta</item>
<item quantity="other">%d tarjetas</item>
</plurals>
<plurals name="card_label_token_count">
<item quantity="one">%s token</item>
<item quantity="other">%s tokens</item>
</plurals>
<string name="card_settings_access_code_recovery_disabled_description">Desactive esta opción si no quiere que esta tarjeta se use para reiniciar códigos de acceso en otras tarjetas de esta billetera. Tenga en cuenta que esto también evitará que reinicie el código de acceso en esta tarjeta.</string>
<string name="card_settings_access_code_recovery_enabled_description">Permite usar esta tarjeta para reiniciar el código de acceso en otras tarjetas de esta billetera</string>
<string name="card_settings_access_code_recovery_title">Recuperación de código de acceso</string>
@ -110,12 +125,17 @@
<string name="common_cancel">Cancelar</string>
<string name="common_change">Cambie</string>
<string name="common_choose_action">Elige una acción</string>
<string name="common_choose_network">Elegir red</string>
<string name="common_choose_token">Elige token</string>
<string name="common_claim">Reclamar</string>
<string name="common_claim_rewards">Reclame recompensas</string>
<string name="common_close">Cerrar</string>
<string name="common_coming_soon">Próximamente</string>
<string name="common_confirm">Confirme</string>
<string name="common_contact_tangem_support">Contacte con el soporte de Tangem</string>
<string name="common_contact_visa_support">Contacte con el soporte de Visa</string>
<string name="common_continue">Continuar</string>
<string name="common_convert">Convertir</string>
<string name="common_copy">Copiar</string>
<string name="common_copy_address">Copiar la dirección</string>
<string name="common_create">Crear</string>
@ -150,6 +170,7 @@
<string name="common_generate_addresses">Sincronizar direcciones</string>
<string name="common_go_to_provider">Ir al proveedor</string>
<string name="common_go_to_token">Ir al token</string>
<string name="common_got_it">Entiendo</string>
<string name="common_hide">Ocultar</string>
<string name="common_hour">hora</string>
<string name="common_import">Importe</string>
@ -194,6 +215,7 @@
<string name="common_server_unavailable">El servidor no está disponible, por favor inténtelo de nuevo más tarde</string>
<string name="common_share">Compartir</string>
<string name="common_share_link">Compartir enlace</string>
<string name="common_show_less">Mostrar menos</string>
<string name="common_show_more">Mostrar más</string>
<string name="common_sign">Firme</string>
<string name="common_sign_and_send">Firme y envíe</string>
@ -203,6 +225,7 @@
<string name="common_submit">Enviar</string>
<string name="common_success">Con éxito</string>
<string name="common_support">Soporte</string>
<string name="common_supported_networks">Redes compatibles</string>
<string name="common_swap">Swap</string>
<string name="common_terms_and_conditions">términos y condiciones</string>
<string name="common_terms_of_use">Condiciones de uso</string>
@ -216,6 +239,7 @@
<string name="common_unreachable">Inaccesible</string>
<string name="common_unstake">Termine el staking</string>
<string name="common_utxo_validate_withdrawal_message_warning">Debido a limitaciónes sobre %1$s, solos %2$d UTXO pueden caber en una sola transacción. Esto significa que solo puedes enviar %3$s o menos. Debe reducir la cantidad.</string>
<string name="common_value_copied">Valor copiado</string>
<string name="common_week">semana</string>
<string name="common_with">con</string>
<string name="common_yes"></string>
@ -262,6 +286,7 @@
<string name="details_row_subtitle_signed_hashes_format">%s hashes</string>
<string name="details_row_title_cid">ID del dispositivo</string>
<string name="details_row_title_contact_to_support">Contactar con el equipo de soporte</string>
<string name="details_row_title_contact_to_support_chat">Abrir chat de soporte</string>
<string name="details_row_title_create_backup">Vincular más tarjetas</string>
<string name="details_row_title_currency">Moneda de la aplicación</string>
<string name="details_row_title_flip_to_hide">Girar para ocultar saldos</string>
@ -278,7 +303,8 @@
<string name="exchange_tokens_unavailable_tokens_header">No se puede intercambiar por %s</string>
<string name="express_by_provider">Proporcionado por</string>
<string name="express_cex_status_button_title">Estado</string>
<string name="express_choose_providers_subtitle">Tangem ofrece swaps de tokens a través de proveedores externos según los términos de cada proveedor</string>
<string name="express_choose_provider">Elegir proveedor</string>
<string name="express_choose_providers_subtitle">Tangem ofrece swaps de tokens a través de proveedores externos</string>
<string name="express_choose_providers_title">Elija proveedor</string>
<string name="express_error_code">Ha ocurrido un error. Código: %s</string>
<string name="express_error_provider_amount_roundup">Error %1$s. El proveedor seleccionado no puede procesar la transacción especificada. Por favor, redondee el valor a %2$s o cámbielo</string>
@ -294,37 +320,39 @@
<string name="express_exchange_notification_refund_title">El monto fue reembolsado en %1$s (red %2$s)</string>
<string name="express_exchange_notification_verification_text">Visite el sitio web del proveedor para la verificación</string>
<string name="express_exchange_notification_verification_title">Verificación KYC requerida por el proveedor</string>
<string name="express_exchange_status_bought">Comprado</string>
<string name="express_exchange_status_buying">Comprando</string>
<string name="express_exchange_status_bought">Compra completada</string>
<string name="express_exchange_status_buying">A la espera de la compra</string>
<string name="express_exchange_status_buying_active">Comprando...</string>
<string name="express_exchange_status_canceled">Cancelado</string>
<string name="express_exchange_status_confirmed">Confirmado</string>
<string name="express_exchange_status_canceled">Transacción cancelada</string>
<string name="express_exchange_status_confirmed">Depósito confirmado</string>
<string name="express_exchange_status_confirming">Esperando confirmación</string>
<string name="express_exchange_status_confirming_active">En proceso de confirmación</string>
<string name="express_exchange_status_exchanged">Intercambio</string>
<string name="express_exchange_status_exchanging">En intercambio</string>
<string name="express_exchange_status_exchanging_active">En intercambio</string>
<string name="express_exchange_status_failed">Fallido</string>
<string name="express_exchange_status_paused">En pausa</string>
<string name="express_exchange_status_confirming_active">Esperando confirmación...</string>
<string name="express_exchange_status_exchanged">Intercambio completado</string>
<string name="express_exchange_status_exchanging">A la espera del intercambio</string>
<string name="express_exchange_status_exchanging_active">Esperando el intercambio...</string>
<string name="express_exchange_status_failed">Intercambio fallido</string>
<string name="express_exchange_status_paused">Intercambio en pausa</string>
<string name="express_exchange_status_received">Depósito recibido</string>
<string name="express_exchange_status_receiving">Esperando depósito</string>
<string name="express_exchange_status_receiving_active">Esperando depósito</string>
<string name="express_exchange_status_refunded">Reembolsado</string>
<string name="express_exchange_status_refunded">Reembolso completado</string>
<string name="express_exchange_status_refunding">A la espera del reembolso</string>
<string name="express_exchange_status_sending">Transfiriendo a su cuenta</string>
<string name="express_exchange_status_sending_active">Enviando...</string>
<string name="express_exchange_status_sent">Enviado</string>
<string name="express_exchange_status_sending_active">Enviando fondos...</string>
<string name="express_exchange_status_sent">Fondos enviados</string>
<string name="express_exchange_status_subtitle">Datos proporcionados por el proveedor. La cantidad estimada puede cambiar debido a las condiciones del mercado.</string>
<string name="express_exchange_status_title">Estado del intercambio</string>
<string name="express_exchange_status_verifying">Verificación requerida</string>
<string name="express_exchange_status_waiting_tx_hash">Esperando hash de transacción</string>
<string name="express_exchange_token_list_subtitle">Lista de todos los tokens agregados a su billetera</string>
<string name="express_fetch_best_rates">Buscando las mejores tarifas…</string>
<string name="express_fetch_best_rates">Buscar tarifas actuales...</string>
<string name="express_floating_rate">Tasa flotante</string>
<string name="express_legal_one_placeholder">Al utilizar la función de intercambio, acepta el %s</string>
<string name="express_legal_two_placeholders">Al utilizar la función de intercambio, aceptas las condiciones de %1$s y %2$s del proveedor</string>
<string name="express_more_providers_soon">Próximamente habrá más proveedores.\n¡Estén atentos!</string>
<string name="express_more_providers_soon">Pronto habrá más proveedores disponibles</string>
<string name="express_provider">Proveedor</string>
<string name="express_provider_best_rate">Mejor tarifa</string>
<string name="express_provider_fca_warning_list">Lista de advertencias de la FCA</string>
<string name="express_provider_max_amount">Disponible hasta %s</string>
<string name="express_provider_min_amount">Disponible desde %s</string>
<string name="express_provider_not_available">No disponible para este par</string>
@ -336,6 +364,9 @@
<string name="express_status_hide_button_text">Ocultar esta transacción</string>
<string name="express_status_hide_dialog_text">Una vez oculto, el estado de la transacción no se puede volver a ver. En su lugar, basta con deslizar el dedo para descartarla.</string>
<string name="express_status_hide_dialog_title">¿Ocultar el estado de la transacción?</string>
<string name="express_swap_not_supported_text">Este token no es compatible. Por favor, elige un token diferente para intercambiar.</string>
<string name="express_swap_not_supported_title">%s no es compatible</string>
<string name="express_swap_with">Intercambiar con</string>
<string name="express_token_list_empty_search">No se encontraron fichas. Por favor intenta con otra solicitud</string>
<string name="express_transaction_id">ID : %s</string>
<string name="express_transaction_id_copied">ID de transacción copiado</string>
@ -363,6 +394,8 @@
<string name="give_permission_swap_subtitle" formatted="false">Para continuar, de autorización a los smart contracts de %1s para usar su %2s</string>
<string name="give_permission_title">Dar autorización</string>
<string name="give_permission_unlimited">Ilimitado</string>
<string name="home_button_add_existing_wallet">Agregar billetera existente</string>
<string name="home_button_create_new_wallet">Crear nueva billetera</string>
<string name="home_button_order">Pedir Tangem</string>
<string name="home_button_scan">Escanee</string>
<string name="hot_crypto_add_token_subtitle">a %s</string>
@ -418,6 +451,7 @@
<string name="markets_add_to_my_portfolio_unavailable_description">Este activo no está disponible en la billetera</string>
<string name="markets_add_to_my_portfolio_unavailable_for_wallet_description">Este activo no está disponible para esta billetera</string>
<string name="markets_add_token">Añadir</string>
<string name="markets_apy_placeholder">APY %s</string>
<string name="markets_available_networks">Redes disponibles</string>
<string name="markets_common_my_portfolio">Mi portafolio</string>
<string name="markets_common_title">Mercado</string>
@ -671,7 +705,7 @@
<string name="onboarding_wallet_info_title_second">Tarjetas idénticas</string>
<string name="onboarding_wallet_info_title_third">Código de acceso</string>
<string name="onramp_avaiable_with_payment_methods">Disponible con %s</string>
<string name="onramp_choose_provider_title_hint">La compra de criptomonedas en Tangem se lleva a cabo utilizando proveedores externos usando sus propios términos.</string>
<string name="onramp_choose_provider_title_hint">La compra de criptomonedas en Tangem se lleva a cabo utilizando proveedores externos.</string>
<string name="onramp_country_search">Buscar por país</string>
<string name="onramp_country_unavailable">Indisponible</string>
<string name="onramp_currency_other">Otras monedas</string>
@ -698,6 +732,13 @@
<string name="organize_tokens_sort_by_balance">Por saldo</string>
<string name="organize_tokens_title">Organizar tokens</string>
<string name="organize_tokens_ungroup">Desagrupar</string>
<string name="push_notifications_more_info">Más información</string>
<string name="push_notifications_permission_alert_description">Puedes activar las Notificaciones para Tangem en Ajustes.</string>
<string name="push_notifications_permission_alert_negative_button">Activar más tarde</string>
<string name="push_notifications_permission_alert_positive_button">Ajustes</string>
<string name="push_notifications_permission_alert_title">Activar notificaciones</string>
<string name="push_transactions_notifications_description">Reciba alertas de transacciones entrantes en las redes compatibles</string>
<string name="push_transactions_notifications_title">Notificaciones de transacciones</string>
<string name="qr_scanner_camera_denied_gallery_button">Seleccione de la galería</string>
<string name="qr_scanner_camera_denied_settings_button">Ajustes</string>
<string name="qr_scanner_camera_denied_text">No ha dado acceso a su cámara</string>
@ -770,7 +811,9 @@
<string name="send_alert_fee_too_low_text">Ha especificado una comisión inferior a la cantidad recomendada, lo que podría provocar un retraso en su transacción. ¿Continuar?</string>
<string name="send_alert_transaction_failed_text">Razón: %1$s\nCódigo: %2$s</string>
<string name="send_alert_transaction_failed_title">La transacción está incompleta</string>
<string name="send_amount_convert_to_another_token">Convertir a otro token</string>
<string name="send_amount_label">Montante</string>
<string name="send_amount_receive_token_subtitle">Se enviará al destinatario</string>
<string name="send_bitcoin_custom_fee_footer">Puede establecer tu tarifa de transacción ajustando el valor en el campo\nSatoshi por vByte.</string>
<string name="send_custom_amount_fee_footer">La tarifa que se cobrará por tu transacción. Puedes establecer tu propio valor.</string>
<string name="send_custom_evm_max_fee">Tarifa máxima</string>
@ -794,6 +837,7 @@
<string name="send_fee_unreachable_error_text">Compruebe su conexión de red</string>
<string name="send_fee_unreachable_error_title">Información de tarifa de red no accesible</string>
<string name="send_from_wallet_android">Desde</string>
<string name="send_from_wallet_name">De %s</string>
<string name="send_gas_limit">Límite de gas</string>
<string name="send_gas_limit_footer">Este es el máximo de gas que se gastará para completar una transacción o contrato. Un límite de gas evita cargos inesperados o ilimitados al ejecutar una transacción.</string>
<string name="send_gas_price">Precios del gas</string>
@ -801,8 +845,12 @@
<string name="send_max_amount">Max</string>
<string name="send_max_amount_label">Importe máximo</string>
<string name="send_max_fee">Tarifa hasta</string>
<string name="send_memo">Memo: %s</string>
<string name="send_memo_destination_tag_error">Memo no válido</string>
<string name="send_network_fee_warning_title">Cobertura de tarifa de red</string>
<string name="send_nonce">Nonce</string>
<string name="send_nonce_footer">Número único para cada transacción. Utilízalo para reenviar o cancelar una transacción pendiente.</string>
<string name="send_nonce_hint">Introduzca nonce..</string>
<string name="send_notification_exceed_balance_text">Fondos insuficientes para la transferencia, ya que el total de la tarifa y el importe de la transferencia supera el saldo existente</string>
<string name="send_notification_exceed_balance_title">El total supera el saldo</string>
<string name="send_notification_existential_deposit_text">Se requiere un saldo de al menos %s para mantener su cuenta en blockchain para evitar riesgos de seguridad. Este monto permanecerá en su saldo y no podrá retirarse.</string>
@ -830,6 +878,8 @@
<string name="send_recipient">Destinatario</string>
<string name="send_recipient_address_error">No es una dirección válida</string>
<string name="send_recipient_address_footer">Asegúrese de que la dirección de la billetera receptora esté en la red %s para evitar perder sus tokens</string>
<string name="send_recipient_address_footer_highlighted_part">enviar a %s</string>
<string name="send_recipient_address_footer_v2">Asegúrese de que %s dirección de red, ya que los errores pueden resultar en transferencias perdidas</string>
<string name="send_recipient_label">Destinatario</string>
<string name="send_recipient_memo_footer">Un Memo/ID de destino es un ID único para diferenciar transacciones enviadas al mismo destinatario en la misma red. Precaución: Omitir un memo puede llevar a la pérdida de fondos</string>
<string name="send_recipient_memo_footer_v2">Memo / Destination Tag es un código que separa las transacciones dirigidas a un destinatario compartido en una red de criptomonedas.</string>
@ -846,6 +896,7 @@
<string name="send_summary_transaction_description_suffix_fee_covered">La tarifa de red se cubrirá al usar %1$s energía</string>
<string name="send_summary_transaction_description_suffix_fee_reduced">La tarifa de red se reducirá al usar %1$s energía</string>
<string name="send_summary_transaction_description_suffix_including">incluida una tarifa de red de %1$s</string>
<string name="send_to_address">A la dirección</string>
<string name="send_transaction_success">La transacción se firmó con éxito y se envió al nodo blockchain. El saldo de la billetera se actualizará después de un tiempo.</string>
<string name="send_tron_account_activation_error">%1$s es un activo en la red Tron. Para calcular la tarifa y realizar una transacción, deba depositar algo de Tron (TRX) en su cuenta.</string>
<string name="send_validation_amount_exceeds_balance">El monto excede el saldo</string>
@ -854,6 +905,10 @@
<string name="send_validation_invalid_amount">Cantidad no válida</string>
<string name="send_validation_invalid_fee">La tarifa excede el saldo</string>
<string name="send_validation_invalid_total">El monto total excede el saldo</string>
<string name="send_with_swap_notification_text">Envía cualquier token y lo convertiremos en el camino. Su destinatario obtiene exactamente lo que necesita, sin problemas.</string>
<string name="send_with_swap_recipient_amount_text">Se enviará un destinatario</string>
<string name="send_with_swap_recipient_amount_title">Cantidad a recibir</string>
<string name="send_with_swap_title">Enviar con swap</string>
<string name="sent_transaction_sent_title">Transacción enviada</string>
<string name="settings_card_settings_footer">Escanee la tarjeta/anillo que quiere configurar</string>
<string name="settings_forget_wallet">Olvidar la billetera</string>
@ -872,7 +927,7 @@
<string name="staking_details_auto_claiming_rewards_daily_text">Las recompensas se acumulan automáticamente en su saldo de apustaking esta cada día.</string>
<string name="staking_details_available">Disponible</string>
<string name="staking_details_average_reward_rate">Tasa de recompensa promedio</string>
<string name="staking_details_banner_text">¿Qué es el Staking?</string>
<string name="staking_details_banner_text">¿Cómo funciona el staking?</string>
<string name="staking_details_estimated_profit">%s beneficio estimado</string>
<string name="staking_details_market_rating">Calificación de mercado</string>
<string name="staking_details_metrics_block_header">Métrica</string>
@ -901,14 +956,14 @@
<string name="staking_notification_additional_ada_deposit_title">Detalles del staking de ADA</string>
<string name="staking_notification_claim_rewards_text">Recomp. won se le enviará y estará disponible para su uso inmediato</string>
<string name="staking_notification_earn_rewards_text">Haga staking de forma segura y comience a ganar recompensas</string>
<string name="staking_notification_earn_rewards_text_daily">Haga de forma segura y comience a ganar recompensas diarias</string>
<string name="staking_notification_earn_rewards_text_hourly">Haga staking de forma segura y comience a ganar recompensas por hora</string>
<string name="staking_notification_earn_rewards_text_monthly">Haga staking de forma segura y comience a ganar recompensas mensuales</string>
<string name="staking_notification_earn_rewards_text_period_day">El staking le permite ganar %1$s. Sus recompensas por apostar llegan todos los días.</string>
<string name="staking_notification_earn_rewards_text_period_hour">El staking le permite ganar %1$s. Sus recompensas del staking llegan cada hora.</string>
<string name="staking_notification_earn_rewards_text_period_month">El staking le permite ganar %1$s. Sus recompensas del staking llegan todos los meses.</string>
<string name="staking_notification_earn_rewards_text_period_week">El staking le permite ganar %1$s. Sus recompensas por apostar llegan todas las semanas.</string>
<string name="staking_notification_earn_rewards_text_weekly">Haga staking de forma segura y comience a ganar recompensas semanales</string>
<string name="staking_notification_earn_rewards_text_daily">Tangem permite a los usuarios hacer staking de sus criptomonedas</string>
<string name="staking_notification_earn_rewards_text_hourly">Tangem permite a los usuarios hacer staking de sus criptomonedas</string>
<string name="staking_notification_earn_rewards_text_monthly">Tangem permite a los usuarios hacer staking de sus criptomonedas</string>
<string name="staking_notification_earn_rewards_text_period_day">El staking le permite ganar %1$s. Sus recompensas por staking llegan cada día.</string>
<string name="staking_notification_earn_rewards_text_period_hour">El staking le permite ganar %1$s. Sus recompensas por staking llegan cada hora.</string>
<string name="staking_notification_earn_rewards_text_period_month">El staking le permite ganar %1$s. Sus recompensas por staking llegan cada mes.</string>
<string name="staking_notification_earn_rewards_text_period_week">El staking le permite ganar %1$s. Sus recompensas por staking llegan cada semana.</string>
<string name="staking_notification_earn_rewards_text_weekly">Tangem permite a los usuarios hacer staking de sus criptomonedas</string>
<string name="staking_notification_earn_rewards_title">Gane recompensas por staking</string>
<string name="staking_notification_low_staked_balance_text">Su saldo de staking será demasiado bajo para cancelar el staking. Necesitará hacer staking más para alcanzar la cantidad mínima para cancelarlo.</string>
<string name="staking_notification_low_staked_balance_title">Saldo de staking bajo</string>
@ -994,6 +1049,7 @@
<string name="story_web3_title">Compatible con Web 3.0</string>
<string name="sui_not_enough_coin_for_fee_description">Se requiere una transacción entrante de al menos %1$s para proceder</string>
<string name="sui_not_enough_coin_for_fee_title">Fondos insuficientes</string>
<string name="swap_fixed_rate">Tasa fija</string>
<string name="swap_give_permission_fee_footer">La red cobrará una tarifa de aprobación de token para verificar que está autorizando el uso de su token para el swap.</string>
<string name="swap_promo_text">Intercambie más tokens a mejores tasas directamente en su billetera.</string>
<string name="swap_promo_title">¡Nuevo proveedor de intercambio disponible!</string>
@ -1007,6 +1063,7 @@
<string name="swap_story_second_title">Tarifas inmejorables</string>
<string name="swap_story_third_subtitle">Sencillo e intuitivo, permite cambiar tokens con solo unos cuantos toques</string>
<string name="swap_story_third_title">Simplemente cómodo</string>
<string name="swap_via_provider">Intercambio a través del proveedor</string>
<string name="swapping_alert_cex_description">La cantidad incluye:\n• Tarifas del proveedor de servicios\n• Tarifas de red por enviar %s desde el intercambio a la dirección del usuario.</string>
<string name="swapping_alert_cex_description_with_slippage">El monto incluye:\n• tarifas del proveedor de servicios\n• tarifas de red por enviar %1$s desde el intercambio a la dirección del usuario. \n\nEl slippage del proveedor puede alcanzar el %2$s</string>
<string name="swapping_alert_dex_description">El importe incluye los honorarios del proveedor de servicios.</string>
@ -1067,8 +1124,12 @@
<string name="transaction_history_transaction_from_address">desde: %s</string>
<string name="transaction_history_transaction_to_address">a: %s</string>
<string name="transaction_history_transaction_validator">validador: %s</string>
<string name="transaction_notifications_warning_description">Las notificaciones están activadas, pero no funcionarán hasta que permitas las notificaciones en la configuración de tu dispositivo.</string>
<string name="transaction_notifications_warning_title">Notificaciones de transacciones</string>
<string name="transfer_min_amount_error">Mínimo %s</string>
<string name="transfer_notification_invalid_minimum_transaction_amount_text">El monto mínimo para realizar esta transacción es %1$s.</string>
<string name="tron_will_be_send_token_fee_description">Las tarifas de la red Tron para tokens populares pueden ser más altas. Hacer staking de TRX puede ayudar a reducir los costos de transacción.</string>
<string name="tron_will_be_send_token_fee_title">Ahorra en las tarifas de la red Tron</string>
<string name="try_to_load_data_again_button_title">Inténtelo de nuevo</string>
<string name="twin_error_same_card">Ha escaneado la misma tarjeta. Para crear una billetera gemela, necesite escanear la tarjeta con no. %d</string>
<string name="twin_error_wrong_twin">Ha escaneado la tarjeta gemela incorrecta. Por favor, intente con otra</string>
@ -1081,14 +1142,17 @@
<string name="twins_recreate_toolbar">Tangem Twin</string>
<string name="twins_recreate_warning">Esta acción es irreversible. No tendrá acceso la billetera antigua.</string>
<string name="twins_scan_twin_with_number">Toque la tarjeta gemela con el número %s y no la retira hasta el final de la operación</string>
<string name="unexpected_error_description">Por favor, inténtelo de nuevo más tarde. Si el problema persiste, póngase en contacto con el servicio de asistencia.</string>
<string name="unexpected_error_title">¡Algo salió mal!</string>
<string name="universal_error">Hemos encontrado un error. Código de error: %s. Póngase en contacto con nuestro servicio de asistencia.</string>
<string name="unlock_wallet_description_full">Use %s o escanee una tarjeta/anillo para tener acceso a su billetera</string>
<string name="unsupported_wc_version">Error de conexión: Esta dApp utiliza la versión 1.0 de Wallet Connect, que no es compatible. Asegúrese de que la dApp sea compatible con la versión 2.0 de Wallet Connect para conectarse correctamente.</string>
<string name="user_push_notification_agreement_argument_one">Manténgase actualizado con las últimas funciones y noticias</string>
<string name="user_push_notification_agreement_argument_three">Recibir notificaciones de las transacciones entrantes</string>
<string name="user_push_notification_agreement_argument_two">Sea el primero en enterarte de nuevas promociones</string>
<string name="user_push_notification_agreement_header">¿Quiere utilizar\nnotificaciones push?</string>
<string name="user_wallet_list_add_button">Agregar una nueva billetera</string>
<string name="user_wallet_list_delete_prompt">¿Está seguro(a) de que quieres eliminar esta billetera?</string>
<string name="user_wallet_list_delete_prompt">¿Estás seguro de que deseas olvidar esta billetera?</string>
<string name="user_wallet_list_error_unable_to_unlock">Ha ocurrido un error, por favor escanee su tarjeta o anillo para iniciar sesión</string>
<string name="user_wallet_list_error_wallet_already_saved">Esta billetera ya se ha guardado, puede agregar otro</string>
<string name="user_wallet_list_rename_popup_error_already_exists">La billetera con el nombre %s ya existe</string>
@ -1131,6 +1195,10 @@
<string name="wallet_connect_subtitle">Conectar a dApps</string>
<string name="wallet_connect_title">WalletConnect</string>
<string name="wallet_connect_toast_awaiting_session_proposal">La conexión puede tardar unos segundos.</string>
<string name="wallet_import_seed_navtitle">Importar billetera</string>
<string name="wallet_import_success_description">La copia de seguridad de tu billetera se realizó con éxito.</string>
<string name="wallet_import_success_navtitle">Importar billetera</string>
<string name="wallet_import_success_title">Importación completada</string>
<string name="wallet_marketplace_block_title">%s Precio de mercado</string>
<string name="wallet_marketprice_block_update_time">últimas 24h</string>
<string name="wallet_network_group_title">%s red</string>
@ -1139,6 +1207,8 @@
<string name="wallet_promo_banner_button_title">Consíguelo ahora con un 10 % de descuento</string>
<string name="wallet_promo_banner_description">Accede a más de 13 000 criptomonedas. Compra, vende, intercambia y realiza staking con un solo toque.\nVincula hasta tres tarjetas para hacer copias de seguridad.</string>
<string name="wallet_promo_banner_title">Descubre Tangem Wallet</string>
<string name="wallet_settings_push_notifications_description">Manténteinformado sobre las transacciones entrantes de la billetera y las actualizaciones de Tangem.</string>
<string name="wallet_settings_push_notifications_title">Notificaciones de transacciones</string>
<string name="wallet_settings_title">Ajustes de la wallet</string>
<string name="wallet_title">Tangem</string>
<string name="warning_access_denied_message">Use %s o escanee una tarjeta/anillo para desbloquear el acceso a su billetera</string>
@ -1209,6 +1279,7 @@
<string name="warning_rate_app_message">Su opinión nos motiva a hacer Tangem Wallet aún mejor</string>
<string name="warning_rate_app_title">¿Disfrutando de Tangem?</string>
<string name="warning_receive_blocked_hedera_token_association_required_message">Deba asociar su token antes de recibir tokens</string>
<string name="warning_receive_blocked_token_trustline_required_message">Debes abrir una línea de confianza para tu token antes de recibirlo</string>
<string name="warning_rent_fee_title">Se requiere tarifa de alquiler de red</string>
<string name="warning_seedphrase_action_required_title">Acción requerida</string>
<string name="warning_seedphrase_contacted_support">¿Te pusiste en contacto con el servicio de asistencia a través de la aplicación o por correo electrónico en los 7 días posteriores a la creación de la billetera? Si lo hiciste o no estás seguro, sigue y completa las instrucciones.</string>
@ -1224,9 +1295,58 @@
<string name="warning_some_networks_unreachable_message">Deslice hacia abajo para refrescar o inténtelo de nuevo más tarde.</string>
<string name="warning_some_networks_unreachable_title">Algunas redes no están disponibles</string>
<string name="warning_some_token_balances_not_updated">No se han podido actualizar los saldos de algunos tokens</string>
<string name="warning_stellar_token_trustline_not_enough_xlm">No hay suficiente %s. Recarga tu cuenta XLM para asociar este token</string>
<string name="warning_testnet_card_message">Esta es una tarjeta de Testnet. No puede procesar transacciones y solo deba usarse para pruebas y desarrollo.</string>
<string name="warning_testnet_card_title">Solo para fines de prueba</string>
<string name="warning_token_balance_not_updated">El saldo podría estar desactualizado. Actualice la página.</string>
<string name="warning_token_required_min_coin_reserve">No hay suficiente %1$s. Recarga tu %2$s cuenta para asociar este token</string>
<string name="warning_token_trustline_button_title">Habilitar línea de confianza</string>
<string name="warning_token_trustline_subtitle">Una línea de confianza debe estar habilitada para recibir este token. La red requiere un %1$s %2$s reserva.</string>
<string name="warning_token_trustline_title">Se requiere línea de confianza</string>
<string name="wc_alert_audit_malicious_domain">Dominio malicioso</string>
<string name="wc_alert_audit_unknown_domain">Dominio desconocido</string>
<string name="wc_alert_domain_issues_description">Este dominio no puede ser verificado. Compruebe cuidadosamente la solicitud de aprobación.</string>
<string name="wc_alert_session_disconnected_description">Vuelva a su navegador y vuelva a conectarse a través de WalletConnect.</string>
<string name="wc_alert_sign_anyway">Firmar de todos modos</string>
<string name="wc_alert_unknown_error_description">Código de error: %s. Si el problema persiste - no dude en ponerse en contacto con nuestro soporte.</string>
<string name="wc_alert_unknown_error_description_no_error_code">Si el problema persiste, no dudes en ponerte en contacto con nuestro soporte.</string>
<string name="wc_alert_unsupported_method_description">Código de error: 8 005. Si el problema persiste, no dudes en contactar con nuestro soporte.</string>
<string name="wc_alert_unsupported_method_title">Hemos encontrado un error desconocido</string>
<string name="wc_alert_unsupported_networks_description">Actualmente, Tangem no es compatible con una red requerida por %s.</string>
<string name="wc_alert_verified_domain_description">Tangem soporta una red requerida por %s</string>
<string name="wc_alert_wrong_card_description">Se seleccionó una tarjeta o un anillo incorrectos en la app</string>
<string name="wc_allow_to_spend">Permitir gastar</string>
<string name="wc_common_address">Dirección</string>
<string name="wc_common_connect">Conectar</string>
<string name="wc_common_loading">Cargando</string>
<string name="wc_common_network">Red</string>
<string name="wc_common_networks">Redes</string>
<string name="wc_common_unlimited">Ilimitado</string>
<string name="wc_common_wallet">Billetera</string>
<string name="wc_connected_networks">Redes conectadas</string>
<string name="wc_connection_reqeust_can_view_balance">Ver el saldo y la actividad de su billetera</string>
<string name="wc_connection_reqeust_cant_sign">Firmar transacciones sin previo aviso</string>
<string name="wc_connection_reqeust_request_approval">Solicitar aprobación para transacciones</string>
<string name="wc_connection_reqeust_will_not">No podrá</string>
<string name="wc_connection_reqeust_would_like">Me gustaría</string>
<string name="wc_connection_request">Solicitud de conexión</string>
<string name="wc_contents">Contenido</string>
<string name="wc_copy_data_button_text">Copiar datos</string>
<string name="wc_custom_allowance_title">Asignación personalizada</string>
<string name="wc_estimated_wallet_changes">Cambios estimados en la billetera</string>
<string name="wc_estimated_wallet_changes_not_simulated">La transacción no ha podido ser simulada. Por favor, proceda con precaución.</string>
<string name="wc_malicious_transaction">Transacción maliciosa</string>
<string name="wc_missing_required_network_description">Añada la red %s a su perfil para esta billetera</string>
<string name="wc_missing_required_network_title">La billetera no tiene las redes requeridas</string>
<string name="wc_notification_security_risk_subtitle">Este dominio está marcado como no seguro por varios proveedores de seguridad. Salga de inmediato para proteger sus activos</string>
<string name="wc_notification_security_risk_title">Riesgo de seguridad conocido</string>
<string name="wc_request_from">Solicitud de</string>
<string name="wc_signature_type">Tipo de firma</string>
<string name="wc_transaction_info_to_title">A</string>
<string name="wc_transaction_request">Solicitud de transacción</string>
<string name="wc_transaction_request_title">Solicitud de transacción</string>
<string name="wc_unlimited_amount">Cantidad ilimitada</string>
<string name="wc_wallet_connect">Wallet connect</string>
<string name="welcome_interrupted_backup_alert_discard">Ignorar</string>
<string name="welcome_interrupted_backup_alert_message">Tiene un backup interrumpido. ¿Quiere reanudarlo?</string>
<string name="welcome_interrupted_backup_alert_resume">Sí, reanudar</string>

View file

@ -59,6 +59,7 @@
<string name="app_settings_theme_selector_title">テーマ</string>
<string name="app_settings_title">アプリ設定</string>
<string name="backup_complete_description">ウォレットのバックアップが正常に完了しました。</string>
<string name="backup_complete_seed_description">これらの単語は紛失した場合、復元できません。必ず安全な場所に保管してください。</string>
<string name="backup_complete_title">バックアップが完了しました</string>
<string name="backup_info_description">シークレットリカバリーフレーズは、ウォレットへのアクセスと復元のために使用される%sのランダムな単語のセットです。</string>
<string name="backup_info_keep_description">これらの単語は紛失した場合、復元できません。必ず安全な場所に保管してください。</string>
@ -408,6 +409,10 @@
<string name="home_button_scan">Tangemをスキャン</string>
<string name="hot_crypto_add_token_subtitle">%sへ</string>
<string name="hot_crypto_token_network">%sネットワーク</string>
<string name="hw_activation_need_backup">今すぐバックアップ</string>
<string name="hw_activation_need_description">セットアップを完了するには、ウォレットをバックアップし、アクセスコードを使用してアプリへのアクセスを保護します。</string>
<string name="hw_activation_need_finish">今すぐ実施</string>
<string name="hw_activation_need_title">ウォレットのアクティベーションを完了する</string>
<string name="hw_backup_icloud_description">iCloudバックアップに保存されている既存のウォレットを復元する</string>
<string name="hw_backup_icloud_title">iCloudバックアップ</string>
<string name="hw_backup_need_action">バックアップへ移動</string>
@ -1156,6 +1161,7 @@
<string name="twins_recreate_toolbar">Tangemツイン</string>
<string name="twins_recreate_warning">この操作は元に戻せません。古いウォレットにはアクセスできなくなります。</string>
<string name="twins_scan_twin_with_number">番号%sのツインカードをタップし、操作が終了するまで取り外さないでください。</string>
<string name="unexpected_error_description">しばらくしてからもう一度お試しください。問題が解決しない場合は、サポートにお問い合わせください。</string>
<string name="unexpected_error_title">問題が発生しました。</string>
<string name="universal_error">エラーが発生しました。エラー コード:%s。サポートにお問い合わせください。</string>
<string name="unlock_wallet_description_full">%sを使用するか、カード / リングをスキャンしてウォレットにアクセスしてください</string>
@ -1349,17 +1355,15 @@
<string name="warning_some_networks_unreachable_message">下にスワイプして更新するか、後でもう一度お試しください。</string>
<string name="warning_some_networks_unreachable_title">一部のネットワークにアクセスできません</string>
<string name="warning_some_token_balances_not_updated">一部のトークン残高を更新できませんでした</string>
<string name="warning_stellar_token_trustline_button_title">トラストラインを有効にする</string>
<string name="warning_stellar_token_trustline_not_enough_xlm">%sが足りません。このトークンを関連付けるには、XLMアカウントに資金を追加してください。</string>
<string name="warning_stellar_token_trustline_subtitle">このトークンを受け取るには、トラストラインを有効にする必要があります。ネットワークには 0.5 XLMの準備金が必要です。</string>
<string name="warning_stellar_token_trustline_title">トラストラインが必要</string>
<string name="warning_testnet_card_message">これはテストネットカードです。取引処理はできませんので、テストおよび開発目的でのみご利用ください。</string>
<string name="warning_testnet_card_title">テスト目的のみ</string>
<string name="warning_token_balance_not_updated">残高が古い可能性があります。ページを更新してください。</string>
<string name="warning_token_required_min_coin_reserve">%1$sが足りません。このトークンを関連付けるには、XLMアカウントにチャージしてください。</string>
<string name="warning_token_required_min_coin_reserve">%1$sが足りません。このトークンを関連付けるには、 %2$sアカウントにチャージしてください。</string>
<string name="warning_token_trustline_button_title">トラストラインを有効にする</string>
<string name="warning_token_trustline_subtitle">このトークンを受け取るには、トラストラインを有効にする必要があります。ネットワークには%1$s %2$s予備金が必要です。</string>
<string name="warning_token_trustline_title">トラストラインが必要</string>
<string name="wc_alert_audit_malicious_domain">悪意のあるドメイン</string>
<string name="wc_alert_audit_unknown_domain">不明なドメイン</string>
<string name="wc_alert_connect_anyway">とにかく接続する</string>
<string name="wc_alert_connection_timeout_description">タイムアウトエラーが発生しました。しばらくしてからもう一度お試しください。</string>

View file

@ -166,7 +166,7 @@
<string name="common_locked">Заблокирован</string>
<string name="common_main_network">Основная сеть</string>
<string name="common_month">месяц</string>
<string name="common_network_fee_title">Сетевая комиссия</string>
<string name="common_network_fee_title">Комиссия сети</string>
<string name="common_network_fee_warning_content">Сумма отправки будет уменьшена на %1$s (%2$s) для покрытия выбранного уровня комиссии</string>
<string name="common_next">Далее</string>
<string name="common_nft">NFT</string>
@ -532,7 +532,7 @@
<string name="markets_tooltip_message">Потяните вверх или коснитесь поисковой строки, чтобы добавить токены напрямую из рынка</string>
<string name="markets_tooltip_title">Добавить токены</string>
<string name="nfc_error_unavailable">Функция NFC недоступна на вашем устройстве</string>
<string name="nft_about_title">Об NFT</string>
<string name="nft_about_title">О NFT</string>
<string name="nft_asset">NFT</string>
<plurals name="nft_collections_count">
<item quantity="one">%d NFT</item>
@ -1261,9 +1261,6 @@
<string name="warning_some_networks_unreachable_message">Свайпните вниз для обновления или попробуйте позже.</string>
<string name="warning_some_networks_unreachable_title">Некоторые сети недоступны</string>
<string name="warning_some_token_balances_not_updated">Некоторые балансы токенов не удалось обновить</string>
<string name="warning_stellar_token_trustline_button_title">Открыть Trustline</string>
<string name="warning_stellar_token_trustline_subtitle">Чтобы получить этот токен, необходимо открыть Trustline. Сеть удержит резерв в размере 0.5 XLM.</string>
<string name="warning_stellar_token_trustline_title">Откройте Trustline</string>
<string name="warning_testnet_card_message">Это Testnet карта. Он не может обрабатывать транзакции и используется только в целях тестирования и разработки.</string>
<string name="warning_testnet_card_title">Только для целей тестирования</string>
<string name="warning_token_balance_not_updated">Возможно, баланс устарел. Обновите страницу.</string>

View file

@ -59,13 +59,15 @@
<string name="app_settings_theme_selector_title">Theme</string>
<string name="app_settings_title">App settings</string>
<string name="backup_complete_description">You successfully backed up your wallet.</string>
<string name="backup_complete_seed_description">These words cant be recovered if lost. Make sure to keep it somewhere secure.</string>
<string name="backup_complete_title">Backup Completed</string>
<string name="backup_info_description">Your Secret Recovery Phrase is a fixed set of %s random words used to access and recover your wallet.</string>
<string name="backup_info_keep_description">These words cant be recovered if lost. Make sure to keep it somewhere secure.</string>
<string name="backup_info_keep_description">These words cant be recovered if lost. Make sure to keep it somewhere secure.</string>
<string name="backup_info_keep_title">Keep It Safe</string>
<string name="backup_info_save_description">Save these %s words in a secure location, such as a password manager, and never share them with anyone.</string>
<string name="backup_info_save_title">No Recovery Possible</string>
<string name="backup_info_title">Recovery phrase</string>
<string name="backup_seed_caution">Never share these words. Anyone who learns them can steal all of your crypto. Tangem will never ask you for them. The %s words below are your wallet\'s recovery phrase. This phrase lets you recover your wallet if you lose your device.</string>
<string name="backup_seed_description">Write down these %s words in order and keep them safe and private</string>
<string name="backup_seed_responsibility">Full responsibility for the security and backup of the wallet and recovery phrase lies with the user, not with Tangem.</string>
<string name="backup_seed_title">Recovery phrase</string>
@ -937,6 +939,7 @@
<string name="send_validation_invalid_amount">Invalid amount</string>
<string name="send_validation_invalid_fee">Fee exceeds balance</string>
<string name="send_validation_invalid_total">Total amount exceeds balance</string>
<string name="send_with_swap_confirm_title">Swap and send</string>
<string name="send_with_swap_notification_text">Send any token, and well convert it on the way. Your recipient gets exactly what they need—seamlessly.</string>
<string name="send_with_swap_recipient_amount_text">Will be sent a recipient</string>
<string name="send_with_swap_recipient_amount_title">Amount to receive</string>
@ -1417,10 +1420,7 @@
<string name="warning_some_networks_unreachable_message">Swipe down to refresh or try again later.</string>
<string name="warning_some_networks_unreachable_title">Some networks are unreachable</string>
<string name="warning_some_token_balances_not_updated">Some token balances could not be updated</string>
<string name="warning_stellar_token_trustline_button_title">Enable Trustline</string>
<string name="warning_stellar_token_trustline_not_enough_xlm">Not enough %s. Top up your XLM account to associate this token</string>
<string name="warning_stellar_token_trustline_subtitle">A Trustline must be enabled to receive this token. The network requires a 0.5 XLM reserve.</string>
<string name="warning_stellar_token_trustline_title">Trustline Required</string>
<string name="warning_testnet_card_message">This is a Testnet card. It cannot process transactions and should only be used for testing and development purposes.</string>
<string name="warning_testnet_card_title">For testing purposes only</string>
<string name="warning_token_balance_not_updated">Balance may be outdated. Refresh the page.</string>
@ -1440,6 +1440,8 @@
<string name="wc_alert_unknown_error_description">Error code: %s. If the problem persists — feel free to contact our support.</string>
<string name="wc_alert_unknown_error_description_no_error_code">If the problem persists — feel free to contact our support.</string>
<string name="wc_alert_unknown_error_title">We\'ve encountered unknown error</string>
<string name="wc_alert_unsupported_dapps_description">Tangem Wallet currently doesnt support %s.</string>
<string name="wc_alert_unsupported_dapps_title">Unsupported dApp</string>
<string name="wc_alert_unsupported_method_description">Error code: 8 005. If the problem persists — feel free to contact our support.</string>
<string name="wc_alert_unsupported_method_title">We\'ve encountered unknown error</string>
<string name="wc_alert_unsupported_networks_description">Tangem does not currently support a required network by %s.</string>

View file

@ -37,14 +37,16 @@ internal class AssociateNetworksDelegate(
// remove duplicates
.subtract(requiredNamespaces)
return userWallets
.associateWith { wallet -> mapNetworksForWallet(wallet, requiredNamespaces, optionalNamespaces) }
return userWallets.associateWith { wallet ->
mapNetworksForWallet(wallet, requiredNamespaces, optionalNamespaces, sessionProposal)
}
}
private suspend fun mapNetworksForWallet(
wallet: UserWallet,
requiredNamespaces: Set<String>,
optionalNamespaces: Set<String>,
sessionProposal: Wallet.Model.SessionProposal,
): ProposalNetwork {
val walletNetworks = getWalletNetworks(wallet)
@ -78,7 +80,9 @@ internal class AssociateNetworksDelegate(
notAdded.add(wcNetwork)
}
}
if (unknownRequired.isNotEmpty()) throw WcPairError.UnsupportedBlockchains(unknownRequired)
if (unknownRequired.isNotEmpty()) {
throw WcPairError.UnsupportedBlockchains(unknownRequired, sessionProposal.name)
}
return ProposalNetwork(
wallet = wallet,
missingRequired = missingRequired,

View file

@ -24,8 +24,6 @@ import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.flow.*
import timber.log.Timber
val unsupportedDApps = listOf("dYdX", "dYdX v4", "Apex Pro", "The Sandbox")
@Suppress("LongParameterList")
internal class DefaultWcPairUseCase @AssistedInject constructor(
private val sessionsManager: WcSessionsManager,
@ -54,9 +52,9 @@ internal class DefaultWcPairUseCase @AssistedInject constructor(
.getOrNull() ?: return@flow
// check unsupported dApps, just local constant for now, finish if unsupported
if (sdkSessionProposal.name in unsupportedDApps) {
if (UnsupportedDApps.list.any { sdkSessionProposal.url.contains(it, ignoreCase = true) }) {
Timber.tag(WC_TAG).i("Unsupported DApp ${sdkSessionProposal.name}")
val error = WcPairState.Error(WcPairError.UnsupportedDApp)
val error = WcPairState.Error(WcPairError.UnsupportedDApp(sdkSessionProposal.name))
emit(error)
return@flow
}

View file

@ -0,0 +1,16 @@
package com.tangem.data.walletconnect.pair
/**
* These dApps are not supported by WC due to various issues with signing formats
* @see <a href = "https://www.notion.so/tangem/WalletConnect-1935d34eb678805fb9aff2e046dc1dfa?source=copy_link#1a15d34eb6788073925ce9c2b9fd12a5">Documentation<a/>
*/
object UnsupportedDApps {
val list = listOf(
"dydx.trade",
"dydx.exchange",
"pro.apex.exchange",
"services.dfx.swiss",
"sandbox.game",
"app.paradex.trade",
)
}

View file

@ -58,8 +58,8 @@ internal class DefaultWcPairUseCaseTest {
relayData = "",
)
private val unsupportedDApp = "Apex Pro"
private val unsupportedSdkProposal get() = sdkProposal.copy(name = unsupportedDApp)
private val unsupportedDAppUrl = "dydx.trade"
private val unsupportedSdkProposal get() = sdkProposal.copy(url = unsupportedDAppUrl)
private val sessionForApprove: WcSessionApprove
get() = WcSessionApprove(
@ -196,7 +196,7 @@ internal class DefaultWcPairUseCaseTest {
@Test
fun `success pair and reject unsupported dApp`() = runTest {
coEvery { sdkDelegate.pair(url) } returns unsupportedSdkProposal.right()
val unsupportedDAppError = WcPairState.Error(WcPairError.UnsupportedDApp)
val unsupportedDAppError = WcPairState.Error(WcPairError.UnsupportedDApp(unsupportedSdkProposal.name))
val useCase = useCaseFactory()
useCase.invoke().test {

View file

@ -8,8 +8,8 @@ sealed class WcPairError(
data class UriAlreadyUsed(override val message: String) : WcPairError("107 001 001")
data class PairingFailed(override val message: String) : WcPairError("107 001 002")
data object InvalidDomainURL : WcPairError("107 001 003")
data object UnsupportedDApp : WcPairError("107 001 004")
data class UnsupportedBlockchains(val chains: Set<String>) : WcPairError("107 001 005")
data class UnsupportedDApp(val appName: String) : WcPairError("107 001 004")
data class UnsupportedBlockchains(val chains: Set<String>, val appName: String) : WcPairError("107 001 005")
data object InvalidConnectionRequest : WcPairError("107 002 001")
data object ProposalExpired : WcPairError("107 002 002")

View file

@ -55,9 +55,14 @@ internal class WcPairComponent(
}
private fun onChildBack() {
when (contentStack.value.active.configuration) {
WcAppInfoRoutes.AppInfo -> dismiss()
is WcAppInfoRoutes.Alert,
when (val config = contentStack.value.active.configuration) {
is WcAppInfoRoutes.AppInfo -> dismiss()
is Alert -> when (config.type) {
is Alert.Type.UnsupportedDApp,
is Alert.Type.UnsupportedNetwork,
-> dismiss()
else -> model.stackNavigation.pop()
}
is WcAppInfoRoutes.SelectNetworks,
is WcAppInfoRoutes.SelectWallet,
-> model.stackNavigation.pop()
@ -108,8 +113,10 @@ internal class WcPairComponent(
private fun createBottomSheetMessageUM(alertType: Alert.Type): MessageBottomSheetUMV2 {
return when (alertType) {
is Alert.Type.Verified -> WcAlertsFactory.createVerifiedDomainAlert(alertType.appName)
Alert.Type.UnknownDomain -> WcAlertsFactory.createUnknownDomainAlert(model::connectFromAlert)
Alert.Type.UnsafeDomain -> WcAlertsFactory.createUnsafeDomainAlert(model::connectFromAlert)
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)
}
}

View file

@ -1,9 +1,7 @@
package com.tangem.features.walletconnect.connections.model
import androidx.compose.runtime.Stable
import com.arkivanov.decompose.router.stack.StackNavigation
import com.arkivanov.decompose.router.stack.pop
import com.arkivanov.decompose.router.stack.pushNew
import com.arkivanov.decompose.router.stack.*
import com.domain.blockaid.models.dapp.CheckDAppResult
import com.tangem.core.decompose.di.ModelScoped
import com.tangem.core.decompose.model.Model
@ -79,7 +77,6 @@ internal class WcPairModel @Inject constructor(
}
private fun loadDAppInfo() {
fun errorToast(error: WcPairError) = messageSender.send(ToastMessage(message = stringReference(error.message)))
wcPairUseCase()
.onEach { pairState ->
when (pairState) {
@ -90,14 +87,14 @@ internal class WcPairModel @Inject constructor(
appInfoUiState.transformerUpdate(
WcConnectButtonProgressTransformer(showProgress = false),
)
pairState.result.onLeft(::errorToast)
pairState.result.onLeft(::processError)
router.pop()
}
is WcPairState.Error -> {
appInfoUiState.transformerUpdate(
WcConnectButtonProgressTransformer(showProgress = false),
)
errorToast(pairState.error)
processError(pairState.error)
}
is WcPairState.Loading -> appInfoUiState.update { createLoadingState() }
is WcPairState.Proposal -> {
@ -179,6 +176,19 @@ internal class WcPairModel @Inject constructor(
stackNavigation.pushNew(WcAppInfoRoutes.Alert(WcAppInfoRoutes.Alert.Type.Verified(appName)))
}
private fun processError(error: WcPairError) {
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))) }
}
override fun onWalletSelected(userWalletId: UserWalletId) {
val selectedUserWallet = sessionProposal.proposalNetwork.keys.first { it.walletId == userWalletId }
proposalNetwork = sessionProposal.proposalNetwork.getValue(selectedUserWallet)

View file

@ -32,6 +32,8 @@ internal sealed class WcAppInfoRoutes : TangemBottomSheetConfigContent, Route {
data class Verified(val appName: String) : Type()
data object UnknownDomain : Type()
data object UnsafeDomain : Type()
data class UnsupportedDApp(val appName: String) : Type()
data class UnsupportedNetwork(val appName: String) : Type()
}
}
}

View file

@ -72,6 +72,40 @@ internal object WcAlertsFactory {
}
}
fun createUnsupportedDomainAlert(appName: String): MessageBottomSheetUMV2 {
return messageBottomSheetUM {
infoBlock {
icon(R.drawable.ic_wallet_connect_24) {
type = MessageBottomSheetUMV2.Icon.Type.Informative
backgroundType = MessageBottomSheetUMV2.Icon.BackgroundType.SameAsTint
}
title = resourceReference(R.string.wc_alert_unsupported_dapps_title)
body = resourceReference(R.string.wc_alert_unsupported_dapps_description, wrappedList(appName))
}
primaryButton {
text = resourceReference(R.string.common_got_it)
onClick { closeBs() }
}
}
}
fun createUnsupportedChainAlert(appName: String): MessageBottomSheetUMV2 {
return messageBottomSheetUM {
infoBlock {
icon(R.drawable.ic_network_new_24) {
type = MessageBottomSheetUMV2.Icon.Type.Informative
backgroundType = MessageBottomSheetUMV2.Icon.BackgroundType.SameAsTint
}
title = resourceReference(R.string.wc_alert_unsupported_networks_title)
body = resourceReference(R.string.wc_alert_unsupported_networks_description, wrappedList(appName))
}
primaryButton {
text = resourceReference(R.string.common_got_it)
onClick { closeBs() }
}
}
}
private fun createUnknownErrorAlert(errorMessage: String?, onDismiss: () -> Unit): MessageBottomSheetUMV2 {
return messageBottomSheetUM {
infoBlock {