1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-12-22 09:23:21 +01:00

Release MultiChain 0.5 (#18903)

* Show portfolio icon in ETH overview

* Show new copy button in QR code modal

* Show address copy button in wallet overview

* Update connected status component

* Remove legacy MenuBar

* Remove legacy ImportTokenLink

* Remove AssetListItem

* Remove DetectedTokensLink

* Remove legacy AppHeader

* Remove MULTICHAIN flag from builds.yml

* Remove legacy AccountMenu

* FIX: Token cell snapshot

* Add data-testid for Account Picker

* Remove multichain check in LoadingNetworkScreen

* Remove MULTICHAIN check for AccountDetailsModal

* Remove MULTICHAIN check for AssetList

* Update QR dimensions

* Remove MULTICHAIN declaration from metamaskrc.dist

* Implement PickerNetwork and NetworkListMenu in onboarding

* Remove legacy NetworkDropdown and Dropdown

* Remove documentation about legacy account menu

* FIX: Fixes route tests for missing data-testid=network-display

* Fix account-menu-icon data-testid

* Fix TokenCell test

* FIX Onboarding Flow tests

* Remove unused locales from AccountMenu removal

* E2E: Fix Import Secret Recovery Phrase: logs out of the vault

* E2E: Fix Show account details: should show the QR code for the account

* E2E: Fix add-account.spec.js

* E2E: Fix state-logs.spec.js

* E2E: Fix lock-account.spec.js

* E2E: Fix settings-general.spec.js

* E2E: Fix advanced-settings.spec.js

* E2E: Fix auto-lock.spec.js

* E2E: Fix backup-restore.spec.js

* E2E: Fix clear-activity.spec.js

* E2E: Fix settings-search.spec.js

* E2E: Fix encrypt-decrypt.spec.js

* E2E: Fix dapp-interactions.spec.js

* E2E: Fix test-snap-management.spec.js

* E2E: Fix add-custom-network.spec.js

* E2E: Fix from-import-ui.spec.js

* E2E: Fix provider-api.spec.js

* E2E: Fix chain-interactions.spec.js

* E2E: Fix custom-rpc-history.spec.js

* Remove network icon from overview components

* E2E: Fix user-actions-benchmark.js

* E2E: Fix benchmark.js

* E2E: Fix add-hide-token.spec.js

* E2E: Fix address-book.spec.js

* E2E: Fix custom-token-add-approve.spec.js

* E2E: Fix incremental-security.spec.js

* E2E: Fix metamask-responsive-ui.spec.js

* E2E: Onboarding.spec.js

* E2E: Fix permissions.spec.js

* E2E: Fix send-hex-address.spec.js

* E2E: Fix send-to-contract.spec.js

* Remove dead AccountOptionsMenu test

* E2E: Fix token-details.spec.js

* E2E: Fix switch-custom-network.spec.js

* E2E: Fix metamask-ui.spec.js

* Revert "UX Multichain: updated border top for activity list (#19176)"

This reverts commit 15598f2a23.

* E2Es: Fix test-snap-management.spec.js and test-snap-notification.spec.js

* E2Es: Fix add-account.spec.js after flaky test fixes

* e2e flaky test

* adds back the mmi options

* scss fix

* test fix

* removes unnecessary double quotes

* Prevent double logos on login screen

* Update ui/components/ui/list-item/index.scss

Co-authored-by: Nidhi Kumari <nidhi.kumari@consensys.net>

---------

Co-authored-by: seaona <mariona@gmx.es>
Co-authored-by: Antonio Regadas <antonio.regadas@consensys.net>
Co-authored-by: Nidhi Kumari <nidhi.kumari@consensys.net>
This commit is contained in:
David Walsh 2023-06-01 16:14:38 -05:00 committed by GitHub
parent 2a227c4646
commit b89630fdd2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
162 changed files with 649 additions and 6163 deletions

View File

@ -9,7 +9,6 @@ INFURA_PROJECT_ID=00000000000
;SWAPS_USE_DEV_APIS=
;PORTFOLIO_URL=
;TRANSACTION_SECURITY_PROVIDER=
;MULTICHAIN=
; Set this to test changes to the phishing warning page.
;PHISHING_WARNING_PAGE_URL=

View File

@ -148,9 +148,6 @@
"connect": {
"message": "ይገናኙ"
},
"connectHardwareWallet": {
"message": "ከሃርድዌር ቋት ጋር ይገናኙ"
},
"connectingTo": {
"message": "ከ $1ጋር መገናኘት"
},
@ -187,9 +184,6 @@
"create": {
"message": "ፍጠር"
},
"createAccount": {
"message": "መለያ ፍጠር"
},
"createPassword": {
"message": "የይለፍ ቃል ፍጠር"
},
@ -798,10 +792,6 @@
"transferFrom": {
"message": "የማዛወሪያ ቅጽ"
},
"troubleTokenBalances": {
"message": "የተለዋጭ ስም ቀሪ ሂሳብዎን ስንጭን ችግር አጋጥሞናል። ማየት ይችላሉ",
"description": "Followed by a link (here) to view token balances"
},
"tryAgain": {
"message": "እንደገና ሞክር"
},

View File

@ -158,9 +158,6 @@
"connect": {
"message": "اتصال"
},
"connectHardwareWallet": {
"message": "ربط محفظة الأجهزة"
},
"connectingTo": {
"message": "جارِ الاتصال بـ $1"
},
@ -197,9 +194,6 @@
"create": {
"message": "إنشاء"
},
"createAccount": {
"message": "إنشاء حساب"
},
"createPassword": {
"message": "إنشاء كلمة مرور"
},
@ -810,10 +804,6 @@
"transferFrom": {
"message": "التحويل من"
},
"troubleTokenBalances": {
"message": "واجهتنا مشكلة في تحميل أرصدتك من العملات الرمزية. يمكنك الاطلاع عليها",
"description": "Followed by a link (here) to view token balances"
},
"tryAgain": {
"message": "إعادة المحاولة"
},

View File

@ -154,9 +154,6 @@
"connect": {
"message": "Свързване"
},
"connectHardwareWallet": {
"message": "Свържете хардуерен портфейл"
},
"connectingTo": {
"message": "Свързване с $1"
},
@ -193,9 +190,6 @@
"create": {
"message": "Създаване"
},
"createAccount": {
"message": "Създай акаунт"
},
"createPassword": {
"message": "Създаване на парола"
},
@ -809,10 +803,6 @@
"transferFrom": {
"message": "Трансфер от"
},
"troubleTokenBalances": {
"message": "Имахме проблеми със зареждането на вашите символи. Можете да ги видите",
"description": "Followed by a link (here) to view token balances"
},
"tryAgain": {
"message": "Нов опит"
},

View File

@ -154,9 +154,6 @@
"connect": {
"message": "সংযুক্ত করুন"
},
"connectHardwareWallet": {
"message": "হার্ডওয়্যার ওয়ালেট সংযুক্ত করুন"
},
"connectingTo": {
"message": " $1 এর সাথে সংযোগ করছে"
},
@ -190,9 +187,6 @@
"create": {
"message": "তৈরি করুন"
},
"createAccount": {
"message": "অ্যাকাউন্ট তৈরি করুন"
},
"createPassword": {
"message": "পাসওয়ার্ড তৈরি করুন"
},
@ -807,10 +801,6 @@
"transferFrom": {
"message": "থেকে ট্রান্সফার করুন"
},
"troubleTokenBalances": {
"message": "আপনার টোকেন ব্যালেন্সগুলি লোড করতে আমাদের সমস্যা হয়েছিল। আপনি সেগুলি দেখতে পারেন",
"description": "Followed by a link (here) to view token balances"
},
"tryAgain": {
"message": "আবার করুন"
},

View File

@ -151,9 +151,6 @@
"connect": {
"message": "Connecta"
},
"connectHardwareWallet": {
"message": "Connectar Moneder Hardaware"
},
"connectingTo": {
"message": "Connectant a $1 "
},
@ -190,9 +187,6 @@
"create": {
"message": "Crea"
},
"createAccount": {
"message": "Crea "
},
"createPassword": {
"message": "Crear Contrasenya"
},
@ -785,10 +779,6 @@
"transferFrom": {
"message": "Transferir Des de"
},
"troubleTokenBalances": {
"message": "Hem tingut problemes en carregar el teu saldo de fitxes. Els pots veure",
"description": "Followed by a link (here) to view token balances"
},
"tryAgain": {
"message": "Torna-ho a provar"
},

View File

@ -81,9 +81,6 @@
"create": {
"message": "Vytvořit"
},
"createAccount": {
"message": "Vytvořit účet"
},
"customToken": {
"message": "Vlastní token"
},
@ -364,10 +361,6 @@
"transactionError": {
"message": "Chyba transakce. Vyhozena výjimka v kódu kontraktu."
},
"troubleTokenBalances": {
"message": "Měli jsme problém s načtením vašich tokenových zůstatků. Můžete je vidět ",
"description": "Followed by a link (here) to view token balances"
},
"typePassword": {
"message": "Zadejte své heslo"
},

View File

@ -154,9 +154,6 @@
"connect": {
"message": "Få forbindelse"
},
"connectHardwareWallet": {
"message": "Forbind Hardwarepung"
},
"connectingTo": {
"message": "Forbinder til $1"
},
@ -193,9 +190,6 @@
"create": {
"message": "Opret"
},
"createAccount": {
"message": "Opret konto"
},
"createPassword": {
"message": "Opret adgangskode"
},
@ -782,10 +776,6 @@
"transferFrom": {
"message": "Overfør fra"
},
"troubleTokenBalances": {
"message": "Vi havde problemer med at indlæse dine tokenbalancer. Du kan se dem",
"description": "Followed by a link (here) to view token balances"
},
"tryAgain": {
"message": "Prøv igen"
},

View File

@ -642,9 +642,6 @@
"connectAccountOrCreate": {
"message": "Konto verbinden oder Neues erstellen"
},
"connectHardwareWallet": {
"message": "Hardware-Wallet verknüpfen"
},
"connectManually": {
"message": "Manuelle Verbindung zur aktuellen Site"
},
@ -789,9 +786,6 @@
"create": {
"message": "Erstellen"
},
"createAccount": {
"message": "Konto erstellen"
},
"createNewWallet": {
"message": "Eine neue Wallet erstellen"
},
@ -1636,9 +1630,6 @@
"importTokenWarning": {
"message": "Jeder kann ein Token mit beliebigem Namen erstellen, einschließlich gefälschter Versionen bestehender Token. Hinzufügen und Handeln auf eigene Gefahr!"
},
"importTokens": {
"message": "Token importieren"
},
"importTokensCamelCase": {
"message": "Token importieren"
},
@ -1990,9 +1981,6 @@
"missingSettingRequest": {
"message": "Hier anfragen"
},
"missingToken": {
"message": "Sie sehen Ihren Token nicht?"
},
"moreComingSoon": {
"message": "Mehr in Kürze ..."
},
@ -2235,9 +2223,6 @@
"notEnoughGas": {
"message": "Nicht genügend Gas"
},
"notifications": {
"message": "Benachrichtigungen"
},
"notifications10ActionText": {
"message": "Einstellungen ansehen",
"description": "The 'call to action' on the button, or link, of the 'Visit in Settings' notification. Upon clicking, users will be taken to Settings page."
@ -3214,9 +3199,6 @@
"showHexDataDescription": {
"message": "Wählen Sie dies aus, um das Hexdatenfeld auf dem Senden-Bildschirm anzuzeigen"
},
"showHide": {
"message": "Ein-/Ausblenden"
},
"showIncomingTransactions": {
"message": "Eingehende Transaktionen anzeigen"
},
@ -3416,9 +3398,6 @@
"status": {
"message": "Status"
},
"statusConnected": {
"message": "Verbinden"
},
"statusNotConnected": {
"message": "Nicht verbunden"
},
@ -3923,10 +3902,6 @@
"toggleEthSignField": {
"message": "eth_sign-Anfragen ein- oder ausschalten"
},
"toggleTestNetworks": {
"message": "$1 Test-Netzwerke",
"description": "$1 is a clickable link with text defined by the 'showHide' key. The link will open Settings > Advanced where users can enable the display of test networks in the network dropdown."
},
"token": {
"message": "Token"
},
@ -4106,10 +4081,6 @@
"troubleStarting": {
"message": "Beim Starten von MetaMask ist ein Problem aufgetreten. Dies könnte ein vorübergehendes Problem sein. Versuchen Sie daher, die Erweiterung neu zu starten."
},
"troubleTokenBalances": {
"message": "Wir haben Schwierigkeiten dein Tokenguthaben zu laden. Du kannst es hier anzeigen lassen",
"description": "Followed by a link (here) to view token balances"
},
"trustSiteApprovePermission": {
"message": "Durch Erteilung der Erlaubnis erlauben Sie den folgenden $1 Zugriff auf Ihr Guthaben"
},

View File

@ -642,9 +642,6 @@
"connectAccountOrCreate": {
"message": "Σύνδεση λογαριασμού ή δημιουργία νέου"
},
"connectHardwareWallet": {
"message": "Σύνδεση Πορτοφολιού Υλικού"
},
"connectManually": {
"message": "Χειροκίνητη σύνδεση στον τρέχοντα ιστότοπο"
},
@ -789,9 +786,6 @@
"create": {
"message": "Δημιουργία"
},
"createAccount": {
"message": "Δημιουργία Λογαριασμού"
},
"createNewWallet": {
"message": "Δημιουργήστε ένα νέο πορτοφόλι"
},
@ -1636,9 +1630,6 @@
"importTokenWarning": {
"message": "Ο καθένας μπορεί να δημιουργήσει ένα token με οποιοδήποτε όνομα, συμπεριλαμβανομένων ψεύτικων εκδόσεων των υφιστάμενων νομισμάτων. Προσθέστε και ανταλλάξτε με δική σας ευθύνη!"
},
"importTokens": {
"message": "εισαγωγή token"
},
"importTokensCamelCase": {
"message": "Εισαγωγή Token"
},
@ -1990,9 +1981,6 @@
"missingSettingRequest": {
"message": "Υποβάλετε αίτημα εδώ"
},
"missingToken": {
"message": "Δεν βλέπετε το token σας;"
},
"moreComingSoon": {
"message": "Περισσότερα έρχονται σύντομα..."
},
@ -2235,9 +2223,6 @@
"notEnoughGas": {
"message": "Δεν Υπάρχει Αρκετό τέλος συναλλαγής"
},
"notifications": {
"message": "Ειδοποιήσεις"
},
"notifications10ActionText": {
"message": "Μετάβαση στις Ρυθμίσεις",
"description": "The 'call to action' on the button, or link, of the 'Visit in Settings' notification. Upon clicking, users will be taken to Settings page."
@ -3211,9 +3196,6 @@
"showHexDataDescription": {
"message": "Επιλέξτε αυτό για να εμφανίσετε το πεδίο hex δεδομένων στην οθόνη αποστολής"
},
"showHide": {
"message": "Εμφάνιση/απόκρυψη"
},
"showIncomingTransactions": {
"message": "Εμφάνιση Εισερχομένων Συναλλαγών"
},
@ -3413,9 +3395,6 @@
"status": {
"message": "Κατάσταση"
},
"statusConnected": {
"message": "Συνδεδεμένο"
},
"statusNotConnected": {
"message": "Δεν έχει συνδεθεί"
},
@ -3920,10 +3899,6 @@
"toggleEthSignField": {
"message": "Εναλλαγή αιτημάτων eth_sign"
},
"toggleTestNetworks": {
"message": "$1 δοκιμαστικά δίκτυα",
"description": "$1 is a clickable link with text defined by the 'showHide' key. The link will open Settings > Advanced where users can enable the display of test networks in the network dropdown."
},
"token": {
"message": "Διακριτικό"
},
@ -4103,10 +4078,6 @@
"troubleStarting": {
"message": "Το MetaMask αντιμετώπισε πρόβλημα κατά την εκκίνηση. Αυτό το σφάλμα μπορεί να είναι τυχαίο, γι' αυτό προσπαθήστε να επανεκκινήσετε την επέκταση."
},
"troubleTokenBalances": {
"message": "Είχαμε πρόβλημα να φορτώσουμε τα υπόλοιπα του διακριτικού σας. Μπορείτε να τα δείτε ",
"description": "Followed by a link (here) to view token balances"
},
"trustSiteApprovePermission": {
"message": "Χορηγώντας άδεια, επιτρέπετε στα ακόλουθα $1 να έχουν πρόσβαση στα χρήματά σας"
},

View File

@ -745,9 +745,6 @@
"connectCustodialAccountTitle": {
"message": "Custodial Accounts"
},
"connectHardwareWallet": {
"message": "Connect hardware wallet"
},
"connectManually": {
"message": "Manually connect to current site"
},
@ -895,9 +892,6 @@
"create": {
"message": "Create"
},
"createAccount": {
"message": "Create account"
},
"createNewWallet": {
"message": "Create a new wallet"
},
@ -1798,7 +1792,9 @@
"message": "full access to your wallet and funds.",
"description": "Is the bolded text in 'holdToRevealContentPrivateKey2'"
},
"holdToRevealLockedLabel": { "message": "hold to reveal circle locked" },
"holdToRevealLockedLabel": {
"message": "hold to reveal circle locked"
},
"holdToRevealPrivateKey": {
"message": "Hold to reveal Private Key"
},
@ -1811,7 +1807,9 @@
"holdToRevealSRPTitle": {
"message": "Keep your SRP safe"
},
"holdToRevealUnlockedLabel": { "message": "hold to reveal circle unlocked" },
"holdToRevealUnlockedLabel": {
"message": "hold to reveal circle unlocked"
},
"id": {
"message": "Id"
},
@ -1879,9 +1877,6 @@
"importTokenWarning": {
"message": "Anyone can create a token with any name, including fake versions of existing tokens. Add and trade at your own risk!"
},
"importTokens": {
"message": "import tokens"
},
"importTokensCamelCase": {
"message": "Import tokens"
},
@ -2262,9 +2257,6 @@
"missingSettingRequest": {
"message": "Request here"
},
"missingToken": {
"message": "Don't see your token?"
},
"mmiAddToken": {
"message": "The page at $1 would like to authorise the following custodian token in MetaMask Institutional"
},
@ -3715,9 +3707,6 @@
"showHexDataDescription": {
"message": "Select this to show the hex data field on the send screen"
},
"showHide": {
"message": "Show/hide"
},
"showIncomingTransactions": {
"message": "Show incoming transactions"
},
@ -3984,9 +3973,6 @@
"status": {
"message": "Status"
},
"statusConnected": {
"message": "Connected"
},
"statusNotConnected": {
"message": "Not connected"
},
@ -4556,10 +4542,6 @@
"toggleEthSignOn": {
"message": "ON (Not recommended)"
},
"toggleTestNetworks": {
"message": "$1 test networks",
"description": "$1 is a clickable link with text defined by the 'showHide' key. The link will open Settings > Advanced where users can enable the display of test networks in the network dropdown."
},
"token": {
"message": "Token"
},
@ -4770,10 +4752,6 @@
"troubleStarting": {
"message": "MetaMask had trouble starting. This error could be intermittent, so try restarting the extension."
},
"troubleTokenBalances": {
"message": "We had trouble loading your token balances. You can view them ",
"description": "Followed by a link (here) to view token balances"
},
"trustSiteApprovePermission": {
"message": "By granting permission, you are allowing the following $1 to access your funds"
},

View File

@ -642,9 +642,6 @@
"connectAccountOrCreate": {
"message": "Conectar cuenta o crear nueva"
},
"connectHardwareWallet": {
"message": "Conectar la cartera de hardware"
},
"connectManually": {
"message": "Conectarse manualmente al sitio actual"
},
@ -789,9 +786,6 @@
"create": {
"message": "Crear"
},
"createAccount": {
"message": "Crear cuenta"
},
"createNewWallet": {
"message": "Crear una cartera nueva"
},
@ -1636,9 +1630,6 @@
"importTokenWarning": {
"message": "Toda persona puede crear un token con cualquier nombre, incluso versiones falsas de tokens existentes. ¡Agréguelo y realice transacciones bajo su propio riesgo!"
},
"importTokens": {
"message": "agregar activo"
},
"importTokensCamelCase": {
"message": "Importar tokens"
},
@ -1990,9 +1981,6 @@
"missingSettingRequest": {
"message": "Solicítelo aquí"
},
"missingToken": {
"message": "¿No ve su token?"
},
"moreComingSoon": {
"message": "Más próximamente..."
},
@ -2235,9 +2223,6 @@
"notEnoughGas": {
"message": "No hay gas suficiente"
},
"notifications": {
"message": "Notificaciones"
},
"notifications10ActionText": {
"message": "Ir a configuración",
"description": "The 'call to action' on the button, or link, of the 'Visit in Settings' notification. Upon clicking, users will be taken to Settings page."
@ -3214,9 +3199,6 @@
"showHexDataDescription": {
"message": "Seleccione esta opción para mostrar el campo de datos hexadecimales en la pantalla de envío"
},
"showHide": {
"message": "Mostrar/ocultar"
},
"showIncomingTransactions": {
"message": "Mostrar transacciones entrantes"
},
@ -3416,9 +3398,6 @@
"status": {
"message": "Estado"
},
"statusConnected": {
"message": "Conectado"
},
"statusNotConnected": {
"message": "No conectado"
},
@ -3923,10 +3902,6 @@
"toggleEthSignField": {
"message": "Alternar solicitudes de eth_sign"
},
"toggleTestNetworks": {
"message": "$1 redes de prueba",
"description": "$1 is a clickable link with text defined by the 'showHide' key. The link will open Settings > Advanced where users can enable the display of test networks in the network dropdown."
},
"token": {
"message": "Token"
},
@ -4106,10 +4081,6 @@
"troubleStarting": {
"message": "MetaMask tuvo problemas para iniciar. Este error podría ser intermitente, así que intente reiniciar la extensión."
},
"troubleTokenBalances": {
"message": "Tuvimos problemas al cargar los saldos de token. Puede verlos ",
"description": "Followed by a link (here) to view token balances"
},
"trustSiteApprovePermission": {
"message": "Al conceder el permiso, usted permite que los siguientes $1 tengan acceso a sus fondos"
},

View File

@ -389,9 +389,6 @@
"connectAccountOrCreate": {
"message": "Conectar cuenta o crear nueva"
},
"connectHardwareWallet": {
"message": "Conectar la cartera de hardware"
},
"connectManually": {
"message": "Conectarse manualmente al sitio actual"
},
@ -499,9 +496,6 @@
"create": {
"message": "Crear"
},
"createAccount": {
"message": "Crear cuenta"
},
"createNewWallet": {
"message": "Crear una nueva cartera"
},
@ -1091,9 +1085,6 @@
"importTokenWarning": {
"message": "Toda persona puede crear un token con cualquier nombre, incluso versiones falsas de tokens existentes. ¡Agréguelo y realice transacciones bajo su propio riesgo!"
},
"importTokens": {
"message": "importar tokens"
},
"importTokensCamelCase": {
"message": "Importar tokens"
},
@ -1351,9 +1342,6 @@
"missingNFT": {
"message": "¿No ve su NFT?"
},
"missingToken": {
"message": "¿No ve su token?"
},
"mustSelectOne": {
"message": "Debe seleccionar al menos 1 token."
},
@ -2064,9 +2052,6 @@
"showHexDataDescription": {
"message": "Seleccione esta opción para mostrar el campo de datos hexadecimales en la pantalla de envío"
},
"showHide": {
"message": "Mostrar/ocultar"
},
"showIncomingTransactions": {
"message": "Mostrar transacciones entrantes"
},
@ -2168,9 +2153,6 @@
"stateLogsDescription": {
"message": "Los registros de estado contienen sus direcciones de cuentas públicas y las transacciones enviadas."
},
"statusConnected": {
"message": "Conectado"
},
"statusNotConnected": {
"message": "No conectado"
},
@ -2549,10 +2531,6 @@
"message": "Para: $1",
"description": "$1 is the address to include in the To label. It is typically shortened first using shortenAddress"
},
"toggleTestNetworks": {
"message": "$1 redes de prueba",
"description": "$1 is a clickable link with text defined by the 'showHide' key. The link will open Settings > Advanced where users can enable the display of test networks in the network dropdown."
},
"token": {
"message": "Token"
},
@ -2692,10 +2670,6 @@
"message": "Tuvimos problemas al conectar su $1. Pruebe revisar $2 e inténtelo de nuevo.",
"description": "$1 is the wallet device name; $2 is a link to wallet connection guide"
},
"troubleTokenBalances": {
"message": "Tuvimos problemas al cargar los saldos de token. Puede verlos ",
"description": "Followed by a link (here) to view token balances"
},
"trustSiteApprovePermission": {
"message": "Al conceder el permiso, usted permite que los siguientes $1 tengan acceso a sus fondos"
},

View File

@ -154,9 +154,6 @@
"connect": {
"message": "Ühendamine"
},
"connectHardwareWallet": {
"message": "Ühendage riistvara rahakott"
},
"connectingTo": {
"message": "Ühenduse loomine $1"
},
@ -193,9 +190,6 @@
"create": {
"message": "Loo"
},
"createAccount": {
"message": "Loo konto"
},
"createPassword": {
"message": "Loo parool"
},
@ -803,10 +797,6 @@
"transferFrom": {
"message": "Ülekandmine asukohast"
},
"troubleTokenBalances": {
"message": "Teie loasaldode laadimisega oli probleem. Saate neid vaadata",
"description": "Followed by a link (here) to view token balances"
},
"tryAgain": {
"message": "Proovi uuesti"
},

View File

@ -154,9 +154,6 @@
"connect": {
"message": "اتصال"
},
"connectHardwareWallet": {
"message": "اتصال کیف سخت افزار"
},
"connectingTo": {
"message": "در حال اتصال به 1$1"
},
@ -193,9 +190,6 @@
"create": {
"message": "ایجاد"
},
"createAccount": {
"message": "ایجاد حساب"
},
"createPassword": {
"message": "ایجاد رمز عبور"
},
@ -813,10 +807,6 @@
"transferFrom": {
"message": "انتقال از"
},
"troubleTokenBalances": {
"message": "ما در بارگیری صورت حساب های رمزیاب تان دچار مشکل شدیم. شما میتوانید آنها را مشاهده کنید",
"description": "Followed by a link (here) to view token balances"
},
"tryAgain": {
"message": "امتحان مجدد"
},

View File

@ -154,9 +154,6 @@
"connect": {
"message": "Muodosta yhteys"
},
"connectHardwareWallet": {
"message": "Yhdistä laitteistokukkaro"
},
"connectingTo": {
"message": "Yhdistetään summaan $1 "
},
@ -193,9 +190,6 @@
"create": {
"message": "Luo"
},
"createAccount": {
"message": "Luo tili"
},
"createPassword": {
"message": "Luo salasana"
},
@ -810,10 +804,6 @@
"transferFrom": {
"message": "Siirto kohteesta"
},
"troubleTokenBalances": {
"message": "Kohtasimme ongelmia ladatessamme tietuesaldojasi. Voit katsella niitä kohteessa",
"description": "Followed by a link (here) to view token balances"
},
"tryAgain": {
"message": "Yritä uudelleen"
},

View File

@ -133,9 +133,6 @@
"connect": {
"message": "Kumonekta"
},
"connectHardwareWallet": {
"message": "Magkonekta ng Hardware Wallet"
},
"connectingTo": {
"message": "Kumokonekta sa $1"
},
@ -172,9 +169,6 @@
"create": {
"message": "Gumawa"
},
"createAccount": {
"message": "Gumawa ng Account"
},
"createPassword": {
"message": "Gumawa ng Password"
},
@ -725,10 +719,6 @@
"transferFrom": {
"message": "I-transfer Mula Sa"
},
"troubleTokenBalances": {
"message": "Nagkaroon kami ng problema sa pag-loading sa iyong mga token balance. Makikita mo ang mga iyon ",
"description": "Followed by a link (here) to view token balances"
},
"tryAgain": {
"message": "Subukang muli"
},

View File

@ -642,9 +642,6 @@
"connectAccountOrCreate": {
"message": "Connecter un compte ou en créer un nouveau"
},
"connectHardwareWallet": {
"message": "Connecter un portefeuille matériel"
},
"connectManually": {
"message": "Se connecter manuellement au site actuel"
},
@ -789,9 +786,6 @@
"create": {
"message": "Créer"
},
"createAccount": {
"message": "Créer un compte"
},
"createNewWallet": {
"message": "Créer un nouveau portefeuille"
},
@ -1636,9 +1630,6 @@
"importTokenWarning": {
"message": "Tout un chacun peut créer un jeton avec nimporte quel nom, y compris de fausses versions de jetons existants. Ajoutez et échangez avec prudence!"
},
"importTokens": {
"message": "importer des jetons"
},
"importTokensCamelCase": {
"message": "Importer des jetons"
},
@ -1990,9 +1981,6 @@
"missingSettingRequest": {
"message": "Demandez ici"
},
"missingToken": {
"message": "Vous ne voyez pas votre jeton?"
},
"moreComingSoon": {
"message": "Dautres à venir..."
},
@ -2235,9 +2223,6 @@
"notEnoughGas": {
"message": "Pas assez de gaz"
},
"notifications": {
"message": "Notifications"
},
"notifications10ActionText": {
"message": "Ouvrir les paramètres",
"description": "The 'call to action' on the button, or link, of the 'Visit in Settings' notification. Upon clicking, users will be taken to Settings page."
@ -3214,9 +3199,6 @@
"showHexDataDescription": {
"message": "Selectionner ici pour afficher le champs de données hex dans lécran denvoi"
},
"showHide": {
"message": "Afficher/masquer"
},
"showIncomingTransactions": {
"message": "Afficher les transactions entrantes"
},
@ -3416,9 +3398,6 @@
"status": {
"message": "État"
},
"statusConnected": {
"message": "Connecté"
},
"statusNotConnected": {
"message": "Non connecté"
},
@ -3923,10 +3902,6 @@
"toggleEthSignField": {
"message": "Activer/Désactiver les requêtes eth-sign"
},
"toggleTestNetworks": {
"message": "$1 réseaux de test",
"description": "$1 is a clickable link with text defined by the 'showHide' key. The link will open Settings > Advanced where users can enable the display of test networks in the network dropdown."
},
"token": {
"message": "Jeton"
},
@ -4106,10 +4081,6 @@
"troubleStarting": {
"message": "Impossible de démarrer MetaMask. Cette erreur peut être occasionnelle, essayez donc de redémarrer lextension."
},
"troubleTokenBalances": {
"message": "Nous avons eu du mal à charger votre balance de jetons, vous pouvez la consulter ici :",
"description": "Followed by a link (here) to view token balances"
},
"trustSiteApprovePermission": {
"message": "En accordant cette autorisation, vous permettez au(x) $1 suivant(s) daccéder à vos fonds"
},

View File

@ -154,9 +154,6 @@
"connect": {
"message": "התחברות"
},
"connectHardwareWallet": {
"message": "חבר ארנק חומרה"
},
"connectingTo": {
"message": "מתחבר ל- $1 "
},
@ -193,9 +190,6 @@
"create": {
"message": "צור"
},
"createAccount": {
"message": "פתיחת חשבון"
},
"createPassword": {
"message": "יצירת ססמה"
},
@ -810,10 +804,6 @@
"transferFrom": {
"message": "העברה מ-"
},
"troubleTokenBalances": {
"message": "לא הצלחנו לטעון את יתרות הטוקנים שלך. באפשרותך להציג אותן",
"description": "Followed by a link (here) to view token balances"
},
"tryAgain": {
"message": "ניסיון חוזר"
},

View File

@ -642,9 +642,6 @@
"connectAccountOrCreate": {
"message": "खाता कनेक्ट करें या नया बनाएं"
},
"connectHardwareWallet": {
"message": "हार्डवेयर वॉलेट कनेक्ट करें"
},
"connectManually": {
"message": "वर्तमान साइट से मैन्युअल रूप से कनेक्ट करें"
},
@ -789,9 +786,6 @@
"create": {
"message": "बनाएं"
},
"createAccount": {
"message": "अकाउंट बनाएं"
},
"createNewWallet": {
"message": "एक नया वॉलेट बनाएं"
},
@ -1636,9 +1630,6 @@
"importTokenWarning": {
"message": "कोई भी किसी भी नाम के साथ एक टोकन बना सकता है, जिसमें मौजूदा टोकन के नकली संस्करण शामिल हैं। अपने जोखिम पर जोड़ें और व्यापार करें!"
},
"importTokens": {
"message": "टोकन आयात करें"
},
"importTokensCamelCase": {
"message": "टोकन आयात करें"
},
@ -1990,9 +1981,6 @@
"missingSettingRequest": {
"message": "यहां अनुरोध करें"
},
"missingToken": {
"message": "क्या अपना टोकन नहीं देख रहे हैं?"
},
"moreComingSoon": {
"message": "और अधिक जल्द ही आ रहा..."
},
@ -2235,9 +2223,6 @@
"notEnoughGas": {
"message": "पर्याप्त गैस नहीं"
},
"notifications": {
"message": "सूचनाएं"
},
"notifications10ActionText": {
"message": "सेटिंग्स में जाएं",
"description": "The 'call to action' on the button, or link, of the 'Visit in Settings' notification. Upon clicking, users will be taken to Settings page."
@ -3214,9 +3199,6 @@
"showHexDataDescription": {
"message": "भेजने की स्क्रीन पर हेक्स डेटा फील्ड दिखाने के लिए इसका चयन करें"
},
"showHide": {
"message": "दिखाएं/छिपाएं"
},
"showIncomingTransactions": {
"message": "आने वाले लेन-देन दिखाएं"
},
@ -3416,9 +3398,6 @@
"status": {
"message": "स्टेटस"
},
"statusConnected": {
"message": "कनेक्ट किया गया"
},
"statusNotConnected": {
"message": "कनेक्ट नहीं है"
},
@ -3923,10 +3902,6 @@
"toggleEthSignField": {
"message": "Eth_sign अनुरोधों को टॉगल करें"
},
"toggleTestNetworks": {
"message": "$1 परीक्षण नेटवर्क",
"description": "$1 is a clickable link with text defined by the 'showHide' key. The link will open Settings > Advanced where users can enable the display of test networks in the network dropdown."
},
"token": {
"message": "टोकन"
},
@ -4106,10 +4081,6 @@
"troubleStarting": {
"message": "MetaMask को शुरू करने में परेशानी आई। यह त्रुटि रुक-रुक कर हो सकती है, इसलिए एक्सटेंशन को फिर से शुरू करके देखें।"
},
"troubleTokenBalances": {
"message": "हमें आपके टोकन की शेषराशि लोड करने में परेशानी हुई। आप उन्हें देख सकते हैं ",
"description": "Followed by a link (here) to view token balances"
},
"trustSiteApprovePermission": {
"message": "अनुमति प्रदान करके, आप निम्नलिखित $1 को अपने फंड तक पहुंचने की इजाजत दे रहे हैं"
},

View File

@ -69,9 +69,6 @@
"create": {
"message": "बनाएं"
},
"createAccount": {
"message": "खाता बनाएं"
},
"decimal": {
"message": "दशमलव परिशुद्धता"
},
@ -323,10 +320,6 @@
"total": {
"message": "कुल"
},
"troubleTokenBalances": {
"message": "मुसीबत... आपके टोकन शेष राशि को लोड करने में हमें परेशानी हुई थी। आप उन्हें देख सकते हैं",
"description": "Followed by a link (here) to view token balances"
},
"typePassword": {
"message": "अपना पासवर्ड टाइप करें"
},

View File

@ -154,9 +154,6 @@
"connect": {
"message": "Povežite se"
},
"connectHardwareWallet": {
"message": "Poveži hardverski novčanik"
},
"connectingTo": {
"message": "Povezivanje na $1"
},
@ -193,9 +190,6 @@
"create": {
"message": "Stvori"
},
"createAccount": {
"message": "Stvori račun"
},
"createPassword": {
"message": "Stvori lozinku"
},
@ -803,10 +797,6 @@
"transferFrom": {
"message": "Prenesi od"
},
"troubleTokenBalances": {
"message": "Imamo problema s učitavanjem raspoloživog stanja vaših tokena. Možete ih vidjeti",
"description": "Followed by a link (here) to view token balances"
},
"tryAgain": {
"message": "Pokušaj ponovo"
},

View File

@ -96,9 +96,6 @@
"connect": {
"message": "Konekte"
},
"connectHardwareWallet": {
"message": "Konekte Materyèl Wallet"
},
"connectingToMainnet": {
"message": "Konekte ak Prensipal Ethereum Rezo a"
},
@ -120,9 +117,6 @@
"create": {
"message": "Kreye"
},
"createAccount": {
"message": "Kreye Kont"
},
"currentLanguage": {
"message": "Lang Aktyèl"
},
@ -563,10 +557,6 @@
"transfer": {
"message": "Transfè"
},
"troubleTokenBalances": {
"message": "Nou te gen pwoblèm chaje balans token ou. Ou ka wè yo ",
"description": "Followed by a link (here) to view token balances"
},
"tryAgain": {
"message": "Eseye anko"
},

View File

@ -154,9 +154,6 @@
"connect": {
"message": "Csatlakozás"
},
"connectHardwareWallet": {
"message": "Hardverpénztárca csatlakoztatása"
},
"connectingTo": {
"message": "Kapcsolódás: $1"
},
@ -193,9 +190,6 @@
"create": {
"message": "Létrehozás"
},
"createAccount": {
"message": "Fiók létrehozása"
},
"createPassword": {
"message": "Jelszó létrehozása"
},
@ -803,10 +797,6 @@
"transferFrom": {
"message": "Átvezetés innen: "
},
"troubleTokenBalances": {
"message": "Gondjaink voltak tokenegyenlegeid betöltésével. Megtekintheted őket",
"description": "Followed by a link (here) to view token balances"
},
"tryAgain": {
"message": "Újra"
},

View File

@ -642,9 +642,6 @@
"connectAccountOrCreate": {
"message": "Hubungkan akun atau buat baru"
},
"connectHardwareWallet": {
"message": "Hubungkan dompet perangkat keras"
},
"connectManually": {
"message": "Hubungkan ke situs saat ini secara manual"
},
@ -789,9 +786,6 @@
"create": {
"message": "Buat"
},
"createAccount": {
"message": "Buat akun"
},
"createNewWallet": {
"message": "Buat dompet baru"
},
@ -1636,9 +1630,6 @@
"importTokenWarning": {
"message": "Siapa pun dapat membuat token dengan nama apa pun, termasuk versi palsu dari token yang ada. Tambahkan dan perdagangkan dengan risiko ditanggung sendiri!"
},
"importTokens": {
"message": "impor token"
},
"importTokensCamelCase": {
"message": "Impor token"
},
@ -1990,9 +1981,6 @@
"missingSettingRequest": {
"message": "Minta di sini"
},
"missingToken": {
"message": "Tidak melihat token Anda?"
},
"moreComingSoon": {
"message": "Selanjutnya akan segera hadir..."
},
@ -2235,9 +2223,6 @@
"notEnoughGas": {
"message": "Gas tidak cukup"
},
"notifications": {
"message": "Notifikasi"
},
"notifications10ActionText": {
"message": "Lihat di Pengaturan",
"description": "The 'call to action' on the button, or link, of the 'Visit in Settings' notification. Upon clicking, users will be taken to Settings page."
@ -3214,9 +3199,6 @@
"showHexDataDescription": {
"message": "Pilih ini untuk menampilkan bidang data hex di layar kirim"
},
"showHide": {
"message": "Tampil/Sembunyi"
},
"showIncomingTransactions": {
"message": "Tampilkan transaksi masuk"
},
@ -3416,9 +3398,6 @@
"status": {
"message": "Status"
},
"statusConnected": {
"message": "Terhubung"
},
"statusNotConnected": {
"message": "Tidak terhubung"
},
@ -3923,10 +3902,6 @@
"toggleEthSignField": {
"message": "Alihkan permintaan eth_sign"
},
"toggleTestNetworks": {
"message": "$1 jaringan pengujian",
"description": "$1 is a clickable link with text defined by the 'showHide' key. The link will open Settings > Advanced where users can enable the display of test networks in the network dropdown."
},
"token": {
"message": "Token"
},
@ -4106,10 +4081,6 @@
"troubleStarting": {
"message": "MetaMask mengalami masalah saat memulai. Kesalahan ini dapat terjadi berselang, coba mulai ulang ekstensi."
},
"troubleTokenBalances": {
"message": "Kami mengalami masalah saat memuat saldo token Anda. Anda dapat melihatnya ",
"description": "Followed by a link (here) to view token balances"
},
"trustSiteApprovePermission": {
"message": "Dengan memberikan izin, Anda mengizinkan $1 berikut untuk mengakses dana Anda"
},

View File

@ -485,9 +485,6 @@
"connectAccountOrCreate": {
"message": "Connetti un account o creane uno nuovo"
},
"connectHardwareWallet": {
"message": "Connetti Portafoglio Hardware"
},
"connectManually": {
"message": "Connettiti al sito manualmente"
},
@ -616,9 +613,6 @@
"create": {
"message": "Crea"
},
"createAccount": {
"message": "Crea Account"
},
"createNewWallet": {
"message": "Crea un nuovo portafoglio"
},
@ -1540,9 +1534,6 @@
"stateLogsDescription": {
"message": "I log di stato contengono i tuoi indirizzi pubblici e le transazioni effettuate."
},
"statusConnected": {
"message": "Connesso"
},
"statusNotConnected": {
"message": "Non connesso"
},
@ -1843,10 +1834,6 @@
"message": "Abbiamo riscontrato un errore nella connessione a $1, guarda la documentazione $2 e prova di nuovo.",
"description": "$1 is the wallet device name; $2 is a link to wallet connection guide"
},
"troubleTokenBalances": {
"message": "Abbiamo avuto un problema a caricare il bilancio dei tuoi token. Puoi vederlo ",
"description": "Followed by a link (here) to view token balances"
},
"tryAgain": {
"message": "Prova di nuovo"
},

View File

@ -642,9 +642,6 @@
"connectAccountOrCreate": {
"message": "アカウントを接続するか、または新規に作成します"
},
"connectHardwareWallet": {
"message": "ハードウェアウォレットの接続"
},
"connectManually": {
"message": "現在のサイトに手動で接続"
},
@ -789,9 +786,6 @@
"create": {
"message": "作成"
},
"createAccount": {
"message": "アカウントを作成"
},
"createNewWallet": {
"message": "新規ウォレットを作成"
},
@ -1636,9 +1630,6 @@
"importTokenWarning": {
"message": "誰でも既存のトークンの偽バージョンを含めて、任意の名前でトークンを作成することができます。追加および取引は自己責任となります!"
},
"importTokens": {
"message": "トークンをインポート"
},
"importTokensCamelCase": {
"message": "トークンをインポート"
},
@ -1990,9 +1981,6 @@
"missingSettingRequest": {
"message": "ここからリクエスト"
},
"missingToken": {
"message": "トークンが見当たりませんか?"
},
"moreComingSoon": {
"message": "さらに近日追加予定..."
},
@ -2235,9 +2223,6 @@
"notEnoughGas": {
"message": "ガスが不足しています"
},
"notifications": {
"message": "通知"
},
"notifications10ActionText": {
"message": "設定に移動",
"description": "The 'call to action' on the button, or link, of the 'Visit in Settings' notification. Upon clicking, users will be taken to Settings page."
@ -3214,9 +3199,6 @@
"showHexDataDescription": {
"message": "これを選択すると、送金画面に16進データフィールドが表示されます"
},
"showHide": {
"message": "表示・非表示"
},
"showIncomingTransactions": {
"message": "受信トランザクションを表示"
},
@ -3416,9 +3398,6 @@
"status": {
"message": "ステータス"
},
"statusConnected": {
"message": "接続済み"
},
"statusNotConnected": {
"message": "未接続"
},
@ -3923,10 +3902,6 @@
"toggleEthSignField": {
"message": "eth_sign 要求の設定"
},
"toggleTestNetworks": {
"message": "$1テストネットワーク",
"description": "$1 is a clickable link with text defined by the 'showHide' key. The link will open Settings > Advanced where users can enable the display of test networks in the network dropdown."
},
"token": {
"message": "トークン"
},
@ -4106,10 +4081,6 @@
"troubleStarting": {
"message": "MetaMask がうまく起動しませんでした。このエラーは断続的に発生する可能性があるため、拡張機能を再起動してみてください。"
},
"troubleTokenBalances": {
"message": "トークンバランスのロードに問題があります。トークンバランスを表示できます",
"description": "Followed by a link (here) to view token balances"
},
"trustSiteApprovePermission": {
"message": "パーミッションを付与することで、次の$1による資金へのアクセスが許可されます"
},

View File

@ -154,9 +154,6 @@
"connect": {
"message": "ಸಂಪರ್ಕಿಸು"
},
"connectHardwareWallet": {
"message": "ಹಾರ್ಡ್‌ವೆರ್ ವ್ಯಾಲೆಟ್‌‌ಗೆ ಸಂಪರ್ಕಪಡಿಸಿ"
},
"connectingTo": {
"message": "$1 ಗೆ ಸಂಪರ್ಕಪಡಿಸಲಾಗುತ್ತಿದೆ"
},
@ -193,9 +190,6 @@
"create": {
"message": "ರಚಿಸಿ"
},
"createAccount": {
"message": "ಖಾತೆಯನ್ನು ರಚಿಸಿ"
},
"createPassword": {
"message": "ಪಾಸ್‌ವರ್ಡ್ ರಚಿಸಿ"
},
@ -813,10 +807,6 @@
"transferFrom": {
"message": "ಇದರಿಂದ ವರ್ಗಾಯಿಸಿ"
},
"troubleTokenBalances": {
"message": "ನಿಮ್ಮ ಟೋಕನ್ ಬ್ಯಾಲೆನ್ಸ್‌ಗಳನ್ನು ಲೋಡ್ ಮಾಡುವಲ್ಲಿ ನಮಗೆ ಸಮಸ್ಯೆಯಾಗಿದೆ. ನೀವು ಅವುಗಳನ್ನು ನೋಡಬಹುದು",
"description": "Followed by a link (here) to view token balances"
},
"tryAgain": {
"message": "ಪುನಃ ಪ್ರಯತ್ನಿಸಿ"
},

View File

@ -642,9 +642,6 @@
"connectAccountOrCreate": {
"message": "계정 연결 또는 새 계정 만들기"
},
"connectHardwareWallet": {
"message": "하드웨어 지갑 연결"
},
"connectManually": {
"message": "현재 사이트에 수동으로 연결"
},
@ -789,9 +786,6 @@
"create": {
"message": "생성"
},
"createAccount": {
"message": "계정 생성"
},
"createNewWallet": {
"message": "새 지갑 생성"
},
@ -1636,9 +1630,6 @@
"importTokenWarning": {
"message": "기존 토큰의 가짜 버전을 포함하여 누구나 어떤 이름으로든 토큰을 만들 수 있습니다. 추가 및 거래는 사용자의 책임입니다."
},
"importTokens": {
"message": "토큰 가져오기"
},
"importTokensCamelCase": {
"message": "토큰 가져오기"
},
@ -1990,9 +1981,6 @@
"missingSettingRequest": {
"message": "여기에서 요청하세요"
},
"missingToken": {
"message": "토큰이 보이지 않나요?"
},
"moreComingSoon": {
"message": "더 추가 예정..."
},
@ -2235,9 +2223,6 @@
"notEnoughGas": {
"message": "가스 부족"
},
"notifications": {
"message": "알림"
},
"notifications10ActionText": {
"message": "설정으로 이동하기",
"description": "The 'call to action' on the button, or link, of the 'Visit in Settings' notification. Upon clicking, users will be taken to Settings page."
@ -3214,9 +3199,6 @@
"showHexDataDescription": {
"message": "이 항목을 선택하면 보내기 화면에 16진수 데이터 필드가 표시됩니다."
},
"showHide": {
"message": "보기/숨기기"
},
"showIncomingTransactions": {
"message": "수신 거래 표시"
},
@ -3416,9 +3398,6 @@
"status": {
"message": "상태"
},
"statusConnected": {
"message": "연결됨"
},
"statusNotConnected": {
"message": "연결되지 않음"
},
@ -3923,10 +3902,6 @@
"toggleEthSignField": {
"message": "eth_sign 요청 토글"
},
"toggleTestNetworks": {
"message": "$1 테스트 네트워크",
"description": "$1 is a clickable link with text defined by the 'showHide' key. The link will open Settings > Advanced where users can enable the display of test networks in the network dropdown."
},
"token": {
"message": "토큰"
},
@ -4106,10 +4081,6 @@
"troubleStarting": {
"message": "MetaMask 실행 중 오류가 발생했습니다. 일시적인 오류일 수 있으니 확장 프로그램을 재시작해 보세요."
},
"troubleTokenBalances": {
"message": "토큰 잔액을 로드하는 도중 문제가 발생했습니다. 다음에서 잔액을 확인하세요. ",
"description": "Followed by a link (here) to view token balances"
},
"trustSiteApprovePermission": {
"message": "권한을 부여하면 다음 $1이(가) 귀하의 자금에 액세스할 수 있습니다."
},

View File

@ -154,9 +154,6 @@
"connect": {
"message": "Prisijungti"
},
"connectHardwareWallet": {
"message": "Susieti aparatinės įrangos slaptažodinę"
},
"connectingTo": {
"message": "Jungiamasi prie $1"
},
@ -193,9 +190,6 @@
"create": {
"message": "Sukurti"
},
"createAccount": {
"message": "Sukurti paskyrą"
},
"createPassword": {
"message": "Sukurti slaptažodį"
},
@ -813,10 +807,6 @@
"transferFrom": {
"message": "Pervedimas iš"
},
"troubleTokenBalances": {
"message": "Susidurta su sunkumais įkeliant jūsų žetonų likučius. Galite juos peržiūrėti ",
"description": "Followed by a link (here) to view token balances"
},
"tryAgain": {
"message": "Bandyti dar kartą"
},

View File

@ -154,9 +154,6 @@
"connect": {
"message": "Pievienošana"
},
"connectHardwareWallet": {
"message": "Pieslēgt aparatūras maku"
},
"connectingTo": {
"message": "Pieslēdzas $1"
},
@ -193,9 +190,6 @@
"create": {
"message": "Izveidot"
},
"createAccount": {
"message": "Izveidot kontu"
},
"createPassword": {
"message": "Izveidot paroli"
},
@ -809,10 +803,6 @@
"transferFrom": {
"message": "Nosūtīt no"
},
"troubleTokenBalances": {
"message": "Mums neizdevās ielādēt marķieru bilanci. Varat tos skatīt",
"description": "Followed by a link (here) to view token balances"
},
"tryAgain": {
"message": "Mēģināt vēlreiz"
},

View File

@ -154,9 +154,6 @@
"connect": {
"message": "Sambung"
},
"connectHardwareWallet": {
"message": "Sambungkan Dompet Perkakasan"
},
"connectingTo": {
"message": "Menyambungkan kepada $1"
},
@ -193,9 +190,6 @@
"create": {
"message": "Cipta"
},
"createAccount": {
"message": "Cipta Akaun"
},
"createPassword": {
"message": "Cipta Kata Laluan"
},
@ -790,10 +784,6 @@
"transferFrom": {
"message": "Pindah Daripada"
},
"troubleTokenBalances": {
"message": "Kami menghadapi masalah memuatkan baki token anda. Anda boleh melihatnya",
"description": "Followed by a link (here) to view token balances"
},
"tryAgain": {
"message": "Cuba lagi"
},

View File

@ -69,9 +69,6 @@
"create": {
"message": "creëren"
},
"createAccount": {
"message": "Account aanmaken"
},
"decimal": {
"message": "Decimalen van precisie"
},
@ -313,10 +310,6 @@
"total": {
"message": "Totaal"
},
"troubleTokenBalances": {
"message": "We hadden problemen bij het laden van uw tokenbalansen. Je kunt ze bekijken",
"description": "Followed by a link (here) to view token balances"
},
"typePassword": {
"message": "Typ uw wachtwoord"
},

View File

@ -151,9 +151,6 @@
"connect": {
"message": "Koble til"
},
"connectHardwareWallet": {
"message": "Koble til maskinvarelommebok"
},
"connectingTo": {
"message": "Forbinder til $1 "
},
@ -190,9 +187,6 @@
"create": {
"message": "Opprett"
},
"createAccount": {
"message": "Opprett konto"
},
"createPassword": {
"message": "Opprett passord "
},
@ -788,10 +782,6 @@
"transferFrom": {
"message": "Overfør fra"
},
"troubleTokenBalances": {
"message": "Vi hadde problemer med å laste inn sjetongsaldoen din. Du kan se dem",
"description": "Followed by a link (here) to view token balances"
},
"tryAgain": {
"message": "Prøv igjen"
},

View File

@ -252,9 +252,6 @@
"connectAccountOrCreate": {
"message": "Ikonekta ang account o gumawa ng bago"
},
"connectHardwareWallet": {
"message": "Ikonekta ang Hardware Wallet"
},
"connectManually": {
"message": "Manu-manong kumonekta sa kasalukuyang site"
},
@ -356,9 +353,6 @@
"create": {
"message": "Gumawa"
},
"createAccount": {
"message": "Gumawa ng Account"
},
"createPassword": {
"message": "Gumawa ng Password"
},
@ -1394,9 +1388,6 @@
"stateLogsDescription": {
"message": "Naglalaman ang mga log ng estado ng iyong mga address ng pampublikong account at ipinadalang transaksyon."
},
"statusConnected": {
"message": "Nakakonekta"
},
"statusNotConnected": {
"message": "Hindi nakakonekta"
},
@ -1797,10 +1788,6 @@
"message": "Nagkaproblema kami sa pagkonekta sa iyong $1, subukang suriin ang $2 at subukan ulit.",
"description": "$1 is the wallet device name; $2 is a link to wallet connection guide"
},
"troubleTokenBalances": {
"message": "Nagkaproblema kami sa pag-load ng mga balanse ng iyong token. Puwede mong tingnan ang mga iyon ",
"description": "Followed by a link (here) to view token balances"
},
"tryAgain": {
"message": "Subukan ulit"
},

View File

@ -154,9 +154,6 @@
"connect": {
"message": "Połącz"
},
"connectHardwareWallet": {
"message": "Podłącz portfel sprzętowy"
},
"connectingTo": {
"message": "Łączenie z $1"
},
@ -193,9 +190,6 @@
"create": {
"message": "Utwórz"
},
"createAccount": {
"message": "Utwórz konto"
},
"createPassword": {
"message": "Utwórz hasło"
},
@ -801,10 +795,6 @@
"transferFrom": {
"message": "Przelew z"
},
"troubleTokenBalances": {
"message": "Wystąpił problem z załadowaniem informacji o Twoich tokenach. Można je zobaczyć ",
"description": "Followed by a link (here) to view token balances"
},
"tryAgain": {
"message": "Spróbuj ponownie"
},

View File

@ -642,9 +642,6 @@
"connectAccountOrCreate": {
"message": "Conectar conta ou criar nova"
},
"connectHardwareWallet": {
"message": "Conectar carteira de hardware"
},
"connectManually": {
"message": "Conectar manualmente ao site atual"
},
@ -789,9 +786,6 @@
"create": {
"message": "Criar"
},
"createAccount": {
"message": "Criar conta"
},
"createNewWallet": {
"message": "Criar uma nova carteira"
},
@ -1636,9 +1630,6 @@
"importTokenWarning": {
"message": "Qualquer pessoa pode criar um token com qualquer nome, incluindo versões falsas de tokens existentes. Adicione e negocie por sua conta e risco!"
},
"importTokens": {
"message": "importar tokens"
},
"importTokensCamelCase": {
"message": "Importar tokens"
},
@ -1990,9 +1981,6 @@
"missingSettingRequest": {
"message": "Solicite aqui"
},
"missingToken": {
"message": "Não está vendo seu token?"
},
"moreComingSoon": {
"message": "Mais em breve..."
},
@ -2235,9 +2223,6 @@
"notEnoughGas": {
"message": "Não há gás suficiente"
},
"notifications": {
"message": "Notificações"
},
"notifications10ActionText": {
"message": "Visite nas configurações",
"description": "The 'call to action' on the button, or link, of the 'Visit in Settings' notification. Upon clicking, users will be taken to Settings page."
@ -3214,9 +3199,6 @@
"showHexDataDescription": {
"message": "Selecione essa opção para mostrar o campo de dados hexadecimais na tela de envio"
},
"showHide": {
"message": "Mostrar/ocultar"
},
"showIncomingTransactions": {
"message": "Mostrar transações recebidas"
},
@ -3416,9 +3398,6 @@
"status": {
"message": "Status"
},
"statusConnected": {
"message": "Conectado"
},
"statusNotConnected": {
"message": "Não conectado"
},
@ -3923,10 +3902,6 @@
"toggleEthSignField": {
"message": "Ativar/desativar solicitações eth_sign"
},
"toggleTestNetworks": {
"message": "$1 redes de teste",
"description": "$1 is a clickable link with text defined by the 'showHide' key. The link will open Settings > Advanced where users can enable the display of test networks in the network dropdown."
},
"token": {
"message": "Token"
},
@ -4106,10 +4081,6 @@
"troubleStarting": {
"message": "A MetaMask teve problemas para iniciar. Esse erro pode ser intermitente, por isso tente reiniciar a extensão."
},
"troubleTokenBalances": {
"message": "Tivemos um problema a carregar o balanço dos seus tokens. Pode vê-los em ",
"description": "Followed by a link (here) to view token balances"
},
"trustSiteApprovePermission": {
"message": "Ao conceder permissão, você estará autorizando que o $1 a seguir acesse seus fundos"
},

View File

@ -389,9 +389,6 @@
"connectAccountOrCreate": {
"message": "Conectar conta ou criar nova"
},
"connectHardwareWallet": {
"message": "Conectar carteira de hardware"
},
"connectManually": {
"message": "Conectar manualmente ao site atual"
},
@ -499,9 +496,6 @@
"create": {
"message": "Criar"
},
"createAccount": {
"message": "Criar conta"
},
"createNewWallet": {
"message": "Criar uma nova carteira"
},
@ -1091,9 +1085,6 @@
"importTokenWarning": {
"message": "Qualquer pessoa pode criar um token com qualquer nome, incluindo versões falsas de tokens existentes. Adicione e negocie por sua conta e risco!"
},
"importTokens": {
"message": "importar tokens"
},
"importTokensCamelCase": {
"message": "Importar tokens"
},
@ -1351,9 +1342,6 @@
"missingNFT": {
"message": "Não está vendo o seu NFT?"
},
"missingToken": {
"message": "Não está vendo o seu token?"
},
"mustSelectOne": {
"message": "Selecione pelo menos 1 token."
},
@ -2064,9 +2052,6 @@
"showHexDataDescription": {
"message": "Selecione essa opção para mostrar o campo de dados hexadecimais na tela de envio"
},
"showHide": {
"message": "Mostrar/ocultar"
},
"showIncomingTransactions": {
"message": "Mostrar transações recebidas"
},
@ -2168,9 +2153,6 @@
"stateLogsDescription": {
"message": "Os registros de estado contêm os endereços da sua conta pública e as transações enviadas."
},
"statusConnected": {
"message": "Conectado"
},
"statusNotConnected": {
"message": "Não conectado"
},
@ -2549,10 +2531,6 @@
"message": "Para: $1",
"description": "$1 is the address to include in the To label. It is typically shortened first using shortenAddress"
},
"toggleTestNetworks": {
"message": "$1 redes de teste",
"description": "$1 is a clickable link with text defined by the 'showHide' key. The link will open Settings > Advanced where users can enable the display of test networks in the network dropdown."
},
"token": {
"message": "Token"
},
@ -2692,10 +2670,6 @@
"message": "Tivemos dificuldade para conectar-nos à sua $1. Revise $2 e tente novamente.",
"description": "$1 is the wallet device name; $2 is a link to wallet connection guide"
},
"troubleTokenBalances": {
"message": "Tivemos dificuldade para carregar os saldos do seu token. Você pode vê-los ",
"description": "Followed by a link (here) to view token balances"
},
"trustSiteApprovePermission": {
"message": "Ao conceder permissão, você estará autorizando que o $1 a seguir acesse seus fundos"
},

View File

@ -154,9 +154,6 @@
"connect": {
"message": "Conectează-te"
},
"connectHardwareWallet": {
"message": "Conectare portofel hardware"
},
"connectingTo": {
"message": "Se conectează la $1"
},
@ -193,9 +190,6 @@
"create": {
"message": "Creați"
},
"createAccount": {
"message": "Creați cont"
},
"createPassword": {
"message": "Creare parolă"
},
@ -794,10 +788,6 @@
"transferFrom": {
"message": "Transferați de la"
},
"troubleTokenBalances": {
"message": "Am avut dificultăți cu încărcarea soldurilor dvs. de tokenuri. Le puteți vizualiza",
"description": "Followed by a link (here) to view token balances"
},
"tryAgain": {
"message": "Încearcă din nou"
},

View File

@ -642,9 +642,6 @@
"connectAccountOrCreate": {
"message": "Подключите счет или создайте новый"
},
"connectHardwareWallet": {
"message": "Подключить аппаратный кошелек"
},
"connectManually": {
"message": "Подключиться к текущему сайту вручную"
},
@ -789,9 +786,6 @@
"create": {
"message": "Создать"
},
"createAccount": {
"message": "Создать счет"
},
"createNewWallet": {
"message": "Создать новый кошелек"
},
@ -1636,9 +1630,6 @@
"importTokenWarning": {
"message": "Кто угодно может создать токен с любым именем, включая поддельные версии существующих токенов. Добавляйте и торгуйте на свой страх и риск!"
},
"importTokens": {
"message": "импорт токенов"
},
"importTokensCamelCase": {
"message": "Импорт токенов"
},
@ -1990,9 +1981,6 @@
"missingSettingRequest": {
"message": "Запросите здесь"
},
"missingToken": {
"message": "Не видите свой токен?"
},
"moreComingSoon": {
"message": "Скоро появится больше..."
},
@ -2235,9 +2223,6 @@
"notEnoughGas": {
"message": "Недостаточно газа"
},
"notifications": {
"message": "Уведомления"
},
"notifications10ActionText": {
"message": "Смотреть в настройках",
"description": "The 'call to action' on the button, or link, of the 'Visit in Settings' notification. Upon clicking, users will be taken to Settings page."
@ -3214,9 +3199,6 @@
"showHexDataDescription": {
"message": "Выберите эту опцию, чтобы отобразить поле шестнадцатеричных данных на экране отправки"
},
"showHide": {
"message": "Показать/скрыть"
},
"showIncomingTransactions": {
"message": "Показать входящие транзакции"
},
@ -3416,9 +3398,6 @@
"status": {
"message": "Статус"
},
"statusConnected": {
"message": "Подключено"
},
"statusNotConnected": {
"message": "Не подключено"
},
@ -3923,10 +3902,6 @@
"toggleEthSignField": {
"message": "Переключить запросы eth_sign"
},
"toggleTestNetworks": {
"message": "$1 тестовые сети",
"description": "$1 is a clickable link with text defined by the 'showHide' key. The link will open Settings > Advanced where users can enable the display of test networks in the network dropdown."
},
"token": {
"message": "Токен"
},
@ -4106,10 +4081,6 @@
"troubleStarting": {
"message": "У MetaMask возникли проблемы с запуском. Эта ошибка может быть непостоянной, поэтому попробуйте перезапустить расширение."
},
"troubleTokenBalances": {
"message": "У нас возникли проблемы с загрузкой вашего баланса токенов. Вы можете просмотреть их ",
"description": "Followed by a link (here) to view token balances"
},
"trustSiteApprovePermission": {
"message": "Давая разрешение, вы предоставляете следующему $1 доступ к вашим средствам."
},

View File

@ -148,9 +148,6 @@
"connect": {
"message": "Pripojenie"
},
"connectHardwareWallet": {
"message": "Pripojiť hardvérovú peňaženku"
},
"connectingTo": {
"message": "Pripája sa k $1"
},
@ -187,9 +184,6 @@
"create": {
"message": "Vytvořit"
},
"createAccount": {
"message": "Vytvořit účet"
},
"createPassword": {
"message": "Vytvoriť heslo"
},
@ -779,10 +773,6 @@
"transferFrom": {
"message": "Presun z"
},
"troubleTokenBalances": {
"message": "Měli jsme problém s načtením vašich tokenových zůstatků. Můžete je vidět ",
"description": "Followed by a link (here) to view token balances"
},
"tryAgain": {
"message": "Skúsiť znova"
},

View File

@ -154,9 +154,6 @@
"connect": {
"message": "Poveži"
},
"connectHardwareWallet": {
"message": "Poveži strojno denarnico"
},
"connectingTo": {
"message": "Povezovanje na $1"
},
@ -193,9 +190,6 @@
"create": {
"message": "Ustvari"
},
"createAccount": {
"message": "Ustvari račun"
},
"createPassword": {
"message": "Ustvari geslo"
},
@ -801,10 +795,6 @@
"transferFrom": {
"message": "Prenesi od"
},
"troubleTokenBalances": {
"message": "Če imate težave pri ogledu zneskov žetonov si jih lahko ogledate ",
"description": "Followed by a link (here) to view token balances"
},
"tryAgain": {
"message": "Poskusi znova"
},

View File

@ -151,9 +151,6 @@
"connect": {
"message": "Повезивање"
},
"connectHardwareWallet": {
"message": "Povežite Hardverski novčanik"
},
"connectingTo": {
"message": "Povezuje se na $1"
},
@ -190,9 +187,6 @@
"create": {
"message": "Направи"
},
"createAccount": {
"message": "Kreirajte nalog"
},
"createPassword": {
"message": "Kreirajte lozinku"
},
@ -801,10 +795,6 @@
"transferFrom": {
"message": "Prebacite iz"
},
"troubleTokenBalances": {
"message": "Imali smo problema sa učitavanjem bilansa Vaših tokena. Možete ih pogledati",
"description": "Followed by a link (here) to view token balances"
},
"tryAgain": {
"message": "Пробај поново"
},

View File

@ -148,9 +148,6 @@
"connect": {
"message": "Ansluta"
},
"connectHardwareWallet": {
"message": "Anslut hårdvaruplånbok"
},
"connectingTo": {
"message": "Ansluter till $1"
},
@ -187,9 +184,6 @@
"create": {
"message": "Skapa"
},
"createAccount": {
"message": "Skapa konto"
},
"createPassword": {
"message": "Skapa lösenord"
},
@ -788,10 +782,6 @@
"transferFrom": {
"message": "Överför från"
},
"troubleTokenBalances": {
"message": "Vi hade problem med att ladda dina token-saldon. Du kan se dem",
"description": "Followed by a link (here) to view token balances"
},
"tryAgain": {
"message": "Försök igen"
},

View File

@ -148,9 +148,6 @@
"connect": {
"message": "Unganisha"
},
"connectHardwareWallet": {
"message": "Unganisha Waleti ya Programu Maunzi"
},
"connectingTo": {
"message": "Inaunganisha kwenye $1"
},
@ -187,9 +184,6 @@
"create": {
"message": "Unda"
},
"createAccount": {
"message": "Fungua Akaunti"
},
"createPassword": {
"message": "Unda Nenosiri"
},
@ -791,10 +785,6 @@
"transferFrom": {
"message": "Tuma Kutoka"
},
"troubleTokenBalances": {
"message": "Tulipata shida kupakia salio lako la kianzio. Unaweza kuliona",
"description": "Followed by a link (here) to view token balances"
},
"tryAgain": {
"message": "Jaribu tena"
},

View File

@ -96,9 +96,6 @@
"create": {
"message": "உருவாக்கு"
},
"createAccount": {
"message": "உங்கள் கணக்கை துவங்குங்கள்"
},
"custom": {
"message": "மேம்பட்டவை"
},
@ -434,10 +431,6 @@
"transactionError": {
"message": "பரிவர்த்தனை பிழை. விதிமுறை ஒப்பந்தத்தில் விதிவிலக்கு."
},
"troubleTokenBalances": {
"message": "உங்கள் டோக்கன் நிலுவைகளை ஏற்றுவதில் சிக்கல் ஏற்பட்டது. நீங்கள் அவர்களை பார்க்க முடியும்.",
"description": "Followed by a link (here) to view token balances"
},
"tryAgain": {
"message": "மீண்டும் முயல்க"
},

View File

@ -87,9 +87,6 @@
"create": {
"message": "สร้าง"
},
"createAccount": {
"message": "สร้างบัญชี"
},
"currencyConversion": {
"message": "การแปลงสกุลเงิน"
},
@ -401,10 +398,6 @@
"transferBetweenAccounts": {
"message": "โอนระหว่างบัญชีของฉัน"
},
"troubleTokenBalances": {
"message": "เรามีปัญหาในการโหลดยอดโทเค็นคงเหลือของคุณ คุณสามารถดูได้ที่นี่",
"description": "Followed by a link (here) to view token balances"
},
"typePassword": {
"message": "พิมพ์รหัสผ่านของคุณ"
},

View File

@ -642,9 +642,6 @@
"connectAccountOrCreate": {
"message": "Ikonekta ang account o gumawa ng bago"
},
"connectHardwareWallet": {
"message": "Ikonekta ang hardware wallet"
},
"connectManually": {
"message": "Manu-manong kumonekta sa kasalukuyang site"
},
@ -789,9 +786,6 @@
"create": {
"message": "Gumawa"
},
"createAccount": {
"message": "Gumawa ng account"
},
"createNewWallet": {
"message": "Gumawa ng bagong wallet"
},
@ -1636,9 +1630,6 @@
"importTokenWarning": {
"message": "Sinumang ay maaaring lumikha ng token gamit ang alinmang pangalan, kabilang ang mga pekeng bersyon ng umiiral na mga token. Magdagdag at mag-trade sa sarili mong panganib!"
},
"importTokens": {
"message": "magdagdag ng mga token"
},
"importTokensCamelCase": {
"message": "Mag-import ng mga Token"
},
@ -1990,9 +1981,6 @@
"missingSettingRequest": {
"message": "Hilingin dito"
},
"missingToken": {
"message": "Hindi mo ba nakikita ang iyong mga token?"
},
"moreComingSoon": {
"message": "Marami pang parating..."
},
@ -2235,9 +2223,6 @@
"notEnoughGas": {
"message": "Hindi Sapat ang Gas"
},
"notifications": {
"message": "Mga Abiso"
},
"notifications10ActionText": {
"message": "Bisitahin sa mga setting",
"description": "The 'call to action' on the button, or link, of the 'Visit in Settings' notification. Upon clicking, users will be taken to Settings page."
@ -3214,9 +3199,6 @@
"showHexDataDescription": {
"message": "Piliin ito para ipakita ang field ng hex data sa screen ng pagpapadala"
},
"showHide": {
"message": "Ipakita/itago"
},
"showIncomingTransactions": {
"message": "Ipakita ang Mga Papasok na Transaksyon"
},
@ -3416,9 +3398,6 @@
"status": {
"message": "Istado"
},
"statusConnected": {
"message": "Nakakonekta"
},
"statusNotConnected": {
"message": "Hindi konektado"
},
@ -3923,10 +3902,6 @@
"toggleEthSignField": {
"message": "I-toggle ang mga kahilingan sa eth_sign"
},
"toggleTestNetworks": {
"message": "$1 na test network",
"description": "$1 is a clickable link with text defined by the 'showHide' key. The link will open Settings > Advanced where users can enable the display of test networks in the network dropdown."
},
"token": {
"message": "Token"
},
@ -4106,10 +4081,6 @@
"troubleStarting": {
"message": "Nagkaproblema ang MetaMask sa pagsisimula. Maaaring paulit-ulit ang error na ito, kaya subukang i-restart ang extension."
},
"troubleTokenBalances": {
"message": "Nagkaproblema kami sa pag-load ng mga balanse ng iyong token. Puwede mong tingnan ang mga iyon ",
"description": "Followed by a link (here) to view token balances"
},
"trustSiteApprovePermission": {
"message": "Sa pamamagitan ng pagbibigay ng pahintulot, pinapayagan mo ang sumusunod na $1 para ma-access ang pondo mo"
},

View File

@ -642,9 +642,6 @@
"connectAccountOrCreate": {
"message": "Hesabı bağla ya da yeni hesap oluştur"
},
"connectHardwareWallet": {
"message": "Donanım Cüzdanı Bağla"
},
"connectManually": {
"message": "Mevcut siteye manuel olarak bağlan"
},
@ -789,9 +786,6 @@
"create": {
"message": "Oluştur"
},
"createAccount": {
"message": "Hesap Oluştur"
},
"createNewWallet": {
"message": "Yeni bir cüzdan oluştur"
},
@ -1636,9 +1630,6 @@
"importTokenWarning": {
"message": "Herkes, mevcut tokenlerin sahte sürümleri de dahil olmak üzere herhangi bir ada sahip bir token oluşturabilir. Riski tamamen size ait olacak şekikde token ekleyin ve işlem yapın!"
},
"importTokens": {
"message": "tokenleri içe aktar"
},
"importTokensCamelCase": {
"message": "Tokenleri içe aktar"
},
@ -1990,9 +1981,6 @@
"missingSettingRequest": {
"message": "Buradan talep et"
},
"missingToken": {
"message": "Tokeninizi görmüyor musunuz?"
},
"moreComingSoon": {
"message": "Daha fazlası çok yakında..."
},
@ -2235,9 +2223,6 @@
"notEnoughGas": {
"message": "Yeterli gaz yok"
},
"notifications": {
"message": "Bildirimler"
},
"notifications10ActionText": {
"message": "Ayarlarda ziyaret et",
"description": "The 'call to action' on the button, or link, of the 'Visit in Settings' notification. Upon clicking, users will be taken to Settings page."
@ -3214,9 +3199,6 @@
"showHexDataDescription": {
"message": "Gönder ekranında on altılık veri alanını göstermek için bunu seçin"
},
"showHide": {
"message": "Göster/gizle"
},
"showIncomingTransactions": {
"message": "Gelen işlemleri göster"
},
@ -3416,9 +3398,6 @@
"status": {
"message": "Durum"
},
"statusConnected": {
"message": "Bağlandı"
},
"statusNotConnected": {
"message": "Bağlanmadı"
},
@ -3923,10 +3902,6 @@
"toggleEthSignField": {
"message": "eth_sign taleplerini değiştirin"
},
"toggleTestNetworks": {
"message": "Test ağlarını $1",
"description": "$1 is a clickable link with text defined by the 'showHide' key. The link will open Settings > Advanced where users can enable the display of test networks in the network dropdown."
},
"token": {
"message": "Token"
},
@ -4106,10 +4081,6 @@
"troubleStarting": {
"message": "MetaMask başlatılırken bir sorun oldu. Bu hata sürekli bir hata olmayabilir; bu yüzden uzantıyı yeniden başlatmayı dene."
},
"troubleTokenBalances": {
"message": "Token bakiyeleriniz yüklenirken sorun yaşadık. Burada görüntüleyebilirsiniz ",
"description": "Followed by a link (here) to view token balances"
},
"trustSiteApprovePermission": {
"message": "İzin verdiğinizde paranıza aşağıdaki $1 erişimine izin verirsiniz"
},

View File

@ -154,9 +154,6 @@
"connect": {
"message": "Під’єднатися"
},
"connectHardwareWallet": {
"message": "Приєднайте апаратний гаманець"
},
"connectingTo": {
"message": "Під'єднуємось до $1"
},
@ -193,9 +190,6 @@
"create": {
"message": "Створити"
},
"createAccount": {
"message": "Створити обліковий запис"
},
"createPassword": {
"message": "Створити пароль"
},
@ -813,10 +807,6 @@
"transferFrom": {
"message": "Передати від"
},
"troubleTokenBalances": {
"message": "В нас виникли складнощі при завантаженні ваших залишків токенів. Ви можете переглянути їх",
"description": "Followed by a link (here) to view token balances"
},
"tryAgain": {
"message": "Повторити"
},

View File

@ -642,9 +642,6 @@
"connectAccountOrCreate": {
"message": "Kết nối tài khoản hoặc tạo tài khoản mới"
},
"connectHardwareWallet": {
"message": "Kết nối với ví cứng"
},
"connectManually": {
"message": "Kết nối thủ công với trang web hiện tại"
},
@ -789,9 +786,6 @@
"create": {
"message": "Tạo"
},
"createAccount": {
"message": "Tạo tài khoản"
},
"createNewWallet": {
"message": "Tạo ví mới"
},
@ -1636,9 +1630,6 @@
"importTokenWarning": {
"message": "Bất kỳ ai cũng tạo được token bằng bất kỳ tên nào, kể cả phiên bản giả của token hiện có. Bạn tự chịu rủi ro khi thêm và giao dịch!"
},
"importTokens": {
"message": "nhập token"
},
"importTokensCamelCase": {
"message": "Nhập token"
},
@ -1990,9 +1981,6 @@
"missingSettingRequest": {
"message": "Yêu cầu tại đây"
},
"missingToken": {
"message": "Không thấy token của mình?"
},
"moreComingSoon": {
"message": "Sắp có thêm..."
},
@ -2235,9 +2223,6 @@
"notEnoughGas": {
"message": "Không đủ gas"
},
"notifications": {
"message": "Thông báo"
},
"notifications10ActionText": {
"message": "Xem trong phần Cài đặt",
"description": "The 'call to action' on the button, or link, of the 'Visit in Settings' notification. Upon clicking, users will be taken to Settings page."
@ -3214,9 +3199,6 @@
"showHexDataDescription": {
"message": "Chọn tùy chọn này để hiển thị trường dữ liệu thập lục phân trên màn hình gửi"
},
"showHide": {
"message": "Hiển thị/ẩn"
},
"showIncomingTransactions": {
"message": "Hiển thị các giao dịch đến"
},
@ -3416,9 +3398,6 @@
"status": {
"message": "Trạng thái"
},
"statusConnected": {
"message": "Đã kết nối"
},
"statusNotConnected": {
"message": "Chưa kết nối"
},
@ -3923,10 +3902,6 @@
"toggleEthSignField": {
"message": "Bật/tắt yêu cầu eth_sign"
},
"toggleTestNetworks": {
"message": "$1 mạng thử nghiệm",
"description": "$1 is a clickable link with text defined by the 'showHide' key. The link will open Settings > Advanced where users can enable the display of test networks in the network dropdown."
},
"token": {
"message": "Token"
},
@ -4106,10 +4081,6 @@
"troubleStarting": {
"message": "MetaMask đã gặp sự cố khi khởi động. Lỗi này có thể xảy ra không liên tục, vì vậy hãy thử khởi động lại tiện ích."
},
"troubleTokenBalances": {
"message": "Chúng tôi đã gặp phải vấn đề khi tải số dư token của bạn. Bạn có thể xem số dư ",
"description": "Followed by a link (here) to view token balances"
},
"trustSiteApprovePermission": {
"message": "Bằng cách cấp quyền, bạn cho phép $1 sau đây truy cập vào các khoản tiền của mình"
},

View File

@ -642,9 +642,6 @@
"connectAccountOrCreate": {
"message": "连接账户或创建新账户"
},
"connectHardwareWallet": {
"message": "连接硬件钱包"
},
"connectManually": {
"message": "手动连接到当前站点"
},
@ -789,9 +786,6 @@
"create": {
"message": "创建"
},
"createAccount": {
"message": "创建账户"
},
"createNewWallet": {
"message": "创建新钱包"
},
@ -1636,9 +1630,6 @@
"importTokenWarning": {
"message": "任何人都可以用任何名称创建代币,包括现有代币的虚假版本。添加和交易风险自负!"
},
"importTokens": {
"message": "添加资产"
},
"importTokensCamelCase": {
"message": "添加代币"
},
@ -1990,9 +1981,6 @@
"missingSettingRequest": {
"message": "在这里请求"
},
"missingToken": {
"message": "没有看到您的代币?"
},
"moreComingSoon": {
"message": "更多即将到来……"
},
@ -2235,9 +2223,6 @@
"notEnoughGas": {
"message": "燃料不足"
},
"notifications": {
"message": "通知"
},
"notifications10ActionText": {
"message": "在设置中访问",
"description": "The 'call to action' on the button, or link, of the 'Visit in Settings' notification. Upon clicking, users will be taken to Settings page."
@ -3214,9 +3199,6 @@
"showHexDataDescription": {
"message": "选择此项以在发送屏幕上显示十六进制数据字段"
},
"showHide": {
"message": "显示/隐藏"
},
"showIncomingTransactions": {
"message": "显示传入的交易"
},
@ -3416,9 +3398,6 @@
"status": {
"message": "状态"
},
"statusConnected": {
"message": "已连接"
},
"statusNotConnected": {
"message": "未连接"
},
@ -3923,10 +3902,6 @@
"toggleEthSignField": {
"message": "切换eth_sign请求"
},
"toggleTestNetworks": {
"message": "$1 测试网络",
"description": "$1 is a clickable link with text defined by the 'showHide' key. The link will open Settings > Advanced where users can enable the display of test networks in the network dropdown."
},
"token": {
"message": "代币"
},
@ -4106,10 +4081,6 @@
"troubleStarting": {
"message": "MetaMask无法启动。可能发生间歇性错误因此请尝试重新启动扩展程序。"
},
"troubleTokenBalances": {
"message": "我们在加载您的代币余额时遇到问题。您可以查看它们 ",
"description": "Followed by a link (here) to view token balances"
},
"trustSiteApprovePermission": {
"message": "通过授予权限,您允许以下 $1 访问您的资金"
},

View File

@ -251,9 +251,6 @@
"connectAccountOrCreate": {
"message": "連結帳戶或建立新的"
},
"connectHardwareWallet": {
"message": "連線硬體錢包"
},
"connectManually": {
"message": "手動連結到目前的網站"
},
@ -355,9 +352,6 @@
"create": {
"message": "建立"
},
"createAccount": {
"message": "建立帳戶"
},
"createPassword": {
"message": "建立密碼"
},
@ -1322,9 +1316,6 @@
"stateLogsDescription": {
"message": "狀態紀錄包含您的公開帳戶位址和已傳送的交易資訊"
},
"statusConnected": {
"message": "已連結"
},
"statusNotConnected": {
"message": "未連結"
},
@ -1473,10 +1464,6 @@
"message": "我們在連線到您的 $1 的時候遇到問題,試著檢查 $2 然後再試一次。",
"description": "$1 is the wallet device name; $2 is a link to wallet connection guide"
},
"troubleTokenBalances": {
"message": "無法取得代幣餘額。您可以到這裡查看 ",
"description": "Followed by a link (here) to view token balances"
},
"trustSiteApprovePermission": {
"message": "您信任這個網站嗎?當您授予這個權限,$1 就能提領您的 $2 並且代替您自動發送交易。"
},

View File

@ -153,7 +153,6 @@ env:
- SUPPORT_LINK: https://support.metamask.io
- SUPPORT_REQUEST_LINK: https://metamask.zendesk.com/hc/en-us
- SKIP_BACKGROUND_INITIALIZATION: false
- MULTICHAIN: false
# TODO(ritave): Move ManifestV3 into a feature?
- ENABLE_MV3: false

View File

@ -470,10 +470,6 @@
"ui/components/app/detected-token/detected-token-values/detected-token-values.test.js",
"ui/components/app/detected-token/detected-token.js",
"ui/components/app/detected-token/detected-token.test.js",
"ui/components/app/dropdowns/dropdown.js",
"ui/components/app/dropdowns/dropdown.test.js",
"ui/components/app/dropdowns/network-dropdown.js",
"ui/components/app/dropdowns/network-dropdown.test.js",
"ui/components/app/edit-gas-display/edit-gas-display.component.js",
"ui/components/app/edit-gas-display/edit-gas-display.stories.js",
"ui/components/app/edit-gas-display/edit-gas-display.test.js",

View File

@ -1,16 +0,0 @@
# Account Menu
The account menu is the popup menu which contains options such as:
- Logging out
- Switching accounts
- Creating a new account
- Importing an account
- Connecting a HW wallet
- Looking up info & help
- Adjusting settings
It can be seen below where it has been outlined with a red box
![Screenshot of account menu](https://i.imgur.com/xpkfIuR.png)
Above screenshot showing the menu bar in MetaMask 6.7.1

View File

@ -26,7 +26,7 @@ async function measurePage(pageName) {
await driver.navigate();
await driver.fill('#password', 'correct horse battery staple');
await driver.press('#password', driver.Key.ENTER);
await driver.findElement('.selected-account__name');
await driver.findElement('[data-testid="account-menu-icon"]');
await driver.navigate(pageName);
await driver.delay(1000);
metrics = await driver.collectMetrics();

View File

@ -496,12 +496,12 @@ const findAnotherAccountFromAccountList = async (
itemNumber,
accountName,
) => {
await driver.clickElement('.account-menu__icon');
const accountMenuItemSelector = `.account-menu__account:nth-child(${itemNumber})`;
const fourthAccountName = await driver.findElement(
`${accountMenuItemSelector} .account-menu__name`,
await driver.clickElement('[data-testid="account-menu-icon"]');
const accountMenuItemSelector = `.multichain-account-list-item:nth-child(${itemNumber})`;
const acctName = await driver.findElement(
`${accountMenuItemSelector} .multichain-account-list-item__account-name__button`,
);
assert.equal(await fourthAccountName.getText(), accountName);
assert.equal(await acctName.getText(), accountName);
return accountMenuItemSelector;
};

View File

@ -128,13 +128,13 @@ describe('MetaMask', function () {
describe('Import Secret Recovery Phrase', function () {
it('logs out of the vault', async function () {
await driver.clickElement('.account-menu__icon');
await driver.clickElement('[data-testid="account-options-menu-button"]');
await driver.delay(regularDelayMs);
const lockButton = await driver.findClickableElement(
'.account-menu__lock-button',
'[data-testid="global-menu-lock"]',
);
assert.equal(await lockButton.getText(), 'Lock');
assert.equal(await lockButton.getText(), 'Lock MetaMask');
await lockButton.click();
await driver.delay(regularDelayMs);
});
@ -163,7 +163,7 @@ describe('MetaMask', function () {
it('balance renders', async function () {
await driver.waitForSelector({
css: '[data-testid="wallet-balance"] .list-item__heading',
css: '[data-testid="eth-overview__primary-currency"] .currency-display-component__text',
text: '1000',
});
await driver.delay(regularDelayMs);
@ -246,7 +246,7 @@ describe('MetaMask', function () {
it('clicks on the import tokens button', async function () {
await driver.clickElement(`[data-testid="home__asset-tab"]`);
await driver.clickElement({ text: 'import tokens', tag: 'a' });
await driver.clickElement({ text: 'Import tokens', tag: 'button' });
await driver.delay(regularDelayMs);
});
@ -433,7 +433,7 @@ describe('MetaMask', function () {
});
await driver.waitForSelector({
css: '.asset-list-item__token-button',
css: '[data-testid="multichain-token-list-item-value"]',
text: '7.5 TST',
});

View File

@ -73,15 +73,13 @@ describe('Test Snap Management', function () {
await driver.switchToWindow(extensionPage);
await driver.delay(1000);
// click on the account menu icon
await driver.clickElement('.account-menu__icon');
await driver.delay(1000);
// click on the global action menu
await driver.clickElement(
'[data-testid="account-options-menu-button"]',
);
// try to click on the notification item
await driver.clickElement({
text: 'Settings',
tag: 'div',
});
await driver.clickElement({ text: 'Settings', tag: 'div' });
await driver.delay(1000);
// try to click on the snaps item
@ -129,10 +127,14 @@ describe('Test Snap Management', function () {
// check to see that there is one notification
await driver.switchToWindow(extensionPage);
await driver.delay(1000);
await driver.clickElement(
'[data-testid="account-options-menu-button"]',
);
const notificationResult = await driver.findElement(
'.account-menu__icon__notification-count',
'[data-testid="global-menu-notification-count"]',
);
assert.equal(await notificationResult.getText(), '1');
await driver.clickElement('.menu__background');
// try to remove snap
await driver.clickElement({

View File

@ -85,19 +85,25 @@ describe('Test Snap Notification', function () {
await driver.delay(1000);
// check to see that there is one notification
await driver.clickElement(
'[data-testid="account-options-menu-button"]',
);
const notificationResult = await driver.findElement(
'.account-menu__icon__notification-count',
'[data-testid="global-menu-notification-count"]',
);
assert.equal(await notificationResult.getText(), '1');
await driver.clickElement('.menu__background');
// try to click on the account menu icon (via xpath)
await driver.clickElement('.account-menu__icon');
await driver.clickElement(
'[data-testid="account-options-menu-button"]',
);
await driver.delay(500);
// try to click on the notification item (via xpath)
await driver.clickElement({
text: 'Notifications',
tag: 'div',
tag: 'span',
});
await driver.delay(500);

View File

@ -24,12 +24,11 @@ describe('Show account details', function () {
await driver.fill('#password', 'correct horse battery staple');
await driver.press('#password', driver.Key.ENTER);
await driver.clickElement('[data-testid="account-menu-icon"]');
await driver.clickElement(
'[data-testid="account-options-menu-button"]',
);
await driver.clickElement(
'[data-testid="account-options-menu__account-details"]',
'[data-testid="account-list-item-menu-button"]',
);
await driver.clickElement('[data-testid="account-list-menu-details"');
const qrCode = await driver.findElement('.qr-code__wrapper');
assert.equal(await qrCode.isDisplayed(), true);

View File

@ -37,13 +37,15 @@ describe('Add account', function () {
await driver.fill('#password', 'correct horse battery staple');
await driver.press('#password', driver.Key.ENTER);
await driver.clickElement('.account-menu__icon');
await driver.clickElement({ text: 'Create account', tag: 'div' });
await driver.clickElement('[data-testid="account-menu-icon"]');
await driver.clickElement(
'[data-testid="multichain-account-menu-add-account"]',
);
await driver.fill('.new-account-create-form input', '2nd account');
await driver.clickElement({ text: 'Create', tag: 'button' });
const accountName = await driver.waitForSelector({
css: '.selected-account__name',
css: '[data-testid="account-menu-icon"]',
text: '2nd',
});
assert.equal(await accountName.getText(), '2nd account');
@ -75,9 +77,10 @@ describe('Add account', function () {
await driver.delay(regularDelayMs);
// Create a new account
await driver.findClickableElement('.account-menu__icon');
await driver.clickElement('[data-testid="account-menu-icon"]');
await driver.clickElement({ text: 'Create account', tag: 'div' });
await driver.clickElement(
'[data-testid="multichain-account-menu-add-account"]',
);
await driver.fill('.new-account-create-form input', '2nd account');
await driver.clickElement({ text: 'Create', tag: 'button' });
@ -96,13 +99,12 @@ describe('Add account', function () {
await sendTransaction(driver, secondAccount, '2.8');
// Lock the account
await driver.clickElement('.account-menu__icon');
await driver.clickElement(
'[data-testid="account-options-menu-button"]',
);
await driver.delay(regularDelayMs);
const lockButton = await driver.findClickableElement(
'.account-menu__lock-button',
);
await lockButton.click();
await driver.clickElement('[data-testid="global-menu-lock"]');
await driver.delay(regularDelayMs);
// Recover via SRP in "forget password" option
@ -111,6 +113,7 @@ describe('Add account', function () {
);
await restoreSeedLink.click();
await driver.delay(regularDelayMs);
await driver.pasteIntoField(
@ -166,24 +169,30 @@ describe('Add account', function () {
await driver.delay(regularDelayMs);
await driver.clickElement('.account-menu__icon');
await driver.clickElement({ text: 'Create account', tag: 'div' });
await driver.clickElement('[data-testid="account-menu-icon"]');
await driver.clickElement(
'[data-testid="multichain-account-menu-add-account"]',
);
await driver.fill('.new-account-create-form input', '2nd account');
await driver.clickElement({ text: 'Create', tag: 'button' });
// Open account menu again
await driver.clickElement('[data-testid="account-menu-icon"]');
// Show account list menu for second account
await driver.clickElement(
'[data-testid="account-options-menu-button"]',
'.multichain-account-list-item--selected [data-testid="account-list-item-menu-button"]',
);
const menuItems = await driver.findElements('.menu-item');
assert.equal(menuItems.length, 3);
assert.equal(menuItems.length, 2);
// click out of menu
await driver.clickElement('.menu__background');
// import with private key
await driver.clickElement('.account-menu__icon');
await driver.clickElement({ text: 'Import account', tag: 'div' });
await driver.clickElement({ text: 'Import account', tag: 'button' });
// enter private key',
await driver.fill('#private-key-box', testPrivateKey);
@ -191,37 +200,47 @@ describe('Add account', function () {
// should show the correct account name
const importedAccountName = await driver.findElement(
'.selected-account__name',
'[data-testid="account-menu-icon"]',
);
assert.equal(await importedAccountName.getText(), 'Account 3');
// Open account menu again
await driver.clickElement('[data-testid="account-menu-icon"]');
// Show account list menu for second account
await driver.clickElement(
'[data-testid="account-options-menu-button"]',
'.multichain-account-list-item--selected [data-testid="account-list-item-menu-button"]',
);
const menuItems2 = await driver.findElements('.menu-item');
assert.equal(menuItems2.length, 4);
const importedMenuItems = await driver.findElements('.menu-item');
assert.equal(importedMenuItems.length, 3);
await driver.findElement(
'[data-testid="account-options-menu__remove-account"]',
);
await driver.findElement('[data-testid="account-list-menu-remove"]');
},
);
});
});
async function checkAccountDetails(driver) {
await driver.clickElement('[data-testid="account-options-menu-button"]');
await driver.clickElement(
'[data-testid="account-options-menu__account-details"]',
);
// Open account menu again
await driver.clickElement('[data-testid="account-menu-icon"]');
// Select account details for second account
await driver.clickElement(
'.multichain-account-list-item--selected [data-testid="account-list-item-menu-button"]',
);
await driver.clickElement('[data-testid="account-list-menu-details"]');
await driver.findVisibleElement('.popover-bg');
await driver.findVisibleElement('.account-details-modal');
// get the public address for the "second account"
const accountDOM = await driver.findElement('.qr-code__address');
const accountDOM = await driver.waitForSelector(
'.qr-code .multichain-address-copy-button',
);
const accountAddress = await accountDOM.getText();
await driver.clickElement('.account-modal__close');
await driver.waitForElementNotPresent('.account-details-modal ');
await driver.clickElement('button[aria-label="Close"]');
await driver.waitForElementNotPresent('.popover-bg');
return accountAddress;
}

View File

@ -1,6 +1,11 @@
const { strict: assert } = require('assert');
const FixtureBuilder = require('../fixture-builder');
const { convertToHexValue, withFixtures, openDapp } = require('../helpers');
const {
convertToHexValue,
withFixtures,
openDapp,
regularDelayMs,
} = require('../helpers');
describe('Custom network', function () {
const chainID = '42161';
@ -232,25 +237,28 @@ describe('Custom network', function () {
title: this.test.title,
},
async ({ driver }) => {
console.log('gets here -1');
await driver.navigate();
await driver.fill('#password', 'correct horse battery staple');
await driver.press('#password', driver.Key.ENTER);
await driver.clickElement('.account-menu__icon');
await driver.clickElement({ tag: 'div', text: 'Settings' });
// Avoid a stale element error
await driver.delay(regularDelayMs);
await driver.clickElement('[data-testid="network-display"]');
await driver.clickElement('.network-display');
await driver.clickElement({ tag: 'button', text: 'Add network' });
await driver.clickElement({
tag: 'button',
text: 'Add',
});
// verify network details
const title = await driver.findElement({
tag: 'h6',
text: 'Arbitrum One',
});
assert.equal(
await title.getText(),
'Arbitrum One',
@ -298,7 +306,7 @@ describe('Custom network', function () {
});
// verify network switched
const networkDisplayed = await driver.findElement({
tag: 'span',
tag: 'p',
text: 'Arbitrum One',
});
assert.equal(
@ -322,10 +330,10 @@ describe('Custom network', function () {
await driver.fill('#password', 'correct horse battery staple');
await driver.press('#password', driver.Key.ENTER);
await driver.clickElement('.account-menu__icon');
await driver.clickElement({ tag: 'div', text: 'Settings' });
// Avoid a stale element error
await driver.delay(regularDelayMs);
await driver.clickElement('.network-display');
await driver.clickElement('[data-testid="network-display"]');
await driver.clickElement({ tag: 'button', text: 'Add network' });
// had to put all Add elements in list since list is changing and networks are not always in same order
@ -342,11 +350,13 @@ describe('Custom network', function () {
});
// verify if added network is in list of networks
const networkDisplay = await driver.findElement('.network-display');
const networkDisplay = await driver.findElement(
'[data-testid="network-display"]',
);
await networkDisplay.click();
const arbitrumNetwork = await driver.findElements({
text: `Arbitrum One`,
text: 'Arbitrum One',
tag: 'span',
});
assert.ok(arbitrumNetwork.length, 1);
@ -378,12 +388,14 @@ describe('Custom network', function () {
await driver.fill('#password', 'correct horse battery staple');
await driver.press('#password', driver.Key.ENTER);
await driver.clickElement('.account-menu__icon');
await driver.clickElement(
'[data-testid="account-options-menu-button"]',
);
await driver.clickElement({ text: 'Settings', tag: 'div' });
await driver.clickElement({ text: 'Networks', tag: 'div' });
const arbitrumNetwork = await driver.clickElement({
text: `Arbitrum One`,
text: 'Arbitrum One',
tag: 'div',
});

View File

@ -50,16 +50,16 @@ describe('Hide token', function () {
await driver.press('#password', driver.Key.ENTER);
await driver.waitForSelector({
css: '.asset-list-item__token-button',
css: '[data-testid="multichain-token-list-item-value"]',
text: '0 TST',
});
let assets = await driver.findElements('.asset-list-item');
let assets = await driver.findElements('.multichain-token-list-item');
assert.equal(assets.length, 2);
await driver.clickElement({ text: 'Tokens', tag: 'button' });
await driver.clickElement({ text: 'TST', tag: 'span' });
await driver.clickElement({ text: 'TST', tag: 'p' });
await driver.clickElement('[data-testid="asset-options__button"]');
@ -74,7 +74,7 @@ describe('Hide token', function () {
// wait for confirm hide modal to be removed from DOM.
await confirmHideModal.waitForElementState('hidden');
assets = await driver.findElements('.asset-list-item');
assets = await driver.findElements('.multichain-token-list-item');
assert.equal(assets.length, 1);
},
);
@ -106,7 +106,7 @@ describe('Add existing token using search', function () {
await driver.fill('#password', 'correct horse battery staple');
await driver.press('#password', driver.Key.ENTER);
await driver.clickElement({ text: 'import tokens', tag: 'a' });
await driver.clickElement({ text: 'Import tokens', tag: 'button' });
await driver.fill('#search-tokens', 'BAT');
await driver.clickElement({
text: 'BAT',

View File

@ -102,7 +102,9 @@ describe('Address Book', function () {
await driver.fill('#password', 'correct horse battery staple');
await driver.press('#password', driver.Key.ENTER);
await driver.clickElement('.identicon__address-wrapper');
await driver.clickElement(
'[data-testid="account-options-menu-button"]',
);
await driver.clickElement({ text: 'Settings', tag: 'div' });
await driver.clickElement({ text: 'Contacts', tag: 'div' });
await driver.clickElement('[data-testid="recipient"]');
@ -163,7 +165,9 @@ describe('Address Book', function () {
await driver.fill('#password', 'correct horse battery staple');
await driver.press('#password', driver.Key.ENTER);
await driver.clickElement('.identicon__address-wrapper');
await driver.clickElement(
'[data-testid="account-options-menu-button"]',
);
await driver.clickElement({ text: 'Settings', tag: 'div' });
await driver.clickElement({ text: 'Contacts', tag: 'div' });

View File

@ -26,7 +26,9 @@ describe('Advanced Settings', function () {
await driver.fill('#password', 'correct horse battery staple');
await driver.press('#password', driver.Key.ENTER);
await driver.clickElement('.account-menu__icon');
await driver.clickElement(
'[data-testid="account-options-menu-button"]',
);
await driver.clickElement({ text: 'Settings', tag: 'div' });
await driver.clickElement({ text: 'Advanced', tag: 'div' });

View File

@ -25,7 +25,9 @@ describe('Auto-Lock Timer', function () {
await driver.fill('#password', 'correct horse battery staple');
await driver.press('#password', driver.Key.ENTER);
// Set Auto Lock Timer
await driver.clickElement('.account-menu__icon');
await driver.clickElement(
'[data-testid="account-options-menu-button"]',
);
await driver.clickElement({ text: 'Settings', tag: 'div' });
await driver.clickElement({ text: 'Advanced', tag: 'div' });
const sixSecsInMins = '0.1';

View File

@ -70,7 +70,9 @@ describe('Backup and Restore', function () {
await driver.press('#password', driver.Key.ENTER);
// Download user settings
await driver.clickElement('.account-menu__icon');
await driver.clickElement(
'[data-testid="account-options-menu-button"]',
);
await driver.clickElement({ text: 'Settings', tag: 'div' });
await driver.clickElement({ text: 'Advanced', tag: 'div' });
await driver.clickElement({
@ -107,7 +109,9 @@ describe('Backup and Restore', function () {
await driver.press('#password', driver.Key.ENTER);
// Restore
await driver.clickElement('.account-menu__icon');
await driver.clickElement(
'[data-testid="account-options-menu-button"]',
);
await driver.clickElement({ text: 'Settings', tag: 'div' });
await driver.clickElement({ text: 'Advanced', tag: 'div' });
const restore = await driver.findElement('#restore-file');

View File

@ -55,9 +55,12 @@ describe('Chain Interactions', function () {
await driver.switchToWindow(extension);
// verify networks
const networkDisplay = await driver.findElement('.network-display');
await networkDisplay.click();
const networkDisplay = await driver.findElement(
'[data-testid="network-display"] p',
);
assert.equal(await networkDisplay.getText(), 'Localhost 8545');
await driver.clickElement('[data-testid="network-display"]');
const ganacheChain = await driver.findElements({
text: `Localhost ${port}`,
tag: 'span',
@ -101,7 +104,7 @@ describe('Chain Interactions', function () {
// verify current network
const networkDisplay = await driver.findElement(
'[data-testid="network-display"]',
'[data-testid="network-display"] p',
);
assert.equal(await networkDisplay.getText(), `Localhost ${port}`);
},

View File

@ -44,12 +44,11 @@ describe('Clear account activity', function () {
});
// Clear activity and nonce data
await driver.clickElement('.account-menu__icon');
await driver.clickElement(
'[data-testid="account-options-menu-button"]',
);
await driver.clickElement({ text: 'Settings', tag: 'div' });
await driver.clickElement({
css: '.tab-bar__tab__content__title',
text: 'Advanced',
});
await driver.clickElement({ text: 'Advanced', tag: 'div' });
await driver.clickElement({
text: 'Clear activity tab data',
tag: 'button',

View File

@ -1,5 +1,9 @@
const { strict: assert } = require('assert');
const { convertToHexValue, withFixtures } = require('../helpers');
const {
convertToHexValue,
withFixtures,
regularDelayMs,
} = require('../helpers');
const FixtureBuilder = require('../fixture-builder');
describe('Stores custom RPC history', function () {
@ -31,7 +35,7 @@ describe('Stores custom RPC history', function () {
const networkName = 'Secondary Ganache Testnet';
await driver.waitForElementNotPresent('.loading-overlay');
await driver.clickElement('.network-display');
await driver.clickElement('[data-testid="network-display"]');
await driver.clickElement({ text: 'Add network', tag: 'button' });
@ -66,7 +70,7 @@ describe('Stores custom RPC history', function () {
'.networks-tab__add-network-form-footer .btn-primary',
);
await driver.findElement({ text: networkName, tag: 'span' });
await driver.findElement({ text: networkName, tag: 'p' });
},
);
});
@ -87,7 +91,7 @@ describe('Stores custom RPC history', function () {
const duplicateRpcUrl = 'https://mainnet.infura.io/v3/';
await driver.waitForElementNotPresent('.loading-overlay');
await driver.clickElement('.network-display');
await driver.clickElement('[data-testid="network-display"]');
await driver.clickElement({ text: 'Add network', tag: 'button' });
@ -131,7 +135,7 @@ describe('Stores custom RPC history', function () {
const duplicateChainId = '1';
await driver.waitForElementNotPresent('.loading-overlay');
await driver.clickElement('.network-display');
await driver.clickElement('[data-testid="network-display"]');
await driver.clickElement({ text: 'Add network', tag: 'button' });
@ -179,7 +183,7 @@ describe('Stores custom RPC history', function () {
await driver.press('#password', driver.Key.ENTER);
await driver.waitForElementNotPresent('.loading-overlay');
await driver.clickElement('.network-display');
await driver.clickElement('[data-testid="network-display"]');
await driver.clickElement({ text: 'Ethereum Mainnet', tag: 'span' });
},
@ -218,12 +222,16 @@ describe('Stores custom RPC history', function () {
await driver.press('#password', driver.Key.ENTER);
await driver.waitForElementNotPresent('.loading-overlay');
await driver.clickElement('.network-display');
await driver.clickElement('[data-testid="network-display"]');
await driver.clickElement('.toggle-button');
await driver.delay(regularDelayMs);
// only recent 3 are found and in correct order (most recent at the top)
const customRpcs = await driver.findElements({
text: 'http://127.0.0.1:8545/',
tag: 'span',
tag: 'div',
});
// click Mainnet to dismiss network dropdown
@ -267,7 +275,7 @@ describe('Stores custom RPC history', function () {
await driver.press('#password', driver.Key.ENTER);
await driver.waitForElementNotPresent('.loading-overlay');
await driver.clickElement('.network-display');
await driver.clickElement('[data-testid="network-display"]');
await driver.clickElement({ text: 'Add network', tag: 'button' });

View File

@ -46,7 +46,7 @@ describe('Create token, approve token and approve token without gas', function (
await driver.clickElement(`[data-testid="home__asset-tab"]`);
await driver.clickElement({ tag: 'button', text: 'Tokens' });
await driver.clickElement({ text: 'import tokens', tag: 'a' });
await driver.clickElement({ text: 'Import tokens', tag: 'button' });
await driver.clickElement({
text: 'Custom token',
tag: 'button',
@ -69,11 +69,10 @@ describe('Create token, approve token and approve token without gas', function (
// renders balance for newly created token
await driver.clickElement('.app-header__logo-container');
await driver.clickElement({ tag: 'button', text: 'Tokens' });
const asset = await driver.waitForSelector({
css: '.asset-list-item__token-value',
text: '10',
await driver.waitForSelector({
css: '[data-testid="multichain-token-list-item-value"]',
text: '10 TST',
});
assert.equal(await asset.getText(), '10');
},
);
});

View File

@ -43,8 +43,10 @@ describe('Dapp interactions', function () {
// Lock Account
await driver.switchToWindow(extension);
await driver.clickElement('.account-menu__icon');
await driver.clickElement({ text: 'Lock', tag: 'button' });
await driver.clickElement(
'[data-testid="account-options-menu-button"]',
);
await driver.clickElement({ text: 'Lock', tag: 'div' });
// Trigger Notification
await driver.switchToWindowWithTitle('E2E Test Dapp', windowHandles);
@ -88,8 +90,10 @@ describe('Dapp interactions', function () {
// Lock Account
await driver.switchToWindow(extension);
await driver.clickElement('.account-menu__icon');
await driver.clickElement({ text: 'Lock', tag: 'button' });
await driver.clickElement(
'[data-testid="account-options-menu-button"]',
);
await driver.clickElement({ text: 'Lock', tag: 'div' });
// Connect to Dapp1
await openDapp(driver, null, DAPP_ONE_URL);

View File

@ -152,7 +152,6 @@ describe('Encrypt Decrypt', function () {
await driver.fill('#password', 'correct horse battery staple');
await driver.press('#password', driver.Key.ENTER);
await driver.clickElement('.account-menu__icon');
await openDapp(driver);
// ------ Get Encryption key and display ETH ------

View File

@ -25,7 +25,6 @@ const ganacheOptions = {
describe('MetaMask Import UI', function () {
it('Importing wallet using Secret Recovery Phrase', async function () {
const testPassword = 'correct horse battery staple';
const testAddress = '0x0Cc5261AB8cE458dc977078A3623E2BaDD27afD3';
await withFixtures(
{
@ -44,29 +43,31 @@ describe('MetaMask Import UI', function () {
);
// Show account information
await driver.clickElement('[data-testid="account-menu-icon"]');
await driver.clickElement(
'[data-testid="account-list-item-menu-button"]',
);
await driver.clickElement('[data-testid="account-list-menu-details"');
await driver.findVisibleElement('.qr-code__wrapper');
// shows a QR code for the account
await driver.findVisibleElement('.popover-container');
// shows the correct account address
const address = await driver.findElement(
'.multichain-address-copy-button',
);
assert.equal(await address.getText(), '0x0Cc...afD3');
await driver.clickElement('[data-testid="popover-close"]');
// logs out of the account
await driver.clickElement(
'[data-testid="account-options-menu-button"]',
);
await driver.clickElement(
'[data-testid="account-options-menu__account-details"]',
);
await driver.findVisibleElement('.qr-code__wrapper');
// shows a QR code for the account
const detailsModal = await driver.findVisibleElement('span .modal');
// shows the correct account address
const address = await driver.findElement('.qr-code__address');
assert.equal(await address.getText(), testAddress);
await driver.clickElement('.account-modal__close');
await detailsModal.waitForElementState('hidden');
// logs out of the account
await driver.clickElement('.account-menu__icon .identicon');
const lockButton = await driver.findClickableElement(
'.account-menu__lock-button',
'[data-testid="global-menu-lock"]',
);
assert.equal(await lockButton.getText(), 'Lock');
assert.equal(await lockButton.getText(), 'Lock MetaMask');
await lockButton.click();
// accepts the account password after lock
@ -76,12 +77,13 @@ describe('MetaMask Import UI', function () {
// Create a new account
// switches to localhost
await driver.delay(largeDelayMs);
await driver.clickElement('.network-display');
await driver.clickElement('[data-testid="network-display"]');
await driver.clickElement('.toggle-button');
await driver.clickElement({ text: 'Localhost', tag: 'span' });
// choose Create account from the account menu
await driver.clickElement('.account-menu__icon');
await driver.clickElement({ text: 'Create account', tag: 'div' });
await driver.clickElement('[data-testid="account-menu-icon"]');
await driver.clickElement({ text: 'Add account', tag: 'button' });
// set account name
await driver.fill('.new-account-create-form input', '2nd account');
@ -89,13 +91,19 @@ describe('MetaMask Import UI', function () {
await driver.clickElement({ text: 'Create', tag: 'button' });
// should show the correct account name
const accountName = await driver.findElement('.selected-account__name');
assert.equal(await accountName.getText(), '2nd account');
const accountName = await driver.isElementPresent({
tag: 'span',
text: '2nd account',
});
assert.equal(accountName, true, 'Account name is not correct');
// Switch back to original account
// chooses the original account from the account menu
await driver.clickElement('.account-menu__icon');
await driver.clickElement('.account-menu__name');
await driver.clickElement('[data-testid="account-menu-icon"]');
await driver.clickElement(
'.multichain-account-list-item__account-name__button',
);
// Send ETH from inside MetaMask
// starts a send transaction
@ -151,15 +159,16 @@ describe('MetaMask Import UI', function () {
);
// Show account information
await driver.clickElement('[data-testid="account-menu-icon"]');
await driver.clickElement(
'[data-testid="account-options-menu-button"]',
);
await driver.clickElement(
'[data-testid="account-options-menu__account-details"]',
'[data-testid="account-list-item-menu-button"]',
);
await driver.clickElement('[data-testid="account-list-menu-details"');
await driver.findVisibleElement('.qr-code__wrapper');
// shows the correct account address
const address = await driver.findElement('.qr-code__address');
const address = await driver.findElement(
'.qr-code [data-testid="address-copy-button-text"]',
);
assert.equal(await address.getText(), testAddress);
},
@ -188,16 +197,18 @@ describe('MetaMask Import UI', function () {
// Imports an account with private key
// choose Create account from the account menu
await driver.clickElement('.account-menu__icon');
await driver.clickElement({ text: 'Import account', tag: 'div' });
await driver.clickElement('[data-testid="account-menu-icon"]');
await driver.clickElement({ text: 'Import account', tag: 'button' });
// enter private key',
await driver.delay(regularDelayMs);
await driver.fill('#private-key-box', testPrivateKey1);
await driver.delay(regularDelayMs);
await driver.clickElement({ text: 'Import', tag: 'button' });
// should show the correct account name
const importedAccountName = await driver.findElement(
'.selected-account__name',
'[data-testid="account-menu-icon"]',
);
assert.equal(await importedAccountName.getText(), 'Account 4');
@ -210,53 +221,48 @@ describe('MetaMask Import UI', function () {
);
// confirm label is present on the same menu item
const importedLabel = await driver.findElement(
`${accountMenuItemSelector} .keyring-label`,
`${accountMenuItemSelector} .mm-tag`,
);
assert.equal(await importedLabel.getText(), 'IMPORTED');
assert.equal(await importedLabel.getText(), 'Imported');
// Imports and removes an account
// choose Create account from the account menu
await driver.clickElement({ text: 'Import account', tag: 'div' });
await driver.clickElement({ text: 'Import account', tag: 'button' });
// enter private key
await driver.fill('#private-key-box', testPrivateKey2);
await driver.clickElement({ text: 'Import', tag: 'button' });
// should see new account in account menu
const importedAccount2Name = await driver.findElement(
'.selected-account__name',
'[data-testid="account-menu-icon"]',
);
assert.equal(await importedAccount2Name.getText(), 'Account 5');
await driver.clickElement('.account-menu__icon');
await driver.clickElement('[data-testid="account-menu-icon"]');
const accountListItems = await driver.findElements(
'.account-menu__account',
'.multichain-account-list-item',
);
assert.equal(accountListItems.length, 5);
await driver.clickPoint('.account-menu__icon', 0, 0);
await driver.clickElement(
'.multichain-account-list-item--selected [data-testid="account-list-item-menu-button"]',
);
// should open the remove account modal
await driver.clickElement(
'[data-testid="account-options-menu-button"]',
);
await driver.clickElement(
'[data-testid="account-options-menu__remove-account"]',
);
await driver.findElement('.confirm-remove-account__account');
await driver.clickElement('[data-testid="account-list-menu-remove"]');
// should remove the account
await driver.clickElement({ text: 'Remove', tag: 'button' });
// Wait until selected account switches away from removed account to first account
await driver.waitForSelector({
css: '.selected-account__name',
css: '[data-testid="account-menu-icon"]',
text: 'Account 1',
});
await driver.delay(regularDelayMs);
await driver.clickElement('.account-menu__icon');
await driver.clickElement('[data-testid="account-menu-icon"]');
const accountListItemsAfterRemoval = await driver.findElements(
'.account-menu__account',
'.multichain-account-list-item',
);
assert.equal(accountListItemsAfterRemoval.length, 4);
},
@ -279,8 +285,8 @@ describe('MetaMask Import UI', function () {
await driver.press('#password', driver.Key.ENTER);
// Imports an account with JSON file
await driver.clickElement('.account-menu__icon');
await driver.clickElement({ text: 'Import account', tag: 'div' });
await driver.clickElement('[data-testid="account-menu-icon"]');
await driver.clickElement({ text: 'Import account', tag: 'button' });
await driver.clickElement('.dropdown__select');
await driver.clickElement({ text: 'JSON File', tag: 'option' });
@ -301,7 +307,7 @@ describe('MetaMask Import UI', function () {
// should show the correct account name
const importedAccountName = await driver.findElement(
'.selected-account__name',
'[data-testid="account-menu-icon"]',
);
assert.equal(await importedAccountName.getText(), 'Account 4');
@ -315,12 +321,12 @@ describe('MetaMask Import UI', function () {
// confirm label is present on the same menu item
const importedLabel = await driver.findElement(
`${accountMenuItemSelector} .keyring-label`,
`${accountMenuItemSelector} .mm-tag`,
);
assert.equal(await importedLabel.getText(), 'IMPORTED');
assert.equal(await importedLabel.getText(), 'Imported');
const accountListItems = await driver.findElements(
'.account-menu__account',
'.multichain-account-list-item',
);
assert.equal(accountListItems.length, 4);
},
@ -345,8 +351,8 @@ describe('MetaMask Import UI', function () {
await driver.press('#password', driver.Key.ENTER);
// choose Import Account from the account menu
await driver.clickElement('.account-menu__icon');
await driver.clickElement({ text: 'Import account', tag: 'div' });
await driver.clickElement('[data-testid="account-menu-icon"]');
await driver.clickElement({ text: 'Import account', tag: 'button' });
// enter private key',
await driver.fill('#private-key-box', testPrivateKey);
@ -375,10 +381,10 @@ describe('MetaMask Import UI', function () {
await driver.press('#password', driver.Key.ENTER);
// choose Connect hardware wallet from the account menu
await driver.clickElement('.account-menu__icon');
await driver.clickElement('[data-testid="account-menu-icon"]');
await driver.clickElement({
text: 'Connect hardware wallet',
tag: 'div',
text: 'Hardware wallet',
tag: 'button',
});
await driver.delay(regularDelayMs);

View File

@ -65,21 +65,21 @@ describe('Incremental Security', function () {
await driver.clickElement('[data-testid="pin-extension-done"]');
// open account menu
await driver.clickElement('[data-testid="account-menu-icon"]');
await driver.clickElement(
'[data-testid="account-options-menu-button"]',
);
await driver.clickElement(
'[data-testid="account-options-menu__account-details"]',
'.multichain-account-list-item--selected [data-testid="account-list-item-menu-button"]',
);
await driver.clickElement('[data-testid="account-list-menu-details"');
// gets the current accounts address
const address = await driver.findElement('.qr-code__address');
const address = await driver.findElement(
'.qr-code .multichain-address-copy-button',
);
const publicAddress = await address.getText();
// wait for account modal to be visible
const accountModal = await driver.findVisibleElement('span .modal');
await driver.clickElement('.account-modal__close');
const accountModal = await driver.findVisibleElement('.popover-bg');
await driver.clickElement('[data-testid="popover-close"]');
// wait for account modal to be removed from DOM
await accountModal.waitForElementState('hidden');

View File

@ -24,17 +24,19 @@ describe('Lock and unlock', function () {
await driver.fill('#password', 'correct horse battery staple');
await driver.press('#password', driver.Key.ENTER);
await driver.clickElement('.account-menu__icon');
const lockButton = await driver.findClickableElement(
'.account-menu__lock-button',
await driver.clickElement(
'[data-testid="account-options-menu-button"]',
);
assert.equal(await lockButton.getText(), 'Lock');
const lockButton = await driver.findClickableElement(
'[data-testid="global-menu-lock"]',
);
assert.equal(await lockButton.getText(), 'Lock MetaMask');
await lockButton.click();
await driver.fill('#password', 'correct horse battery staple');
await driver.press('#password', driver.Key.ENTER);
const walletBalance = await driver.findElement(
'[data-testid="wallet-balance"] .list-item__heading',
'.eth-overview__primary-balance',
);
assert.equal(/^25\s*ETH$/u.test(await walletBalance.getText()), true);
},

View File

@ -72,7 +72,7 @@ describe('MetaMask Responsive UI', function () {
// assert balance
const balance = await driver.findElement(
'[data-testid="wallet-balance"]',
'[data-testid="eth-overview__primary-currency"]',
);
assert.ok(/^0\sETH$/u.test(await balance.getText()));
},

View File

@ -271,8 +271,9 @@ describe('MetaMask onboarding', function () {
// Add custome network localhost 8546 during onboarding
await driver.clickElement({ text: 'Advanced configuration', tag: 'a' });
await driver.clickElement('.mm-picker-network');
await driver.clickElement({
text: 'Add custom network',
text: 'Add network',
tag: 'button',
});
@ -301,7 +302,7 @@ describe('MetaMask onboarding', function () {
// Check localhost 8546 is selected and its balance value is correct
const networkDisplay = await driver.findElement(
'[data-testid="network-display"]',
'[data-testid="network-display"] p',
);
assert.equal(await networkDisplay.getText(), networkName);

View File

@ -55,9 +55,7 @@ describe('Permissions', function () {
await driver.clickElement(
'[data-testid="account-options-menu-button"]',
);
await driver.clickElement(
'[data-testid="account-options-menu__connected-sites"]',
);
await driver.clickElement('.menu-item');
await driver.findElement({
text: 'Connected sites',

View File

@ -46,7 +46,7 @@ describe('MetaMask', function () {
const windowHandles = await driver.getAllWindowHandles();
await driver.switchToWindow(windowHandles[0]);
await driver.clickElement('.network-display');
await driver.clickElement('[data-testid="network-display"]');
await driver.clickElement({ text: 'Ethereum Mainnet', tag: 'span' });
await driver.switchToWindowWithTitle('E2E Test Dapp', windowHandles);

View File

@ -141,7 +141,9 @@ describe('Send ERC20 to a 40 character hexadecimal address', function () {
// Send TST
await driver.clickElement('[data-testid="home__asset-tab"]');
await driver.clickElement('.token-cell');
await driver.clickElement(
'[data-testid="multichain-token-list-button"]',
);
await driver.clickElement('[data-testid="eth-overview-send"]');
// Paste address without hex prefix
@ -155,14 +157,14 @@ describe('Send ERC20 to a 40 character hexadecimal address', function () {
});
await driver.waitForSelector({
css: '.transaction-detail-item',
text: '0.00008455 ETH',
text: '0.000042 ETH',
});
await driver.clickElement({ text: 'Next', tag: 'button' });
// Confirm transaction
await driver.waitForSelector({
css: '.confirm-page-container-summary__title',
text: '0 TST',
text: '0',
});
await driver.clickElement({ text: 'Confirm', tag: 'button' });
await driver.clickElement('[data-testid="home__activity-tab"]');
@ -203,7 +205,9 @@ describe('Send ERC20 to a 40 character hexadecimal address', function () {
// Send TST
await driver.clickElement('[data-testid="home__asset-tab"]');
await driver.clickElement('.token-cell');
await driver.clickElement(
'[data-testid="multichain-token-list-button"]',
);
await driver.clickElement('[data-testid="eth-overview-send"]');
// Type address without hex prefix
@ -217,14 +221,14 @@ describe('Send ERC20 to a 40 character hexadecimal address', function () {
});
await driver.waitForSelector({
css: '.transaction-detail-item',
text: '0.00008455 ETH',
text: '0.000042 ETH',
});
await driver.clickElement({ text: 'Next', tag: 'button' });
// Confirm transaction
await driver.waitForSelector({
css: '.confirm-page-container-summary__title',
text: '0 TST',
text: '0',
});
await driver.clickElement({ text: 'Confirm', tag: 'button' });
await driver.clickElement('[data-testid="home__activity-tab"]');

View File

@ -34,7 +34,9 @@ describe('Send ERC20 token to contract address', function () {
// Send TST
await driver.clickElement('[data-testid="home__asset-tab"]');
await driver.clickElement('.token-cell');
await driver.clickElement(
'[data-testid="multichain-token-list-button"]',
);
await driver.clickElement('[data-testid="eth-overview-send"]');
// Type contract address

View File

@ -26,7 +26,9 @@ describe('Settings', function () {
await driver.press('#password', driver.Key.ENTER);
// goes to the settings screen
await driver.clickElement('.account-menu__icon');
await driver.clickElement(
'[data-testid="account-options-menu-button"]',
);
await driver.clickElement({ text: 'Settings', tag: 'div' });
// finds the jazzicon toggle turned on

View File

@ -35,7 +35,9 @@ describe('Settings Search', function () {
await driver.fill('#password', 'correct horse battery staple');
await driver.press('#password', driver.Key.ENTER);
await driver.clickElement('.account-menu__icon');
await driver.clickElement(
'[data-testid="account-options-menu-button"]',
);
await driver.clickElement({ text: 'Settings', tag: 'div' });
await driver.fill('#search-settings', settingsSearch.general);
@ -61,7 +63,9 @@ describe('Settings Search', function () {
await driver.fill('#password', 'correct horse battery staple');
await driver.press('#password', driver.Key.ENTER);
await driver.clickElement('.account-menu__icon');
await driver.clickElement(
'[data-testid="account-options-menu-button"]',
);
await driver.clickElement({ text: 'Settings', tag: 'div' });
await driver.fill('#search-settings', settingsSearch.advanced);
@ -88,7 +92,9 @@ describe('Settings Search', function () {
await driver.fill('#password', 'correct horse battery staple');
await driver.press('#password', driver.Key.ENTER);
await driver.clickElement('.account-menu__icon');
await driver.clickElement(
'[data-testid="account-options-menu-button"]',
);
await driver.clickElement({ text: 'Settings', tag: 'div' });
await driver.fill('#search-settings', settingsSearch.contacts);
@ -115,7 +121,9 @@ describe('Settings Search', function () {
await driver.fill('#password', 'correct horse battery staple');
await driver.press('#password', driver.Key.ENTER);
await driver.clickElement('.account-menu__icon');
await driver.clickElement(
'[data-testid="account-options-menu-button"]',
);
await driver.clickElement({ text: 'Settings', tag: 'div' });
await driver.fill('#search-settings', settingsSearch.security);
@ -142,7 +150,9 @@ describe('Settings Search', function () {
await driver.fill('#password', 'correct horse battery staple');
await driver.press('#password', driver.Key.ENTER);
await driver.clickElement('.account-menu__icon');
await driver.clickElement(
'[data-testid="account-options-menu-button"]',
);
await driver.clickElement({ text: 'Settings', tag: 'div' });
await driver.fill('#search-settings', settingsSearch.alerts);
@ -169,7 +179,9 @@ describe('Settings Search', function () {
await driver.fill('#password', 'correct horse battery staple');
await driver.press('#password', driver.Key.ENTER);
await driver.clickElement('.account-menu__icon');
await driver.clickElement(
'[data-testid="account-options-menu-button"]',
);
await driver.clickElement({ text: 'Settings', tag: 'div' });
await driver.fill('#search-settings', settingsSearch.networks);
@ -196,7 +208,9 @@ describe('Settings Search', function () {
await driver.fill('#password', 'correct horse battery staple');
await driver.press('#password', driver.Key.ENTER);
await driver.clickElement('.account-menu__icon');
await driver.clickElement(
'[data-testid="account-options-menu-button"]',
);
await driver.clickElement({ text: 'Settings', tag: 'div' });
await driver.fill('#search-settings', settingsSearch.experimental);
@ -223,7 +237,9 @@ describe('Settings Search', function () {
await driver.fill('#password', 'correct horse battery staple');
await driver.press('#password', driver.Key.ENTER);
await driver.clickElement('.account-menu__icon');
await driver.clickElement(
'[data-testid="account-options-menu-button"]',
);
await driver.clickElement({ text: 'Settings', tag: 'div' });
await driver.fill('#search-settings', settingsSearch.about);
@ -250,7 +266,9 @@ describe('Settings Search', function () {
await driver.fill('#password', 'correct horse battery staple');
await driver.press('#password', driver.Key.ENTER);
await driver.clickElement('.account-menu__icon');
await driver.clickElement(
'[data-testid="account-options-menu-button"]',
);
await driver.clickElement({ text: 'Settings', tag: 'div' });
await driver.fill('#search-settings', 'Lorem ipsum');

View File

@ -45,7 +45,9 @@ describe('State logs', function () {
await driver.press('#password', driver.Key.ENTER);
// Download state logs
await driver.clickElement('.account-menu__icon');
await driver.clickElement(
'[data-testid="account-options-menu-button"]',
);
await driver.clickElement({ text: 'Settings', tag: 'div' });
await driver.clickElement({ text: 'Advanced', tag: 'div' });
await driver.clickElement({

View File

@ -88,7 +88,7 @@ describe('Swtich ethereum chain', function () {
await driver.switchToWindow(extension);
const currentNetworkName = await driver.findElement({
tag: 'span',
tag: 'p',
text: 'Localhost 8546',
});

View File

@ -24,7 +24,7 @@ describe('Token Details', function () {
await driver.fill('#password', 'correct horse battery staple');
await driver.press('#password', driver.Key.ENTER);
await driver.clickElement({ text: 'import tokens', tag: 'a' });
await driver.clickElement({ text: 'Import tokens', tag: 'button' });
await driver.clickElement({ text: 'Custom token', tag: 'button' });
const tokenAddress = '0x2EFA2Cb29C2341d8E5Ba7D3262C9e9d6f1Bf3711';

View File

@ -33,9 +33,11 @@ async function loadNewAccount() {
await driver.fill('#password', 'correct horse battery staple');
await driver.press('#password', driver.Key.ENTER);
await driver.clickElement('.account-menu__icon');
await driver.clickElement('[data-testid="account-menu-icon"]');
const timestampBeforeAction = new Date();
await driver.clickElement({ text: 'Create account', tag: 'div' });
await driver.clickElement(
'[data-testid="multichain-account-menu-add-account"]',
);
await driver.fill('.new-account-create-form input', '2nd account');
await driver.clickElement({ text: 'Create', tag: 'button' });
await driver.waitForSelector({

View File

@ -1,400 +0,0 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`Account Menu Render Content should not render keyring label if keyring tyoe is Custody - JSONRPC 1`] = `
<div>
<div
class="account-menu"
>
<div
class="account-menu__close-area"
/>
<div
class="account-menu__item account-menu__header"
>
My accounts
<button
class="button btn--rounded btn-secondary account-menu__lock-button"
role="button"
tabindex="0"
>
Lock
</button>
</div>
<div
class="account-menu__divider"
/>
<div
class="account-menu__accounts-container"
>
<div
class="account-menu__accounts"
>
<button
class="account-menu__account account-menu__item--clickable"
data-testid="account-menu__account"
>
<div
class="account-menu__check-mark"
/>
<div
class=""
>
<div
class="identicon"
style="height: 24px; width: 24px; border-radius: 12px;"
>
<div
style="border-radius: 50px; overflow: hidden; padding: 0px; margin: 0px; width: 24px; height: 24px; display: inline-block; background: rgb(24, 151, 242);"
>
<svg
height="24"
width="24"
x="0"
y="0"
>
<rect
fill="#2362E1"
height="24"
transform="translate(2.6919976385943882 -4.000732967425142) rotate(458.4 12 12)"
width="24"
x="0"
y="0"
/>
<rect
fill="#F94301"
height="24"
transform="translate(-11.522594467237658 5.994263726614974) rotate(268.8 12 12)"
width="24"
x="0"
y="0"
/>
<rect
fill="#FA7900"
height="24"
transform="translate(-6.8071905594760675 22.110011910512533) rotate(117.3 12 12)"
width="24"
x="0"
y="0"
/>
</svg>
</div>
</div>
</div>
<div
class="account-menu__account-info"
>
<div
class="account-menu__name"
>
Account 1
</div>
<label
class="box mm-text mm-label mm-label--html-for mm-text--body-md mm-text--font-weight-bold box--display-flex box--flex-direction-row box--align-items-center box--color-text-default"
for="address-0"
/>
<div
class="account-menu__balance-container"
>
<div
class="currency-display-component account-menu__balance"
data-testid="account-menu__balance"
title="0 ETH"
>
<span
class="currency-display-component__prefix"
/>
<span
class="currency-display-component__text"
>
0
</span>
<span
class="currency-display-component__suffix"
>
ETH
</span>
</div>
<span
class="account-menu__address"
>
·
0x00
</span>
</div>
<div
class="currency-display-component account-menu__balance"
data-testid="account-menu__balance"
title="0 ETH"
>
<span
class="currency-display-component__prefix"
/>
<span
class="currency-display-component__text"
>
0
</span>
<span
class="currency-display-component__suffix"
>
ETH
</span>
</div>
</div>
</button>
<button
class="account-menu__account account-menu__item--clickable"
data-testid="account-menu__account"
>
<div
class="account-menu__check-mark"
/>
<div
class=""
>
<div
class="identicon"
style="height: 24px; width: 24px; border-radius: 12px;"
>
<div
style="border-radius: 50px; overflow: hidden; padding: 0px; margin: 0px; width: 24px; height: 24px; display: inline-block; background: rgb(24, 162, 242);"
>
<svg
height="24"
width="24"
x="0"
y="0"
>
<rect
fill="#F29602"
height="24"
transform="translate(0.0008341139930255813 -0.00037625505634810975) rotate(358.8 12 12)"
width="24"
x="0"
y="0"
/>
<rect
fill="#FA6C00"
height="24"
transform="translate(5.974289636227165 7.880005368393935) rotate(69.5 12 12)"
width="24"
x="0"
y="0"
/>
<rect
fill="#236CE1"
height="24"
transform="translate(-14.300029938001572 12.149694281529626) rotate(260.2 12 12)"
width="24"
x="0"
y="0"
/>
</svg>
</div>
</div>
</div>
<div
class="account-menu__account-info"
>
<div
class="account-menu__name"
>
Imported Account 1
</div>
<label
class="box mm-text mm-label mm-label--html-for mm-text--body-md mm-text--font-weight-bold box--display-flex box--flex-direction-row box--align-items-center box--color-text-default"
for="address-0"
/>
<div
class="account-menu__balance-container"
>
<div
class="currency-display-component account-menu__balance"
data-testid="account-menu__balance"
title="0 ETH"
>
<span
class="currency-display-component__prefix"
/>
<span
class="currency-display-component__text"
>
0
</span>
<span
class="currency-display-component__suffix"
>
ETH
</span>
</div>
<span
class="account-menu__address"
>
·
0x1
</span>
</div>
<div
class="currency-display-component account-menu__balance"
data-testid="account-menu__balance"
title="0 ETH"
>
<span
class="currency-display-component__prefix"
/>
<span
class="currency-display-component__text"
>
0
</span>
<span
class="currency-display-component__suffix"
>
ETH
</span>
</div>
</div>
</button>
</div>
</div>
<div
class="account-menu__divider"
/>
<button
class="account-menu__item account-menu__item--clickable"
>
<div
class="account-menu__item__icon"
>
<span
class="box mm-icon mm-icon--size-md box--display-inline-block box--flex-direction-row box--color-icon-alternative"
style="mask-image: url('./images/icons/add.svg');"
/>
</div>
<div
class="account-menu__item__text"
>
Create account
</div>
</button>
<button
class="account-menu__item account-menu__item--clickable"
>
<div
class="account-menu__item__icon"
>
<span
class="box mm-icon mm-icon--size-md box--display-inline-block box--flex-direction-row box--color-icon-alternative"
style="mask-image: url('./images/icons/import.svg');"
/>
</div>
<div
class="account-menu__item__text"
>
Import account
</div>
</button>
<button
class="account-menu__item account-menu__item--clickable"
>
<div
class="account-menu__item__icon"
>
<span
class="box mm-icon mm-icon--size-md box--display-inline-block box--flex-direction-row box--color-icon-alternative"
style="mask-image: url('./images/icons/hardware.svg');"
/>
</div>
<div
class="account-menu__item__text"
>
Connect hardware wallet
</div>
</button>
<button
class="account-menu__item account-menu__item--clickable"
>
<div
class="account-menu__item__text"
>
Connect Custodial Account
</div>
</button>
<button
class="account-menu__item account-menu__item--clickable"
>
<div
class="account-menu__item__text"
>
Compliance
</div>
</button>
<div
class="account-menu__divider"
/>
<button
class="account-menu__item account-menu__item--clickable"
>
<div
class="account-menu__item__icon"
>
<div
class="account-menu__notifications"
>
<span
class="box mm-icon mm-icon--size-lg box--display-inline-block box--flex-direction-row box--color-inherit"
style="mask-image: url('./images/icons/notification.svg');"
/>
</div>
</div>
<div
class="account-menu__item__text"
>
Notifications
</div>
</button>
<div
class="account-menu__divider"
/>
<button
class="account-menu__item account-menu__item--clickable"
>
<div
class="account-menu__item__icon"
>
<span
class="box mm-icon mm-icon--size-md box--display-inline-block box--flex-direction-row box--color-icon-alternative"
style="mask-image: url('./images/icons/messages.svg');"
/>
</div>
<div
class="account-menu__item__text"
>
Submit a ticket
</div>
</button>
<button
class="account-menu__item account-menu__item--clickable"
>
<div
class="account-menu__item__icon"
>
<span
aria-label="Settings"
class="box mm-icon mm-icon--size-md box--display-inline-block box--flex-direction-row box--color-icon-alternative"
style="mask-image: url('./images/icons/setting.svg');"
/>
</div>
<div
class="account-menu__item__text"
>
Settings
</div>
</button>
</div>
</div>
`;

View File

@ -1,617 +0,0 @@
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { debounce } from 'lodash';
import Fuse from 'fuse.js';
import InputAdornment from '@material-ui/core/InputAdornment';
import classnames from 'classnames';
import { ENVIRONMENT_TYPE_POPUP } from '../../../../shared/constants/app';
import {
MetaMetricsContextProp,
MetaMetricsEventAccountType,
MetaMetricsEventCategory,
MetaMetricsEventName,
} from '../../../../shared/constants/metametrics';
import { getEnvironmentType } from '../../../../app/scripts/lib/util';
import Identicon from '../../ui/identicon';
import SiteIcon from '../../ui/site-icon';
import UserPreferencedCurrencyDisplay from '../user-preferenced-currency-display';
import {
PRIMARY,
///: BEGIN:ONLY_INCLUDE_IN(build-beta,build-flask)
SUPPORT_REQUEST_LINK,
///: END:ONLY_INCLUDE_IN
} from '../../../helpers/constants/common';
import {
SETTINGS_ROUTE,
NEW_ACCOUNT_ROUTE,
IMPORT_ACCOUNT_ROUTE,
CONNECT_HARDWARE_ROUTE,
DEFAULT_ROUTE,
///: BEGIN:ONLY_INCLUDE_IN(snaps)
NOTIFICATIONS_ROUTE,
///: END:ONLY_INCLUDE_IN
///: BEGIN:ONLY_INCLUDE_IN(build-mmi)
CUSTODY_ACCOUNT_ROUTE,
COMPLIANCE_FEATURE_ROUTE,
///: END:ONLY_INCLUDE_IN
} from '../../../helpers/constants/routes';
import TextField from '../../ui/text-field';
import Button from '../../ui/button';
import SearchIcon from '../../ui/icon/search-icon';
import { SUPPORT_LINK } from '../../../../shared/lib/ui-utils';
import { IconColor } from '../../../helpers/constants/design-system';
import { Icon, IconName, IconSize } from '../../component-library';
///: BEGIN:ONLY_INCLUDE_IN(build-mmi)
import { shortenAddress } from '../../../helpers/utils/util';
import CustodyLabels from '../../institutional/custody-labels';
import { toChecksumHexAddress } from '../../../../shared/modules/hexstring-utils';
///: END:ONLY_INCLUDE_IN
import KeyRingLabel from './keyring-label';
export function AccountMenuItem(props) {
const { icon, children, text, subText, className, onClick } = props;
const itemClassName = classnames('account-menu__item', className, {
'account-menu__item--clickable': Boolean(onClick),
});
return children ? (
<div className={itemClassName} onClick={onClick}>
{children}
</div>
) : (
<button className={itemClassName} onClick={onClick}>
{icon ? <div className="account-menu__item__icon">{icon}</div> : null}
{text ? <div className="account-menu__item__text">{text}</div> : null}
{subText ? (
<div className="account-menu__item__subtext">{subText}</div>
) : null}
</button>
);
}
AccountMenuItem.propTypes = {
icon: PropTypes.node,
children: PropTypes.node,
text: PropTypes.node,
subText: PropTypes.node,
onClick: PropTypes.func,
className: PropTypes.string,
};
export default class AccountMenu extends Component {
static contextTypes = {
t: PropTypes.func,
trackEvent: PropTypes.func,
};
static propTypes = {
shouldShowAccountsSearch: PropTypes.bool,
accounts: PropTypes.array,
history: PropTypes.object,
isAccountMenuOpen: PropTypes.bool,
keyrings: PropTypes.array,
lockMetamask: PropTypes.func,
selectedAddress: PropTypes.string,
setSelectedAccount: PropTypes.func,
toggleAccountMenu: PropTypes.func,
addressConnectedSubjectMap: PropTypes.object,
originOfCurrentTab: PropTypes.string,
///: BEGIN:ONLY_INCLUDE_IN(snaps)
unreadNotificationsCount: PropTypes.number,
///: END:ONLY_INCLUDE_IN
///: BEGIN:ONLY_INCLUDE_IN(build-mmi)
custodyAccountDetails: PropTypes.object,
mmiPortfolioEnabled: PropTypes.bool,
mmiPortfolioUrl: PropTypes.string,
///: END:ONLY_INCLUDE_IN
};
accountsRef;
state = {
shouldShowScrollButton: false,
searchQuery: '',
};
addressFuse = new Fuse([], {
threshold: 0.55,
location: 0,
distance: 100,
maxPatternLength: 32,
minMatchCharLength: 1,
ignoreFieldNorm: true,
keys: [
{ name: 'name', weight: 0.5 },
{ name: 'address', weight: 0.5 },
],
});
componentDidUpdate(prevProps, prevState) {
const { isAccountMenuOpen: prevIsAccountMenuOpen } = prevProps;
const { searchQuery: prevSearchQuery } = prevState;
const { isAccountMenuOpen } = this.props;
const { searchQuery } = this.state;
if (!prevIsAccountMenuOpen && isAccountMenuOpen) {
this.setShouldShowScrollButton();
this.resetSearchQuery();
}
// recalculate on each search query change
// whether we can show scroll down button
if (isAccountMenuOpen && prevSearchQuery !== searchQuery) {
this.setShouldShowScrollButton();
}
}
renderAccountsSearch() {
const handleChange = (e) => {
const val = e.target.value.length > 1 ? e.target.value : '';
this.setSearchQuery(val);
};
const inputAdornment = (
<InputAdornment
position="start"
style={{
maxHeight: 'none',
marginRight: 0,
marginLeft: '8px',
}}
>
<SearchIcon color="var(--color-icon-muted)" />
</InputAdornment>
);
return [
<TextField
key="search-text-field"
id="search-accounts"
placeholder={this.context.t('searchAccounts')}
type="text"
onChange={handleChange}
startAdornment={inputAdornment}
fullWidth
theme="material-white-padded"
/>,
<div className="account-menu__divider" key="search-divider" />,
];
}
renderAccounts() {
const {
accounts,
selectedAddress,
keyrings,
setSelectedAccount,
addressConnectedSubjectMap,
originOfCurrentTab,
///: BEGIN:ONLY_INCLUDE_IN(build-mmi)
custodyAccountDetails,
///: END:ONLY_INCLUDE_IN
} = this.props;
const { searchQuery } = this.state;
let filteredIdentities = accounts;
if (searchQuery) {
this.addressFuse.setCollection(accounts);
filteredIdentities = this.addressFuse.search(searchQuery);
}
if (filteredIdentities.length === 0) {
return (
<p className="account-menu__no-accounts">
{this.context.t('noAccountsFound')}
</p>
);
}
return filteredIdentities.map((identity) => {
const isSelected = identity.address === selectedAddress;
const simpleAddress = identity.address.substring(2).toLowerCase();
const keyring = keyrings.find((kr) => {
return (
kr.accounts.includes(simpleAddress) ||
kr.accounts.includes(identity.address)
);
});
const addressSubjects =
addressConnectedSubjectMap[identity.address] || {};
const iconAndNameForOpenSubject = addressSubjects[originOfCurrentTab];
///: BEGIN:ONLY_INCLUDE_IN(build-mmi)
const labels = custodyAccountDetails
? custodyAccountDetails[toChecksumHexAddress(identity.address)]
?.labels || []
: [];
///: END:ONLY_INCLUDE_IN
return (
<button
className="account-menu__account account-menu__item--clickable"
onClick={() => {
this.context.trackEvent({
category: MetaMetricsEventCategory.Navigation,
event: MetaMetricsEventName.NavAccountSwitched,
properties: {
location: 'Main Menu',
},
});
setSelectedAccount(identity.address);
}}
key={identity.address}
data-testid="account-menu__account"
>
<div className="account-menu__check-mark">
{isSelected ? (
<Icon
color={IconColor.successDefault}
name={IconName.Check}
size={IconSize.Lg}
/>
) : null}
</div>
<Identicon address={identity.address} diameter={24} />
<div className="account-menu__account-info">
<div className="account-menu__name">{identity.name || ''}</div>
{
///: BEGIN:ONLY_INCLUDE_IN(build-mmi)
<>
{labels && (
<CustodyLabels
labels={labels}
background="transparent"
hideNetwork
/>
)}
<div className="account-menu__balance-container">
<UserPreferencedCurrencyDisplay
className="account-menu__balance"
data-testid="account-menu__balance"
value={identity.balance}
type={PRIMARY}
/>{' '}
<span className="account-menu__address">
{' '}
· {shortenAddress(identity.address)}
</span>
</div>
</>
///: END:ONLY_INCLUDE_IN
}
{
///: BEGIN:ONLY_INCLUDE_IN(build-main,build-beta,build-flask)
<UserPreferencedCurrencyDisplay
className="account-menu__balance"
data-testid="account-menu__balance"
value={identity.balance}
type={PRIMARY}
/>
///: END:ONLY_INCLUDE_IN
}
</div>
<KeyRingLabel keyring={keyring} />
{iconAndNameForOpenSubject ? (
<div className="account-menu__icon-list">
<SiteIcon
icon={iconAndNameForOpenSubject.icon}
name={iconAndNameForOpenSubject.name}
size={32}
/>
</div>
) : null}
</button>
);
});
}
resetSearchQuery() {
this.setSearchQuery('');
}
setSearchQuery(searchQuery) {
this.setState({ searchQuery });
}
setShouldShowScrollButton = () => {
if (!this.accountsRef) {
return;
}
const { scrollTop, offsetHeight, scrollHeight } = this.accountsRef;
const canScroll = scrollHeight > offsetHeight;
const atAccountListBottom = scrollTop + offsetHeight >= scrollHeight;
const shouldShowScrollButton = canScroll && !atAccountListBottom;
this.setState({ shouldShowScrollButton });
};
onScroll = debounce(this.setShouldShowScrollButton, 25);
handleScrollDown = (e) => {
e.stopPropagation();
const { scrollHeight } = this.accountsRef;
this.accountsRef.scroll({ left: 0, top: scrollHeight, behavior: 'smooth' });
this.setShouldShowScrollButton();
};
renderScrollButton() {
if (!this.state.shouldShowScrollButton) {
return null;
}
return (
<div
className="account-menu__scroll-button"
onClick={this.handleScrollDown}
>
<i className="fa fa-arrow-down" title={this.context.t('scrollDown')} />
</div>
);
}
render() {
const { t, trackEvent } = this.context;
const {
shouldShowAccountsSearch,
isAccountMenuOpen,
toggleAccountMenu,
lockMetamask,
history,
///: BEGIN:ONLY_INCLUDE_IN(snaps)
unreadNotificationsCount,
///: END:ONLY_INCLUDE_IN
///: BEGIN:ONLY_INCLUDE_IN(build-mmi)
mmiPortfolioEnabled,
mmiPortfolioUrl,
///: END:ONLY_INCLUDE_IN
} = this.props;
if (!isAccountMenuOpen) {
return null;
}
let supportText = t('support');
let supportLink = SUPPORT_LINK;
///: BEGIN:ONLY_INCLUDE_IN(build-beta,build-flask)
supportText = t('needHelpSubmitTicket');
supportLink = SUPPORT_REQUEST_LINK;
///: END:ONLY_INCLUDE_IN
return (
<div className="account-menu">
<div className="account-menu__close-area" onClick={toggleAccountMenu} />
<AccountMenuItem className="account-menu__header">
{t('myAccounts')}
<Button
className="account-menu__lock-button"
type="secondary"
onClick={() => {
lockMetamask();
history.push(DEFAULT_ROUTE);
}}
>
{t('lock')}
</Button>
</AccountMenuItem>
<div className="account-menu__divider" />
<div className="account-menu__accounts-container">
{shouldShowAccountsSearch ? this.renderAccountsSearch() : null}
<div
className="account-menu__accounts"
onScroll={this.onScroll}
ref={(ref) => {
this.accountsRef = ref;
}}
>
{this.renderAccounts()}
</div>
{this.renderScrollButton()}
</div>
<div className="account-menu__divider" />
<AccountMenuItem
onClick={() => {
toggleAccountMenu();
trackEvent({
category: MetaMetricsEventCategory.Navigation,
event: MetaMetricsEventName.AccountAddSelected,
properties: {
account_type: MetaMetricsEventAccountType.Default,
location: 'Main Menu',
},
});
history.push(NEW_ACCOUNT_ROUTE);
}}
icon={<Icon name={IconName.Add} color={IconColor.iconAlternative} />}
text={t('createAccount')}
/>
<AccountMenuItem
onClick={() => {
toggleAccountMenu();
trackEvent({
category: MetaMetricsEventCategory.Navigation,
event: MetaMetricsEventName.AccountAddSelected,
properties: {
account_type: MetaMetricsEventAccountType.Imported,
location: 'Main Menu',
},
});
history.push(IMPORT_ACCOUNT_ROUTE);
}}
icon={
<Icon name={IconName.Import} color={IconColor.iconAlternative} />
}
text={t('importAccount')}
/>
<AccountMenuItem
onClick={() => {
toggleAccountMenu();
trackEvent({
category: MetaMetricsEventCategory.Navigation,
event: MetaMetricsEventName.AccountAddSelected,
properties: {
account_type: MetaMetricsEventAccountType.Hardware,
location: 'Main Menu',
},
});
if (getEnvironmentType() === ENVIRONMENT_TYPE_POPUP) {
global.platform.openExtensionInBrowser(CONNECT_HARDWARE_ROUTE);
} else {
history.push(CONNECT_HARDWARE_ROUTE);
}
}}
icon={
<Icon name={IconName.Hardware} color={IconColor.iconAlternative} />
}
text={t('connectHardwareWallet')}
/>
{
///: BEGIN:ONLY_INCLUDE_IN(build-mmi)
<>
<AccountMenuItem
onClick={() => {
toggleAccountMenu();
trackEvent({
category: MetaMetricsEventCategory.Navigation,
event:
MetaMetricsEventName.UserClickedConnectCustodialAccount,
});
if (getEnvironmentType() === ENVIRONMENT_TYPE_POPUP) {
global.platform.openExtensionInBrowser(CUSTODY_ACCOUNT_ROUTE);
} else {
history.push(CUSTODY_ACCOUNT_ROUTE);
}
}}
Icon={
<Icon
name={IconName.Custody}
color={IconColor.primaryDefault}
/>
}
text={t('connectCustodialAccountMenu')}
/>
{mmiPortfolioEnabled && (
<AccountMenuItem
onClick={() => {
toggleAccountMenu();
trackEvent({
category: MetaMetricsEventCategory.Navigation,
event: MetaMetricsEventName.UserClickedPortfolioButton,
});
window.open(mmiPortfolioUrl, '_blank');
}}
Icon={
<Icon
name={IconName.MmmiPortfolioDashboard}
color={IconColor.primaryDefault}
/>
}
text={t('portfolioDashboard')}
/>
)}
<AccountMenuItem
onClick={() => {
toggleAccountMenu();
trackEvent({
category: MetaMetricsEventCategory.Navigation,
event: MetaMetricsEventName.UserClickedCompliance,
});
if (getEnvironmentType() === ENVIRONMENT_TYPE_POPUP) {
global.platform.openExtensionInBrowser(
COMPLIANCE_FEATURE_ROUTE,
);
} else {
history.push(COMPLIANCE_FEATURE_ROUTE);
}
}}
Icon={
<Icon
name={IconName.Compliance}
color={IconColor.primaryDefault}
/>
}
text={t('compliance')}
/>
</>
///: END:ONLY_INCLUDE_IN
}
<div className="account-menu__divider" />
{
///: BEGIN:ONLY_INCLUDE_IN(snaps)
<>
<AccountMenuItem
onClick={() => {
toggleAccountMenu();
history.push(NOTIFICATIONS_ROUTE);
}}
icon={
<div className="account-menu__notifications">
<Icon name={IconName.Notification} size={IconSize.Lg} />
{unreadNotificationsCount > 0 && (
<div className="account-menu__notifications__count">
{unreadNotificationsCount}
</div>
)}
</div>
}
text={t('notifications')}
/>
<div className="account-menu__divider" />
</>
///: END:ONLY_INCLUDE_IN
}
<AccountMenuItem
onClick={() => {
trackEvent(
{
category: MetaMetricsEventCategory.Navigation,
event: MetaMetricsEventName.SupportLinkClicked,
properties: {
url: supportLink,
},
},
{
contextPropsIntoEventProperties: [
MetaMetricsContextProp.PageTitle,
],
},
);
global.platform.openTab({ url: supportLink });
}}
icon={
<Icon name={IconName.Messages} color={IconColor.iconAlternative} />
}
text={supportText}
/>
<AccountMenuItem
onClick={() => {
toggleAccountMenu();
history.push(SETTINGS_ROUTE);
this.context.trackEvent({
category: MetaMetricsEventCategory.Navigation,
event: MetaMetricsEventName.NavSettingsOpened,
properties: {
location: 'Main Menu',
},
});
}}
icon={
<Icon
name={IconName.Setting}
color={IconColor.iconAlternative}
ariaLabel={t('settings')}
/>
}
text={t('settings')}
/>
</div>
);
}
}

View File

@ -1,81 +0,0 @@
import { connect } from 'react-redux';
import { compose } from 'redux';
import { withRouter } from 'react-router-dom';
///: BEGIN:ONLY_INCLUDE_IN(build-mmi)
import {
getMmiPortfolioEnabled,
getMmiPortfolioUrl,
getCustodyAccountDetails,
} from '../../../selectors/institutional/selectors';
///: END:ONLY_INCLUDE_IN
import {
toggleAccountMenu,
setSelectedAccount,
lockMetamask,
hideWarning,
} from '../../../store/actions';
import {
getAddressConnectedSubjectMap,
getMetaMaskAccountsOrdered,
getMetaMaskKeyrings,
getOriginOfCurrentTab,
getSelectedAddress,
///: BEGIN:ONLY_INCLUDE_IN(snaps)
getUnreadNotificationsCount,
///: END:ONLY_INCLUDE_IN
} from '../../../selectors';
import AccountMenu from './account-menu.component';
/**
* The min amount of accounts to show search field
*/
const SHOW_SEARCH_ACCOUNTS_MIN_COUNT = 5;
function mapStateToProps(state) {
const {
metamask: { isAccountMenuOpen },
} = state;
const accounts = getMetaMaskAccountsOrdered(state);
const origin = getOriginOfCurrentTab(state);
const selectedAddress = getSelectedAddress(state);
///: BEGIN:ONLY_INCLUDE_IN(snaps)
const unreadNotificationsCount = getUnreadNotificationsCount(state);
///: END:ONLY_INCLUDE_IN
return {
isAccountMenuOpen,
addressConnectedSubjectMap: getAddressConnectedSubjectMap(state),
originOfCurrentTab: origin,
selectedAddress,
keyrings: getMetaMaskKeyrings(state),
accounts,
shouldShowAccountsSearch: accounts.length >= SHOW_SEARCH_ACCOUNTS_MIN_COUNT,
///: BEGIN:ONLY_INCLUDE_IN(snaps)
unreadNotificationsCount,
///: END:ONLY_INCLUDE_IN
///: BEGIN:ONLY_INCLUDE_IN(build-mmi)
mmiPortfolioUrl: getMmiPortfolioUrl(state),
mmiPortfolioEnabled: getMmiPortfolioEnabled(state),
custodyAccountDetails: getCustodyAccountDetails(state),
///: END:ONLY_INCLUDE_IN
};
}
function mapDispatchToProps(dispatch) {
return {
toggleAccountMenu: () => dispatch(toggleAccountMenu()),
setSelectedAccount: (address) => {
dispatch(setSelectedAccount(address));
dispatch(toggleAccountMenu());
},
lockMetamask: () => {
dispatch(lockMetamask());
dispatch(hideWarning());
dispatch(toggleAccountMenu());
},
};
}
export default compose(
withRouter,
connect(mapStateToProps, mapDispatchToProps),
)(AccountMenu);

View File

@ -1,208 +0,0 @@
import React from 'react';
import sinon from 'sinon';
import configureMockStore from 'redux-mock-store';
import { fireEvent, screen } from '@testing-library/react';
import { renderWithProvider } from '../../../../test/lib/render-helpers';
import { KeyringType } from '../../../../shared/constants/keyring';
import AccountMenu from '.';
const initialProps = {
isAccountMenuOpen: true,
addressConnectedSubjectMap: {},
accounts: [
{
address: '0x00',
name: 'Account 1',
balance: '0x0',
},
{
address: '0x1',
name: 'Imported Account 1',
balance: '0x0',
},
],
keyrings: [
{
type: KeyringType.hdKeyTree,
accounts: ['0xAdress'],
},
{
type: KeyringType.imported,
accounts: ['0x1'],
},
],
prevIsAccountMenuOpen: false,
lockMetamask: sinon.spy(),
setSelectedAccount: sinon.spy(),
showRemoveAccountConfirmationModal: sinon.spy(),
toggleAccountMenu: sinon.spy(),
history: {
push: sinon.spy(),
},
};
const mockStore = {
metamask: {
providerConfig: {
type: 'test',
},
preferences: {
useNativeCurrencyAsPrimaryCurrency: true,
},
},
};
const renderComponent = ({ props = initialProps } = {}) => {
const store = configureMockStore()(mockStore);
return renderWithProvider(<AccountMenu.WrappedComponent {...props} />, store);
};
describe('Account Menu', () => {
beforeEach(() => renderComponent());
afterEach(() => {
initialProps.toggleAccountMenu.resetHistory();
initialProps.history.push.resetHistory();
});
describe('Render Content', () => {
it('returns account name from identities', () => {
const accountName = screen.queryAllByTestId('account-menu__account');
expect(accountName).toHaveLength(2);
});
it('renders user preference currency display balance from account balance', () => {
const accountBalance = screen.queryAllByTestId('account-menu__balance');
expect(accountBalance).toHaveLength(4);
});
it('simulate click', () => {
const click = screen.getAllByTestId('account-menu__account');
fireEvent.click(click[0]);
expect(initialProps.setSelectedAccount.calledOnce).toStrictEqual(true);
expect(initialProps.setSelectedAccount.getCall(0).args[0]).toStrictEqual(
'0x00',
);
});
it('render imported account label', () => {
const importedAccount = screen.getByText('Imported');
expect(importedAccount).toBeInTheDocument();
});
it('should not render keyring label if keyring tyoe is Custody - JSONRPC', () => {
const props = {
...initialProps,
keyrings: [
{
type: 'Custody - JSONRPC',
accounts: ['0xAdress'],
},
{
type: 'Custody - JSONRPC',
accounts: ['0x1'],
},
],
};
const { container } = renderComponent({ props });
expect(container).toMatchSnapshot();
});
});
describe('Log Out', () => {
it('logout', () => {
const logout = screen.getByText('Lock');
expect(logout).toBeInTheDocument();
});
it('simulate click', () => {
const logout = screen.getByText('Lock');
fireEvent.click(logout);
expect(initialProps.lockMetamask.calledOnce).toStrictEqual(true);
expect(initialProps.history.push.getCall(0).args[0]).toStrictEqual('/');
});
});
describe('Create Account', () => {
it('renders create account item', () => {
const createAccount = screen.getByText('Create account');
expect(createAccount).toBeInTheDocument();
});
it('calls toggle menu and push new-account route to history', () => {
const createAccount = screen.getByText('Create account');
fireEvent.click(createAccount);
expect(initialProps.toggleAccountMenu.calledOnce).toStrictEqual(true);
expect(initialProps.history.push.getCall(0).args[0]).toStrictEqual(
'/new-account',
);
});
});
describe('Import Account', () => {
it('renders import account item', () => {
const importAccount = screen.getByText('Import account');
expect(importAccount).toBeInTheDocument();
});
it('calls toggle menu and push /new-account/import route to history', () => {
const importAccount = screen.getByText('Import account');
fireEvent.click(importAccount);
expect(initialProps.toggleAccountMenu.calledOnce).toStrictEqual(true);
expect(initialProps.history.push.getCall(0).args[0]).toStrictEqual(
'/new-account/import',
);
});
});
describe('Connect hardware wallet', () => {
it('renders import account item', () => {
const connectHardwareWallet = screen.getByText('Connect hardware wallet');
expect(connectHardwareWallet).toBeInTheDocument();
});
it('calls toggle menu and push /new-account/connect route to history', () => {
const connectHardwareWallet = screen.getByText('Connect hardware wallet');
fireEvent.click(connectHardwareWallet);
expect(initialProps.toggleAccountMenu.calledOnce).toStrictEqual(true);
expect(initialProps.history.push.getCall(0).args[0]).toStrictEqual(
'/new-account/connect',
);
});
});
describe('Support', () => {
global.platform = { openTab: sinon.spy() };
it('renders import account item', () => {
const support = screen.getByText('Submit a ticket');
expect(support).toBeInTheDocument();
});
it('opens support link when clicked', () => {
const support = screen.getByText('Submit a ticket');
fireEvent.click(support);
expect(global.platform.openTab.calledOnce).toStrictEqual(true);
});
});
describe('Settings', () => {
it('renders import account item', () => {
const settings = screen.getByText('Settings');
expect(settings).toBeInTheDocument();
});
it('calls toggle menu and push /new-account/connect route to history', () => {
const settings = screen.getByText('Settings');
fireEvent.click(settings);
expect(initialProps.toggleAccountMenu.calledOnce).toStrictEqual(true);
expect(initialProps.history.push.getCall(0).args[0]).toStrictEqual(
'/settings',
);
});
});
});

View File

@ -1 +0,0 @@
export { default } from './account-menu.container';

View File

@ -1,291 +0,0 @@
.account-menu {
position: absolute;
z-index: 100;
top: 58px;
width: 320px;
border-radius: 4px;
background: var(--color-background-default);
box-shadow: var(--shadow-size-sm) var(--color-shadow-default);
min-width: 150px;
color: var(--color-text-default);
@include screen-sm-max {
right: 16px;
}
@include screen-sm-min {
right: calc((100vw - 85vw) / 2);
}
@include screen-md-min {
right: calc((100vw - 80vw) / 2);
}
@include screen-lg-min {
right: calc((100vw - 65vw) / 2);
}
&__item {
padding: 18px;
display: flex;
flex-flow: row wrap;
align-items: center;
position: relative;
z-index: 201;
border: 0;
background: none;
width: 100%;
@include screen-sm-max {
padding: 0 14px;
height: 40px;
}
&--clickable {
cursor: pointer;
&:hover {
background-color: var(--color-background-default-hover);
}
&:active {
background-color: var(--color-background-default-hover);
}
}
&__icon {
margin-right: 8px;
display: flex;
color: var(--color-icon-alternative);
i {
text-align: center;
width: 24px;
}
}
&__text {
@include H6;
@include screen-md-min {
@include Paragraph;
}
color: var(--color-text-default);
}
&__subtext {
@include H7;
padding: 5px 0 0 30px;
}
}
&__divider {
background-color: var(--color-border-muted);
width: 100%;
height: 1px;
}
&__close-area {
position: fixed;
width: 100%;
height: 100%;
top: 0;
left: 0;
z-index: 100;
}
&__icon {
margin-left: 1rem;
cursor: pointer;
&--disabled {
cursor: initial;
}
}
&__header {
display: flex;
flex-flow: row nowrap;
justify-content: space-between;
align-items: center;
}
& &__lock-button {
@include H7;
padding: 0.25rem 0.5rem;
min-width: 59px;
width: auto;
}
&__accounts-container {
display: flex;
position: relative;
flex-direction: column;
z-index: 200;
}
&__accounts {
overflow-y: auto;
position: relative;
max-height: 256px;
scrollbar-width: auto;
@include screen-sm-max {
max-height: 240px;
}
// If window is smaller than extension popover height
// reduce scrollable accounts window height
@media screen and (max-height: 600px) {
max-height: 130px;
}
.keyring-label {
@include H9;
z-index: 1;
border-radius: 10px;
padding: 4px;
text-align: center;
height: 15px;
margin-top: 5px;
margin-right: 10px;
background-color: var(--color-background-alternative);
border: 1px solid var(--color-border-default);
color: var(--color-text-default);
font-weight: normal;
letter-spacing: 0.5px;
display: flex;
align-items: center;
}
}
&__notifications {
position: relative;
&__count {
position: absolute;
display: flex;
align-items: center;
justify-content: center;
right: 0;
bottom: 0;
min-width: 12px;
min-height: 12px;
font-size: 8px;
border-radius: 50%;
background-color: var(--color-primary-default);
color: var(--color-primary-inverse);
}
}
&__no-accounts {
@include H6;
padding: 16px 14px;
}
&__account {
display: flex;
flex-flow: row nowrap;
padding: 16px 14px;
flex: 0 0 auto;
background: none;
border: 0;
width: 100%;
@include screen-sm-max {
padding: 12px 14px;
}
.remove-account-icon {
width: 15px;
margin-left: 10px;
height: 15px;
}
&:hover {
.remove-account-icon::after {
content: '\00D7';
font-size: 25px;
color: var(--color-text-default);
cursor: pointer;
position: absolute;
margin-top: -5px;
}
}
}
&__account-info {
flex: 1 0 auto;
display: flex;
flex-flow: column nowrap;
}
&__check-mark {
margin-right: 8px;
flex: 0 0 auto;
min-width: 24px;
}
.identicon {
margin: 0 12px 0 0;
flex: 0 0 auto;
}
&__name {
@include H6;
@include screen-md-min {
@include Paragraph;
}
color: var(--color-text-default);
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
max-width: 200px;
text-align: start;
}
&__balance {
@include H6;
color: var(--color-text-alternative);
}
&__action {
@include Paragraph;
cursor: pointer;
}
&__scroll-button {
position: absolute;
bottom: 12px;
right: 12px;
height: 28px;
width: 28px;
border-radius: 14px;
border: 1px solid var(--color-border-default);
background: var(--color-background-alternative);
color: var(--color-icon-default);
z-index: 201;
cursor: pointer;
opacity: 0.8;
display: flex;
justify-content: center;
align-items: center;
&:hover {
opacity: 1;
}
}
&__icon-list {
display: flex;
}
}

View File

@ -1,56 +0,0 @@
import React from 'react';
import PropTypes from 'prop-types';
import { useI18nContext } from '../../../hooks/useI18nContext';
import { HardwareKeyringNames } from '../../../../shared/constants/hardware-wallets';
import { KeyringType } from '../../../../shared/constants/keyring';
export default function KeyRingLabel({ keyring }) {
const t = useI18nContext();
let label = null;
// Keyring value might take a while to get a value
if (!keyring) {
return null;
}
const { type } = keyring;
switch (type) {
case KeyringType.qr:
label = HardwareKeyringNames.qr;
break;
case KeyringType.imported:
label = t('imported');
break;
case KeyringType.trezor:
label = HardwareKeyringNames.trezor;
break;
case KeyringType.ledger:
label = HardwareKeyringNames.ledger;
break;
case KeyringType.lattice:
label = HardwareKeyringNames.lattice;
break;
default:
label = null;
}
///: BEGIN:ONLY_INCLUDE_IN(build-mmi)
if (type.startsWith('Custody') && /JSONRPC/u.test(type)) {
label = type.split(' - ')[1];
return null;
}
///: END:ONLY_INCLUDE_IN
if (label === null) {
return label;
}
return (
<>{label ? <div className="keyring-label allcaps">{label}</div> : null}</>
);
}
KeyRingLabel.propTypes = {
keyring: PropTypes.object,
};

View File

@ -1,14 +1,10 @@
/** Please import your files in alphabetical order **/
@import 'account-list-item/index';
@import 'account-menu/index';
@import 'add-network/index';
@import 'advanced-gas-inputs/index';
@import 'app-loading-spinner/index';
@import 'import-token-link/index';
@import 'advanced-gas-controls/index';
@import 'alerts/alerts';
@import 'app-header/index';
@import 'asset-list-item/asset-list-item';
@import 'beta-header/index';
@import 'cancel-speedup-popover/index';
@import 'confirm-page-container/index';
@ -49,7 +45,6 @@
@import 'hold-to-reveal-button/index';
@import 'home-notification/index';
@import 'info-box/index';
@import 'menu-bar/index';
@import 'modal/index';
@import 'modals/index';
@import 'multilayer-fee-message/index';
@ -94,7 +89,6 @@
@import 'advanced-gas-fee-popover/advanced-gas-fee-input-subtext/index';
@import 'advanced-gas-fee-popover/advanced-gas-fee-defaults/index';
@import 'currency-input/index';
@import 'asset-list/detected-tokens-link/index';
@import 'detected-token/detected-token-address/index';
@import 'detected-token/detected-token-aggregators/index';
@import 'detected-token/detected-token-values/index';

View File

@ -1,301 +0,0 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`App Header should match snapshot 1`] = `
<div>
<div
class="app-header"
>
<div
class="app-header__contents"
>
<div
class="app-header__logo-container app-header__logo-container--clickable"
data-testid="app-header-logo"
>
<svg
class="app-header__metafox-logo--horizontal"
height="30"
viewBox="0 0 1311 242"
width="162"
xmlns="http://www.w3.org/2000/svg"
>
<g
fill="none"
>
<g
fill="var(--color-text-default)"
transform="translate(361 61)"
>
<path
d="m796.7 60.9c-6.8-4.5-14.3-7.7-21.4-11.7-4.6-2.6-9.5-4.9-13.5-8.2-6.8-5.6-5.4-16.6 1.7-21.4 10.2-6.8 27.1-3 28.9 10.9 0 .3.3.5.6.5h15.4c.4 0 .7-.3.6-.7-.8-9.6-4.5-17.6-11.3-22.7-6.5-4.9-13.9-7.5-21.8-7.5-40.7 0-44.4 43.1-22.5 56.7 2.5 1.6 24 12.4 31.6 17.1s10 13.3 6.7 20.1c-3 6.2-10.8 10.5-18.6 10-8.5-.5-15.1-5.1-17.4-12.3-.4-1.3-.6-3.8-.6-4.9 0-.3-.3-.6-.6-.6h-16.7c-.3 0-.6.3-.6.6 0 12.1 3 18.8 11.2 24.9 7.7 5.8 16.1 8.2 24.8 8.2 22.8 0 34.6-12.9 37-26.3 2.1-13.1-1.8-24.9-13.5-32.7z"
/>
<path
d="m71.6 2.3h-7.4-8.1c-.3 0-.5.2-.6.4l-13.7 45.2c-.2.6-1 .6-1.2 0l-13.7-45.2c-.1-.3-.3-.4-.6-.4h-8.1-7.4-10c-.3 0-.6.3-.6.6v115.4c0 .3.3.6.6.6h16.7c.3 0 .6-.3.6-.6v-87.7c0-.7 1-.8 1.2-.2l13.8 45.5 1 3.2c.1.3.3.4.6.4h12.8c.3 0 .5-.2.6-.4l1-3.2 13.8-45.5c.2-.7 1.2-.5 1.2.2v87.7c0 .3.3.6.6.6h16.7c.3 0 .6-.3.6-.6v-115.4c0-.3-.3-.6-.6-.6z"
/>
<path
d="m541 2.3c-.3 0-.5.2-.6.4l-13.7 45.2c-.2.6-1 .6-1.2 0l-13.7-45.2c-.1-.3-.3-.4-.6-.4h-25.4c-.3 0-.6.3-.6.6v115.4c0 .3.3.6.6.6h16.7c.3 0 .6-.3.6-.6v-87.7c0-.7 1-.8 1.2-.2l13.8 45.5 1 3.2c.1.3.3.4.6.4h12.8c.3 0 .5-.2.6-.4l1-3.2 13.8-45.5c.2-.7 1.2-.5 1.2.2v87.7c0 .3.3.6.6.6h16.7c.3 0 .6-.3.6-.6v-115.4c0-.3-.3-.6-.6-.6z"
/>
<path
d="m325.6 2.3h-31.1-16.7-31.1c-.3 0-.6.3-.6.6v14.4c0 .3.3.6.6.6h30.5v100.4c0 .3.3.6.6.6h16.7c.3 0 .6-.3.6-.6v-100.4h30.5c.3 0 .6-.3.6-.6v-14.4c0-.3-.2-.6-.6-.6z"
/>
<path
d="m424.1 118.9h15.2c.4 0 .7-.4.6-.8l-31.4-115.8c-.1-.3-.3-.4-.6-.4h-5.8-10.2-5.8c-.3 0-.5.2-.6.4l-31.4 115.8c-.1.4.2.8.6.8h15.2c.3 0 .5-.2.6-.4l9.1-33.7c.1-.3.3-.4.6-.4h33.6c.3 0 .5.2.6.4l9.1 33.7c.1.2.4.4.6.4zm-39.9-51 12.2-45.1c.2-.6 1-.6 1.2 0l12.2 45.1c.1.4-.2.8-.6.8h-24.4c-.4 0-.7-.4-.6-.8z"
/>
<path
d="m683.3 118.9h15.2c.4 0 .7-.4.6-.8l-31.4-115.8c-.1-.3-.3-.4-.6-.4h-5.8-10.2-5.8c-.3 0-.5.2-.6.4l-31.4 115.8c-.1.4.2.8.6.8h15.2c.3 0 .5-.2.6-.4l9.1-33.7c.1-.3.3-.4.6-.4h33.6c.3 0 .5.2.6.4l9.1 33.7c.1.2.3.4.6.4zm-39.9-51 12.2-45.1c.2-.6 1-.6 1.2 0l12.2 45.1c.1.4-.2.8-.6.8h-24.4c-.4 0-.7-.4-.6-.8z"
/>
<path
d="m149.8 101.8v-35.8c0-.3.3-.6.6-.6h44.5c.3 0 .6-.3.6-.6v-14.4c0-.3-.3-.6-.6-.6h-44.5c-.3 0-.6-.3-.6-.6v-30.6c0-.3.3-.6.6-.6h50.6c.3 0 .6-.3.6-.6v-14.4c0-.3-.3-.6-.6-.6h-51.2-17.3c-.3 0-.6.3-.6.6v15 31.9 15.6 37 15.8c0 .3.3.6.6.6h17.3 53.3c.3 0 .6-.3.6-.6v-15.2c0-.3-.3-.6-.6-.6h-52.8c-.3-.1-.5-.3-.5-.7z"
/>
<path
d="m949.3 117.9-57.8-59.7c-.2-.2-.2-.6 0-.8l52-54c.4-.4.1-1-.4-1h-21.3c-.2 0-.3.1-.4.2l-44.1 45.8c-.4.4-1 .1-1-.4v-45c0-.3-.3-.6-.6-.6h-16.7c-.3 0-.6.3-.6.6v115.4c0 .3.3.6.6.6h16.7c.3 0 .6-.3.6-.6v-50.8c0-.5.7-.8 1-.4l50 51.6c.1.1.3.2.4.2h21.3c.4-.1.7-.8.3-1.1z"
/>
</g>
<g
stroke-linecap="round"
stroke-linejoin="round"
transform="translate(1 1)"
>
<path
d="m246.1.2-101.1 75 18.8-44.2z"
fill="#e17726"
stroke="#e17726"
/>
<g
fill="#e27625"
stroke="#e27625"
transform="translate(2)"
>
<path
d="m10.9.2 100.2 75.7-17.9-44.9z"
/>
<path
d="m207.7 174.1-26.9 41.2 57.6 15.9 16.5-56.2z"
/>
<path
d="m.2 175 16.4 56.2 57.5-15.9-26.8-41.2z"
/>
<path
d="m71 104.5-16 24.2 57 2.6-1.9-61.5z"
/>
<path
d="m184 104.5-39.7-35.4-1.3 62.2 57-2.6z"
/>
<path
d="m74.1 215.3 34.5-16.7-29.7-23.2z"
/>
<path
d="m146.4 198.6 34.4 16.7-4.7-39.9z"
/>
</g>
<g
fill="#d5bfb2"
stroke="#d5bfb2"
transform="translate(76 198)"
>
<path
d="m106.8 17.3-34.4-16.7 2.8 22.4-.3 9.5z"
/>
<path
d="m.1 17.3 32 15.2-.2-9.5 2.7-22.4z"
/>
</g>
<path
d="m108.7 160.6-28.6-8.4 20.2-9.3z"
fill="#233447"
stroke="#233447"
/>
<path
d="m150.3 160.6 8.4-17.7 20.3 9.3z"
fill="#233447"
stroke="#233447"
/>
<g
fill="#cc6228"
stroke="#cc6228"
transform="translate(49 128)"
>
<path
d="m27.1 87.3 5-41.2-31.8.9z"
/>
<path
d="m128.9 46.1 4.9 41.2 26.9-40.3z"
/>
<path
d="m153 .7-57 2.6 5.3 29.3 8.4-17.7 20.3 9.3z"
/>
<path
d="m31.1 24.2 20.2-9.3 8.4 17.7 5.3-29.3-57-2.6z"
/>
</g>
<g
fill="#e27525"
stroke="#e27525"
transform="translate(57 128)"
>
<path
d="m0 .7 23.9 46.7-.8-23.2z"
/>
<path
d="m122 24.2-.9 23.2 23.9-46.7z"
/>
<path
d="m57 3.3-5.3 29.3 6.7 34.6 1.5-45.6z"
/>
<path
d="m88 3.3-2.8 18.2 1.4 45.7 6.7-34.6z"
/>
</g>
<path
d="m150.3 160.6-6.7 34.6 4.8 3.4 29.7-23.2.9-23.2z"
fill="#f5841f"
stroke="#f5841f"
/>
<path
d="m80.1 152.2.8 23.2 29.7 23.2 4.8-3.4-6.7-34.6z"
fill="#f5841f"
stroke="#f5841f"
/>
<path
d="m150.9 230.5.3-9.5-2.6-2.2h-38.2l-2.5 2.2.2 9.5-32-15.2 11.2 9.2 22.7 15.7h38.9l22.8-15.7 11.1-9.2z"
fill="#c0ac9d"
stroke="#c0ac9d"
/>
<path
d="m148.4 198.6-4.8-3.4h-28.2l-4.8 3.4-2.7 22.4 2.5-2.2h38.2l2.6 2.2z"
fill="#161616"
stroke="#161616"
/>
<g
fill="#763e1a"
stroke="#763e1a"
>
<path
d="m250.4 80.1 8.5-41.4-12.8-38.5-97.7 72.5 37.6 31.8 53.1 15.5 11.7-13.7-5.1-3.7 8.1-7.4-6.2-4.8 8.1-6.2z"
/>
<path
d="m.1 38.7 8.6 41.4-5.5 4.1 8.2 6.2-6.2 4.8 8.1 7.4-5.1 3.7 11.7 13.7 53.1-15.5 37.6-31.8-97.7-72.5z"
/>
</g>
<g
fill="#f5841f"
stroke="#f5841f"
>
<path
d="m239.1 120-53.1-15.5 16 24.2-23.9 46.7 31.6-.4h47.2z"
/>
<path
d="m73 104.5-53.1 15.5-17.7 55h47.1l31.6.4-23.9-46.7z"
/>
<path
d="m145 131.3 3.4-58.6 15.4-41.7h-68.6l15.4 41.7 3.4 58.6 1.3 18.4.1 45.5h28.2l.1-45.5z"
/>
</g>
</g>
</g>
</svg>
<img
alt=""
class="app-header__metafox-logo--icon"
src="./images/logo/metamask-fox.svg"
/>
</div>
<div
class="app-header__account-menu-container"
>
<div
class="app-header__network-component-wrapper"
>
<div
class="network-display network-display--clickable chip chip--with-left-icon chip--with-right-icon chip--border-color-border-default chip--background-color-undefined chip--max-content"
data-testid="network-display"
role="button"
tabindex="0"
>
<div
class="chip__left-icon"
>
<div
class="color-indicator color-indicator--filled color-indicator--color-icon-muted color-indicator--size-lg"
data-testid="color-icon-icon-muted"
>
<i
class="color-indicator__icon fa fa-question"
/>
</div>
</div>
<span
class="box box--margin-top-1 box--margin-bottom-1 box--flex-direction-row typography chip__label typography--h7 typography--weight-normal typography--style-normal typography--color-text-alternative"
>
Private network
</span>
<div
class="chip__right-icon"
>
<span
class="box mm-icon mm-icon--size-xs box--display-inline-block box--flex-direction-row box--color-inherit"
style="mask-image: url('./images/icons/arrow-down.svg');"
/>
</div>
</div>
</div>
<button
class="account-menu__icon"
data-testid="account-menu-icon"
>
<div
class="identicon__address-wrapper"
style="height: 40px; width: 40px; border-radius: 20px;"
>
<div
class="identicon"
style="height: 32px; width: 32px; border-radius: 16px;"
>
<div
style="border-radius: 50px; overflow: hidden; padding: 0px; margin: 0px; width: 32px; height: 32px; display: inline-block; background: rgb(250, 58, 0);"
>
<svg
height="32"
width="32"
x="0"
y="0"
>
<rect
fill="#18CDF2"
height="32"
transform="translate(-1.04839350379394 -3.3042840694604987) rotate(328.9 16 16)"
width="32"
x="0"
y="0"
/>
<rect
fill="#035E56"
height="32"
transform="translate(-18.298461708832043 10.5924618717486) rotate(176.2 16 16)"
width="32"
x="0"
y="0"
/>
<rect
fill="#F26602"
height="32"
transform="translate(16.667842018223922 -14.205139722997082) rotate(468.9 16 16)"
width="32"
x="0"
y="0"
/>
</svg>
</div>
</div>
</div>
<div
class="account-menu__icon__notification-count"
>
1
</div>
</button>
</div>
</div>
</div>
</div>
`;

View File

@ -1,195 +0,0 @@
import React, { PureComponent } from 'react';
import PropTypes from 'prop-types';
import classnames from 'classnames';
import Identicon from '../../ui/identicon';
import MetaFoxLogo from '../../ui/metafox-logo';
import { DEFAULT_ROUTE } from '../../../helpers/constants/routes';
import {
MetaMetricsEventCategory,
MetaMetricsEventName,
} from '../../../../shared/constants/metametrics';
import NetworkDisplay from '../network-display';
///: BEGIN:ONLY_INCLUDE_IN(build-beta)
import BetaHeader from '../beta-header';
///: END:ONLY_INCLUDE_IN
export default class AppHeader extends PureComponent {
static propTypes = {
history: PropTypes.object,
networkDropdownOpen: PropTypes.bool,
showNetworkDropdown: PropTypes.func,
hideNetworkDropdown: PropTypes.func,
toggleAccountMenu: PropTypes.func,
selectedAddress: PropTypes.string,
isUnlocked: PropTypes.bool,
hideNetworkIndicator: PropTypes.bool,
disabled: PropTypes.bool,
disableNetworkIndicator: PropTypes.bool,
isAccountMenuOpen: PropTypes.bool,
///: BEGIN:ONLY_INCLUDE_IN(snaps)
unreadNotificationsCount: PropTypes.number,
///: END:ONLY_INCLUDE_IN
///: BEGIN:ONLY_INCLUDE_IN(desktop)
desktopEnabled: PropTypes.bool,
///: END:ONLY_INCLUDE_IN
///: BEGIN:ONLY_INCLUDE_IN(build-beta)
showBetaHeader: PropTypes.bool,
///: END:ONLY_INCLUDE_IN
onClick: PropTypes.func,
///: BEGIN:ONLY_INCLUDE_IN(build-mmi)
custodianIcon: PropTypes.string,
///: END:ONLY_INCLUDE_IN
};
static contextTypes = {
t: PropTypes.func,
trackEvent: PropTypes.func,
};
handleNetworkIndicatorClick(event) {
event.preventDefault();
event.stopPropagation();
const {
networkDropdownOpen,
showNetworkDropdown,
hideNetworkDropdown,
disabled,
disableNetworkIndicator,
} = this.props;
if (disabled || disableNetworkIndicator) {
return;
}
if (networkDropdownOpen === false) {
this.context.trackEvent({
category: MetaMetricsEventCategory.Navigation,
event: MetaMetricsEventName.NavNetworkMenuOpened,
properties: {},
});
showNetworkDropdown();
} else {
hideNetworkDropdown();
}
}
renderAccountMenu() {
const {
isUnlocked,
toggleAccountMenu,
selectedAddress,
disabled,
isAccountMenuOpen,
///: BEGIN:ONLY_INCLUDE_IN(snaps)
unreadNotificationsCount,
///: END:ONLY_INCLUDE_IN
} = this.props;
return (
isUnlocked && (
<button
data-testid="account-menu-icon"
className={classnames('account-menu__icon', {
'account-menu__icon--disabled': disabled,
})}
disabled={Boolean(disabled)}
onClick={() => {
if (!disabled) {
!isAccountMenuOpen &&
this.context.trackEvent({
category: MetaMetricsEventCategory.Navigation,
event: MetaMetricsEventName.NavMainMenuOpened,
properties: {},
});
toggleAccountMenu();
}
}}
>
<Identicon address={selectedAddress} diameter={32} addBorder />
{
///: BEGIN:ONLY_INCLUDE_IN(snaps)
unreadNotificationsCount > 0 && (
<div className="account-menu__icon__notification-count">
{unreadNotificationsCount}
</div>
)
///: END:ONLY_INCLUDE_IN
}
</button>
)
);
}
render() {
const {
history,
hideNetworkIndicator,
disableNetworkIndicator,
disabled,
onClick,
///: BEGIN:ONLY_INCLUDE_IN(build-beta)
showBetaHeader,
///: END:ONLY_INCLUDE_IN
///: BEGIN:ONLY_INCLUDE_IN(desktop)
desktopEnabled,
///: END:ONLY_INCLUDE_IN
///: BEGIN:ONLY_INCLUDE_IN(build-mmi)
custodianIcon,
isUnlocked,
///: END:ONLY_INCLUDE_IN
} = this.props;
return (
<>
{
///: BEGIN:ONLY_INCLUDE_IN(build-beta)
showBetaHeader ? <BetaHeader /> : null
///: END:ONLY_INCLUDE_IN
}
<div className="app-header">
<div className="app-header__contents">
<MetaFoxLogo
unsetIconHeight
onClick={async () => {
if (onClick) {
await onClick();
}
history.push(DEFAULT_ROUTE);
}}
///: BEGIN:ONLY_INCLUDE_IN(build-mmi)
custodyImgSrc={custodianIcon}
isUnlocked={isUnlocked}
///: END:ONLY_INCLUDE_IN
/>
{
///: BEGIN:ONLY_INCLUDE_IN(desktop)
desktopEnabled && process.env.METAMASK_DEBUG && (
<div data-testid="app-header-desktop-dev-logo">
<MetaFoxLogo
unsetIconHeight
src="./images/logo/desktop.svg"
/>
</div>
)
///: END:ONLY_INCLUDE_IN
}
<div className="app-header__account-menu-container">
{!hideNetworkIndicator && (
<div className="app-header__network-component-wrapper">
<NetworkDisplay
onClick={(event) => this.handleNetworkIndicatorClick(event)}
disabled={disabled || disableNetworkIndicator}
/>
</div>
)}
{this.renderAccountMenu()}
</div>
</div>
</div>
</>
);
}
}

Some files were not shown because too many files have changed in this diff Show More