From dc3fa104d2c74f718f3d73854f392d4b857aa7e4 Mon Sep 17 00:00:00 2001 From: David Murdoch <187813+davidmurdoch@users.noreply.github.com> Date: Thu, 10 Oct 2024 10:47:51 -0400 Subject: [PATCH 1/4] docs: remove outdated Medium link, update "Twitter" to "X" (#26692) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Our up-to-the-minute Medium link was last updated in 2022. And Twitter hasn't been called Twitter for a while now. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d70eb03a32b2..4f15e138be56 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ For [general questions](https://community.metamask.io/c/learn/26), [feature requ MetaMask supports Firefox, Google Chrome, and Chromium-based browsers. We recommend using the latest available browser version. -For up to the minute news, follow our [Twitter](https://twitter.com/metamask) or [Medium](https://medium.com/metamask) pages. +For up to the minute news, follow us on [X](https://x.com/MetaMask). To learn how to develop MetaMask-compatible applications, visit our [Developer Docs](https://metamask.github.io/metamask-docs/). From 0798717a81a98e4f1283ec8f9e664bd835b855c5 Mon Sep 17 00:00:00 2001 From: Vince Howard Date: Thu, 10 Oct 2024 09:05:24 -0600 Subject: [PATCH 2/4] chore(3212): remove alert settings (#27709) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** This PR removes the "Alerts" section from the Extension's Settings menu, preparing for future updates. The two settings previously offered here, `unconnectedAccount` and `web3ShimUsage`, are no longer configurable and will remain toggled on by default. All related UI elements and tests have been removed. Rationale for removal: - `unconnectedAccount`: This feature, which alerts users when browsing a website with an unconnected account selected, is now considered a core functionality that doesn't require user configuration. - `web3ShimUsage`: This setting was introduced to inform users why a dapp might be broken due to using the deprecated window.web3 API. However, current data shows limited usage, primarily from non-crypto sites, and the warning only displays for connected dapps, limiting its effectiveness. This change paves the way for repurposing the bell icon for a new Notifications feature. Testing confirms that this removal doesn't affect other parts of the extension, and all remaining tests pass successfully. **Note:** Controller/state related removal will be addressed in a separate pull request and [tracked in a separate issue](https://github.com/MetaMask/MetaMask-planning/issues/3480). [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/27230?quickstart=1) ## **Related issues** Fixes: [#3212](https://github.com/MetaMask/MetaMask-planning/issues/3212) ## **Manual testing steps** 1. Goto settings page by clicking on the more icon which are the three dots in the top right corner, and then click on settings. 2. Check to see if the "Alerts" settings are gone 3. Search for "Alerts" in the settings search and make sure nothing appears other than "Security & Privacy > Security Alerts" which is unrelated to the "Alerts" section being removed ## **Screenshots/Recordings** NA ### **Before** #### Menu before_menu #### Search before_search ### **After** #### Menu after_menu #### Search after_search ## **Pre-merge author checklist** - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [x] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [x] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- app/_locales/de/messages.json | 12 --- app/_locales/el/messages.json | 12 --- app/_locales/en/messages.json | 12 --- app/_locales/en_GB/messages.json | 12 --- app/_locales/es/messages.json | 12 --- app/_locales/es_419/messages.json | 12 --- app/_locales/fr/messages.json | 12 --- app/_locales/hi/messages.json | 12 --- app/_locales/id/messages.json | 12 --- app/_locales/it/messages.json | 12 --- app/_locales/ja/messages.json | 12 --- app/_locales/ko/messages.json | 12 --- app/_locales/ph/messages.json | 12 --- app/_locales/pt/messages.json | 12 --- app/_locales/pt_BR/messages.json | 12 --- app/_locales/ru/messages.json | 12 --- app/_locales/tl/messages.json | 12 --- app/_locales/tr/messages.json | 12 --- app/_locales/vi/messages.json | 12 --- app/_locales/zh_CN/messages.json | 12 --- app/_locales/zh_TW/messages.json | 12 --- .../files-to-convert.json | 3 - .../tests/settings/settings-search.spec.js | 26 ------ ui/helpers/constants/routes.ts | 3 - ui/helpers/constants/settings.js | 15 ---- ui/helpers/utils/settings-search.test.js | 8 -- ui/pages/settings/alerts-tab/alerts-tab.js | 87 ------------------- ui/pages/settings/alerts-tab/alerts-tab.scss | 38 -------- .../settings/alerts-tab/alerts-tab.stories.js | 14 --- .../settings/alerts-tab/alerts-tab.test.js | 42 --------- ui/pages/settings/alerts-tab/index.js | 1 - ui/pages/settings/index.scss | 1 - ui/pages/settings/settings.component.js | 8 -- ui/pages/settings/settings.container.js | 2 - ui/pages/settings/settings.stories.js | 2 - 35 files changed, 502 deletions(-) delete mode 100644 ui/pages/settings/alerts-tab/alerts-tab.js delete mode 100644 ui/pages/settings/alerts-tab/alerts-tab.scss delete mode 100644 ui/pages/settings/alerts-tab/alerts-tab.stories.js delete mode 100644 ui/pages/settings/alerts-tab/alerts-tab.test.js delete mode 100644 ui/pages/settings/alerts-tab/index.js diff --git a/app/_locales/de/messages.json b/app/_locales/de/messages.json index 26a5018b00ad..b744300f8656 100644 --- a/app/_locales/de/messages.json +++ b/app/_locales/de/messages.json @@ -447,18 +447,6 @@ "alertReasonWrongAccount": { "message": "Falsches Konto" }, - "alertSettingsUnconnectedAccount": { - "message": "Eine Webseite mit einem nicht verknüpften Konto durchsuchen" - }, - "alertSettingsUnconnectedAccountDescription": { - "message": "Diese Warnung wird im Popup angezeigt, wenn Sie eine verbundene Webseite durchsuchen, aber das aktuell ausgewählte Konto ist nicht verbunden." - }, - "alertSettingsWeb3ShimUsage": { - "message": "Wenn eine Webseite versucht, die entfernte window.web3 API zu verwenden" - }, - "alertSettingsWeb3ShimUsageDescription": { - "message": "Diese Benachrichtigung wird in einem Popup-Fenster angezeigt, wenn Sie eine Website besuchen, die versucht, die entfernte window.web3-API zu verwenden, und die dadurch möglicherweise beschädigt wird." - }, "alerts": { "message": "Benachrichtigungen" }, diff --git a/app/_locales/el/messages.json b/app/_locales/el/messages.json index afeba57dfb6f..acafb24be5b6 100644 --- a/app/_locales/el/messages.json +++ b/app/_locales/el/messages.json @@ -447,18 +447,6 @@ "alertReasonWrongAccount": { "message": "Λάθος λογαριασμός" }, - "alertSettingsUnconnectedAccount": { - "message": "Περιήγηση σε έναν ιστότοπο με έναν μη συνδεδεμένο επιλέγμενο λογαριασμό" - }, - "alertSettingsUnconnectedAccountDescription": { - "message": "Αυτή η ειδοποίηση εμφανίζεται στο αναδυόμενο παράθυρο κατά την περιήγηση σε μια συνδεδεμένη web3 ιστοσελίδα, αλλά ο τρέχων επιλεγμένος λογαριασμός δεν είναι συνδεδεμένος." - }, - "alertSettingsWeb3ShimUsage": { - "message": "Όταν μια ιστοσελίδα προσπαθεί να χρησιμοποιήσει το window.web3 API που έχει αφαιρεθεί" - }, - "alertSettingsWeb3ShimUsageDescription": { - "message": "Αυτή η ειδοποίηση εμφανίζεται στο αναδυόμενο παράθυρο όταν περιηγείστε σε μια ιστοσελίδα που προσπαθεί να χρησιμοποιήσει το window.web3 API που έχει αφαιρεθεί, και μπορεί, ως αποτέλεσμα, να μη λειτουργεί." - }, "alerts": { "message": "Ειδοποιήσεις" }, diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index a25b94722ea7..2924499a236d 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -499,18 +499,6 @@ "alertReasonWrongAccount": { "message": "Wrong account" }, - "alertSettingsUnconnectedAccount": { - "message": "Browsing a website with an unconnected account selected" - }, - "alertSettingsUnconnectedAccountDescription": { - "message": "This alert is shown in the popup when you are browsing a connected web3 site, but the currently selected account is not connected." - }, - "alertSettingsWeb3ShimUsage": { - "message": "When a website tries to use the removed window.web3 API" - }, - "alertSettingsWeb3ShimUsageDescription": { - "message": "This alert is shown in the popup when you are browsing a site that tries to use the removed window.web3 API, and may be broken as a result." - }, "alerts": { "message": "Alerts" }, diff --git a/app/_locales/en_GB/messages.json b/app/_locales/en_GB/messages.json index 153655e55f24..25cb6cd3df29 100644 --- a/app/_locales/en_GB/messages.json +++ b/app/_locales/en_GB/messages.json @@ -466,18 +466,6 @@ "alertReasonWrongAccount": { "message": "Wrong account" }, - "alertSettingsUnconnectedAccount": { - "message": "Browsing a website with an unconnected account selected" - }, - "alertSettingsUnconnectedAccountDescription": { - "message": "This alert is shown in the popup when you are browsing a connected web3 site, but the currently selected account is not connected." - }, - "alertSettingsWeb3ShimUsage": { - "message": "When a website tries to use the removed window.web3 API" - }, - "alertSettingsWeb3ShimUsageDescription": { - "message": "This alert is shown in the popup when you are browsing a site that tries to use the removed window.web3 API, and may be broken as a result." - }, "alerts": { "message": "Alerts" }, diff --git a/app/_locales/es/messages.json b/app/_locales/es/messages.json index 6c1792ebc84d..a22d35c294f1 100644 --- a/app/_locales/es/messages.json +++ b/app/_locales/es/messages.json @@ -447,18 +447,6 @@ "alertReasonWrongAccount": { "message": "Cuenta incorrecta" }, - "alertSettingsUnconnectedAccount": { - "message": "Explorando un sitio web con una cuenta no conectada seleccionada" - }, - "alertSettingsUnconnectedAccountDescription": { - "message": "Esta alerta aparece en la ventana emergente cuando explora un sitio conectado de Web3, pero la cuenta actualmente seleccionada no está conectada." - }, - "alertSettingsWeb3ShimUsage": { - "message": "Cuando un sitio web intenta utilizar la API de window.web3 que se eliminó" - }, - "alertSettingsWeb3ShimUsageDescription": { - "message": "Esta alerta aparece en la ventana emergente cuando explora un sitio que intenta utilizar la API de window.web3 que se eliminó y que puede que no funcione." - }, "alerts": { "message": "Alertas" }, diff --git a/app/_locales/es_419/messages.json b/app/_locales/es_419/messages.json index 0bba1bd69551..4de37dd09e43 100644 --- a/app/_locales/es_419/messages.json +++ b/app/_locales/es_419/messages.json @@ -157,18 +157,6 @@ "alertDisableTooltip": { "message": "Esto se puede modificar en \"Configuración > Alertas\"" }, - "alertSettingsUnconnectedAccount": { - "message": "Explorando un sitio web con una cuenta no conectada seleccionada" - }, - "alertSettingsUnconnectedAccountDescription": { - "message": "Esta alerta aparece en la ventana emergente cuando explora un sitio conectado de Web3, pero la cuenta actualmente seleccionada no está conectada." - }, - "alertSettingsWeb3ShimUsage": { - "message": "Cuando un sitio web intenta utilizar la API de window.web3 que se eliminó" - }, - "alertSettingsWeb3ShimUsageDescription": { - "message": "Esta alerta aparece en la ventana emergente cuando explora un sitio que intenta utilizar la API de window.web3 que se eliminó y que puede que no funcione." - }, "alerts": { "message": "Alertas" }, diff --git a/app/_locales/fr/messages.json b/app/_locales/fr/messages.json index 247bdaa359e0..9a1fbb3b8fb7 100644 --- a/app/_locales/fr/messages.json +++ b/app/_locales/fr/messages.json @@ -447,18 +447,6 @@ "alertReasonWrongAccount": { "message": "Mauvais compte" }, - "alertSettingsUnconnectedAccount": { - "message": "Navigation sur un site Web avec un compte non connecté sélectionné" - }, - "alertSettingsUnconnectedAccountDescription": { - "message": "Cette alerte s’affiche dans le pop-up lorsque vous naviguez sur un site web3 connecté, mais que le compte actuellement sélectionné n’est pas connecté." - }, - "alertSettingsWeb3ShimUsage": { - "message": "Lorsqu’un site Web tente d’utiliser l’API window.web3 supprimée" - }, - "alertSettingsWeb3ShimUsageDescription": { - "message": "Cette alerte s’affiche dans le pop-up lorsque vous naviguez sur un site qui tente d’utiliser l’API window.web3 supprimée, et qui peut par conséquent être défaillant." - }, "alerts": { "message": "Alertes" }, diff --git a/app/_locales/hi/messages.json b/app/_locales/hi/messages.json index bca5168630b8..1d7dcc92b7ed 100644 --- a/app/_locales/hi/messages.json +++ b/app/_locales/hi/messages.json @@ -447,18 +447,6 @@ "alertReasonWrongAccount": { "message": "गलत अकाउंट" }, - "alertSettingsUnconnectedAccount": { - "message": "जो कनेक्टेड नहीं है वह अकाउंट चुनकर कोई वेबसाइट ब्राउज़ करना" - }, - "alertSettingsUnconnectedAccountDescription": { - "message": "यह चेतावनी पॉपअप में तब दिखाई जाती है, जब आप कनेक्टेड web3 साइट ब्राउज़ कर रहे होते हैं, लेकिन वर्तमान में चुना गया अकाउंट कनेक्ट नहीं होता है।" - }, - "alertSettingsWeb3ShimUsage": { - "message": "जब कोई वेबसाइट हटाए गए window.web3 API का इस्तेमाल करने की कोशिश करती है" - }, - "alertSettingsWeb3ShimUsageDescription": { - "message": "यह एलर्ट पॉपअप में तब दिखाया जाता है, जब आप ऐसी साइट ब्राउज़ कर रहे होते हैं, जो हटाए गए window.web3 API का इस्तेमाल करने की कोशिश करती है और परिणामस्वरूप उसमें गड़बड़ी आ सकती है।" - }, "alerts": { "message": "चेतावनियां" }, diff --git a/app/_locales/id/messages.json b/app/_locales/id/messages.json index 6e0d950450e9..77c7b8f5286a 100644 --- a/app/_locales/id/messages.json +++ b/app/_locales/id/messages.json @@ -447,18 +447,6 @@ "alertReasonWrongAccount": { "message": "Akun salah" }, - "alertSettingsUnconnectedAccount": { - "message": "Memilih untuk menjelajahi situs web dengan akun yang tidak terhubung" - }, - "alertSettingsUnconnectedAccountDescription": { - "message": "Peringatan ini ditampilkan dalam sembulan saat Anda menelusuri situs web3 yang terhubung, tetapi akun yang baru saja dipilih tidak terhubung." - }, - "alertSettingsWeb3ShimUsage": { - "message": "Saat situs web mencoba menggunakan API window.web3 yang dihapus" - }, - "alertSettingsWeb3ShimUsageDescription": { - "message": "Peringatan ini ditampilkan dalam sembulan saat Anda menelusuri situs yang mencoba menggunakan API window.web3 yang dihapus, dan bisa mengakibatkan kerusakan." - }, "alerts": { "message": "Peringatan" }, diff --git a/app/_locales/it/messages.json b/app/_locales/it/messages.json index 71b07590d6d1..70e81c595852 100644 --- a/app/_locales/it/messages.json +++ b/app/_locales/it/messages.json @@ -209,18 +209,6 @@ "alertDisableTooltip": { "message": "Può essere cambiato in \"Impostazioni > Avvisi\"" }, - "alertSettingsUnconnectedAccount": { - "message": "Navigazione su un sito con un account non connesso" - }, - "alertSettingsUnconnectedAccountDescription": { - "message": "Questo avviso è mostrato nel popup quando stai visitando un sito Web3, ma l'account selezionato non è connesso al sito." - }, - "alertSettingsWeb3ShimUsage": { - "message": "Quando un sito prova a usare la API window.web3 rimossa" - }, - "alertSettingsWeb3ShimUsageDescription": { - "message": "L'avviso che viene mostrato nel popup quando stai visitando un sito che prova a usare la API window.web3 rimossa e che potrebbe non funzionare." - }, "alerts": { "message": "Avvisi" }, diff --git a/app/_locales/ja/messages.json b/app/_locales/ja/messages.json index 412708c194a3..c258d0947266 100644 --- a/app/_locales/ja/messages.json +++ b/app/_locales/ja/messages.json @@ -447,18 +447,6 @@ "alertReasonWrongAccount": { "message": "正しくないアカウント" }, - "alertSettingsUnconnectedAccount": { - "message": "選択した未接続のアカウントを使用してWebサイトをブラウズしています" - }, - "alertSettingsUnconnectedAccountDescription": { - "message": "このアラートは、選択中のアカウントが未接続のままweb3サイトを閲覧しているときにポップアップ表示されます。" - }, - "alertSettingsWeb3ShimUsage": { - "message": "Webサイトが削除済みのwindow.web3 APIを使用しようとした場合" - }, - "alertSettingsWeb3ShimUsageDescription": { - "message": "このアラートは、削除されたwindow.web3 APIを使用しようとし、その結果破損している可能性があるサイトをブラウズした際、ポップアップに表示されます。" - }, "alerts": { "message": "アラート" }, diff --git a/app/_locales/ko/messages.json b/app/_locales/ko/messages.json index 6d47331f15c9..6eaa179492f3 100644 --- a/app/_locales/ko/messages.json +++ b/app/_locales/ko/messages.json @@ -447,18 +447,6 @@ "alertReasonWrongAccount": { "message": "잘못된 계정" }, - "alertSettingsUnconnectedAccount": { - "message": "연결되지 않은 계정을 선택하여 웹사이트 탐색" - }, - "alertSettingsUnconnectedAccountDescription": { - "message": "이 경고는 연결된 web3 사이트를 탐색하고 있지만 현재 선택한 계정이 연결되지 않은 경우 팝업에 표시됩니다." - }, - "alertSettingsWeb3ShimUsage": { - "message": "웹사이트가 제거된 window.web3 API를 이용하는 경우" - }, - "alertSettingsWeb3ShimUsageDescription": { - "message": "이 경고는 제거된 window.web3 API를 이용하려다가 작동이 정지된 사이트를 탐색할 때 팝업으로 표시됩니다." - }, "alerts": { "message": "경고" }, diff --git a/app/_locales/ph/messages.json b/app/_locales/ph/messages.json index 454facde8524..e12eb4379cf1 100644 --- a/app/_locales/ph/messages.json +++ b/app/_locales/ph/messages.json @@ -81,18 +81,6 @@ "alertDisableTooltip": { "message": "Mababago ito sa \"Mga Setting > Mga Alerto\"" }, - "alertSettingsUnconnectedAccount": { - "message": "Napili ang pag-browse ng website nang may hindi nakakonektang account" - }, - "alertSettingsUnconnectedAccountDescription": { - "message": "Makikita ang alertong ito sa popup kapag nagba-browse ka sa isang nakakonektang web3 site, pero hindi nakakonekta ang kasalukuyang napiling account." - }, - "alertSettingsWeb3ShimUsage": { - "message": "Kapag sinubukan ng isang website na gamitin ang inalis na window.web3 API" - }, - "alertSettingsWeb3ShimUsageDescription": { - "message": "Makikita ang alertong ito sa popup kapag nagba-browse ka sa isang site na sumusubok na gamitin ang inalis na window.web3 API, at posibleng sira bilang resulta." - }, "alerts": { "message": "Mga Alerto" }, diff --git a/app/_locales/pt/messages.json b/app/_locales/pt/messages.json index 23d1bae93726..ca4f9a643a36 100644 --- a/app/_locales/pt/messages.json +++ b/app/_locales/pt/messages.json @@ -447,18 +447,6 @@ "alertReasonWrongAccount": { "message": "Conta incorreta" }, - "alertSettingsUnconnectedAccount": { - "message": "Navegando em um site com uma conta não conectada selecionada" - }, - "alertSettingsUnconnectedAccountDescription": { - "message": "Esse alerta é exibido no pop-up quando você estiver navegando em um site conectado da web3, mas a conta atualmente selecionada não estiver conectada." - }, - "alertSettingsWeb3ShimUsage": { - "message": "Quando um site tenta usar a API window.web3 removida" - }, - "alertSettingsWeb3ShimUsageDescription": { - "message": "Esse alerta é exibido no pop-up quando você estiver navegando em um site que tente usar a API window.web3 removida, e que consequentemente possa apresentar problemas." - }, "alerts": { "message": "Alertas" }, diff --git a/app/_locales/pt_BR/messages.json b/app/_locales/pt_BR/messages.json index 0f6efb88d348..b37bbb8af658 100644 --- a/app/_locales/pt_BR/messages.json +++ b/app/_locales/pt_BR/messages.json @@ -157,18 +157,6 @@ "alertDisableTooltip": { "message": "Isso pode ser alterado em \"Configurações > Alertas\"" }, - "alertSettingsUnconnectedAccount": { - "message": "Navegando em um site com uma conta não conectada selecionada" - }, - "alertSettingsUnconnectedAccountDescription": { - "message": "Esse alerta é exibido no pop-up quando você estiver navegando em um site conectado da web3, mas a conta atualmente selecionada não estiver conectada." - }, - "alertSettingsWeb3ShimUsage": { - "message": "Quando um site tenta usar a API window.web3 removida" - }, - "alertSettingsWeb3ShimUsageDescription": { - "message": "Esse alerta é exibido no pop-up quando você estiver navegando em um site que tente usar a API window.web3 removida, e que consequentemente possa apresentar problemas." - }, "alerts": { "message": "Alertas" }, diff --git a/app/_locales/ru/messages.json b/app/_locales/ru/messages.json index f6a532043195..b06caab95019 100644 --- a/app/_locales/ru/messages.json +++ b/app/_locales/ru/messages.json @@ -447,18 +447,6 @@ "alertReasonWrongAccount": { "message": "Неверный счет" }, - "alertSettingsUnconnectedAccount": { - "message": "Просмотр веб-сайта с выбранным неподключенным счетом" - }, - "alertSettingsUnconnectedAccountDescription": { - "message": "Это предупреждение отображается во всплывающем окне, когда вы просматриваете подключенный сайт web3, но текущий выбранный счет не подключен." - }, - "alertSettingsWeb3ShimUsage": { - "message": "Когда веб-сайт пытается использовать удаленный API window.web3" - }, - "alertSettingsWeb3ShimUsageDescription": { - "message": "Это предупреждение отображается во всплывающем окне, когда вы просматриваете сайт, который пытается использовать удаленный API window.web3 и из-за этого может не работать." - }, "alerts": { "message": "Оповещения" }, diff --git a/app/_locales/tl/messages.json b/app/_locales/tl/messages.json index 1d9fdc20819e..42ad155e2931 100644 --- a/app/_locales/tl/messages.json +++ b/app/_locales/tl/messages.json @@ -447,18 +447,6 @@ "alertReasonWrongAccount": { "message": "Maling account" }, - "alertSettingsUnconnectedAccount": { - "message": "Nagba-browse sa isang website na may napiling hindi konektadong account" - }, - "alertSettingsUnconnectedAccountDescription": { - "message": "Ang alertong ito ay ipinapakita sa popup kapag nagba-browse ka ng konektadong web3 site, ngunit ang kasalukuyang napiling account ay hindi nakakonekta." - }, - "alertSettingsWeb3ShimUsage": { - "message": "Kapag sinubukan ng isang website na gamitin ang inalis na window.web3 API" - }, - "alertSettingsWeb3ShimUsageDescription": { - "message": "Ang alertong ito ay ipinapakita sa popup kapag nagba-browse ka sa isang site na sumusubok na gamitin ang inalis na window.web3 API, at maaaring masira bilang resulta." - }, "alerts": { "message": "Mga Alerto" }, diff --git a/app/_locales/tr/messages.json b/app/_locales/tr/messages.json index 35ac8fa29c7d..db5dab6482f3 100644 --- a/app/_locales/tr/messages.json +++ b/app/_locales/tr/messages.json @@ -447,18 +447,6 @@ "alertReasonWrongAccount": { "message": "Yanlış hesap" }, - "alertSettingsUnconnectedAccount": { - "message": "Bağlı olmayan bir hesap ile bir web sitesine göz atma seçildi" - }, - "alertSettingsUnconnectedAccountDescription": { - "message": "Bu uyarı, bağlı bir web3 sitesinde gezdiğinizde gösterilir ancak şu anda seçili hesap bağlı değildir." - }, - "alertSettingsWeb3ShimUsage": { - "message": "Bir web sitesi kaldırılmış window.web3 API'sini kullanmaya çalıştığında" - }, - "alertSettingsWeb3ShimUsageDescription": { - "message": "Bu uyarı, kaldırılmış window.web3 API kullanmaya çalışan bir ve bunun sonucu olarak bozulmuş olabilen bir sitede gezindiğinizde açılır pencerede gösterilir." - }, "alerts": { "message": "Uyarılar" }, diff --git a/app/_locales/vi/messages.json b/app/_locales/vi/messages.json index 29f9017003a9..3623c8b86a2e 100644 --- a/app/_locales/vi/messages.json +++ b/app/_locales/vi/messages.json @@ -447,18 +447,6 @@ "alertReasonWrongAccount": { "message": "Tài khoản không đúng" }, - "alertSettingsUnconnectedAccount": { - "message": "Đang duyệt trang web khi chọn một tài khoản không được kết nối" - }, - "alertSettingsUnconnectedAccountDescription": { - "message": "Cảnh báo này hiển thị trong cửa sổ bật lên khi bạn đang duyệt một trang web đã được kết nối trên web3, nhưng tài khoản đang chọn không được kết nối." - }, - "alertSettingsWeb3ShimUsage": { - "message": "Khi một trang web cố dùng API window.web3 đã bị xóa" - }, - "alertSettingsWeb3ShimUsageDescription": { - "message": "Cảnh báo này hiển thị trong cửa sổ bật lên khi bạn đang duyệt một trang web cố sử dụng API window.web3 đã bị xóa nên có thể bị lỗi." - }, "alerts": { "message": "Cảnh báo" }, diff --git a/app/_locales/zh_CN/messages.json b/app/_locales/zh_CN/messages.json index 0bed963cf99f..3b78771d5823 100644 --- a/app/_locales/zh_CN/messages.json +++ b/app/_locales/zh_CN/messages.json @@ -447,18 +447,6 @@ "alertReasonWrongAccount": { "message": "错误账户" }, - "alertSettingsUnconnectedAccount": { - "message": "浏览网站时选择的账户未连接" - }, - "alertSettingsUnconnectedAccountDescription": { - "message": "当您在浏览已连接的Web3网站,但当前所选择的账户没有连接时,此提醒会在弹出的窗口中显示。" - }, - "alertSettingsWeb3ShimUsage": { - "message": "当网站尝试使用已经删除的 window.web3 API 时" - }, - "alertSettingsWeb3ShimUsageDescription": { - "message": "当您浏览尝试使用已删除的 window.web3 API 并因此可能出现故障的网站时,此警报会显示在弹出窗口中。" - }, "alerts": { "message": "提醒" }, diff --git a/app/_locales/zh_TW/messages.json b/app/_locales/zh_TW/messages.json index dee06a7aef16..32e98ed12288 100644 --- a/app/_locales/zh_TW/messages.json +++ b/app/_locales/zh_TW/messages.json @@ -77,18 +77,6 @@ "alertDisableTooltip": { "message": "這可以在「設定 > 提醒」裡變更" }, - "alertSettingsUnconnectedAccount": { - "message": "選擇尚未連結的帳戶瀏覽一個網站時" - }, - "alertSettingsUnconnectedAccountDescription": { - "message": "當您瀏覽一個使用 web3 的網站,但目前選擇的帳戶沒有連結時,這個提醒會顯示在一個彈跳視窗。" - }, - "alertSettingsWeb3ShimUsage": { - "message": "當一個網站試著使用已經移除的 window.web3 API" - }, - "alertSettingsWeb3ShimUsageDescription": { - "message": "當您瀏覽一個嘗試使用已經移除的 window.web3 API 的網站,可能會因此故障時,這個提醒會顯示在一個彈跳視窗。" - }, "alerts": { "message": "提醒" }, diff --git a/development/ts-migration-dashboard/files-to-convert.json b/development/ts-migration-dashboard/files-to-convert.json index ea3015d4c1ba..7ffbd68472d1 100644 --- a/development/ts-migration-dashboard/files-to-convert.json +++ b/development/ts-migration-dashboard/files-to-convert.json @@ -1415,9 +1415,6 @@ "ui/pages/settings/advanced-tab/advanced-tab.container.js", "ui/pages/settings/advanced-tab/advanced-tab.stories.js", "ui/pages/settings/advanced-tab/index.js", - "ui/pages/settings/alerts-tab/alerts-tab.js", - "ui/pages/settings/alerts-tab/alerts-tab.test.js", - "ui/pages/settings/alerts-tab/index.js", "ui/pages/settings/contact-list-tab/add-contact/add-contact.component.js", "ui/pages/settings/contact-list-tab/add-contact/add-contact.container.js", "ui/pages/settings/contact-list-tab/add-contact/index.js", diff --git a/test/e2e/tests/settings/settings-search.spec.js b/test/e2e/tests/settings/settings-search.spec.js index fb67fbffd23b..bf27c591bc29 100644 --- a/test/e2e/tests/settings/settings-search.spec.js +++ b/test/e2e/tests/settings/settings-search.spec.js @@ -122,32 +122,6 @@ describe('Settings Search', function () { }, ); }); - it('should find element inside the Alerts tab', async function () { - await withFixtures( - { - fixtures: new FixtureBuilder().build(), - ganacheOptions: defaultGanacheOptions, - title: this.test.fullTitle(), - }, - async ({ driver }) => { - await unlockWallet(driver); - - await openMenuSafe(driver); - - await driver.clickElement({ text: 'Settings', tag: 'div' }); - await driver.fill('#search-settings', settingsSearch.alerts); - - // Check if element redirects to the correct page - const page = 'Alerts'; - await driver.clickElement({ text: page, tag: 'span' }); - assert.equal( - await driver.isElementPresent({ text: page, tag: 'div' }), - true, - `${settingsSearch.alerts} item does not redirect to ${page} view`, - ); - }, - ); - }); it('should find element inside the Experimental tab', async function () { await withFixtures( { diff --git a/ui/helpers/constants/routes.ts b/ui/helpers/constants/routes.ts index eec9075a64d8..8052ad867084 100644 --- a/ui/helpers/constants/routes.ts +++ b/ui/helpers/constants/routes.ts @@ -36,9 +36,6 @@ PATH_NAME_MAP[SECURITY_ROUTE] = 'Security Settings Page'; export const ABOUT_US_ROUTE = '/settings/about-us'; PATH_NAME_MAP[ABOUT_US_ROUTE] = 'About Us Page'; -export const ALERTS_ROUTE = '/settings/alerts'; -PATH_NAME_MAP[ALERTS_ROUTE] = 'Alerts Settings Page'; - export const NETWORKS_ROUTE = '/settings/networks'; PATH_NAME_MAP[NETWORKS_ROUTE] = 'Network Settings Page'; diff --git a/ui/helpers/constants/settings.js b/ui/helpers/constants/settings.js index 89cca83f27cf..c22b0cbcf183 100644 --- a/ui/helpers/constants/settings.js +++ b/ui/helpers/constants/settings.js @@ -1,7 +1,6 @@ /* eslint-disable @metamask/design-tokens/color-no-hex*/ import { IconName } from '../../components/component-library'; import { - ALERTS_ROUTE, ADVANCED_ROUTE, SECURITY_ROUTE, GENERAL_ROUTE, @@ -331,20 +330,6 @@ const SETTINGS_CONSTANTS = [ route: `${SECURITY_ROUTE}#delete-metametrics-data`, icon: 'fa fa-lock', }, - { - tabMessage: (t) => t('alerts'), - sectionMessage: (t) => t('alertSettingsUnconnectedAccount'), - descriptionMessage: (t) => t('alertSettingsUnconnectedAccount'), - route: `${ALERTS_ROUTE}#unconnected-account`, - iconName: IconName.Notification, - }, - { - tabMessage: (t) => t('alerts'), - sectionMessage: (t) => t('alertSettingsWeb3ShimUsage'), - descriptionMessage: (t) => t('alertSettingsWeb3ShimUsage'), - route: `${ALERTS_ROUTE}#web3-shimusage`, - icon: 'fa fa-bell', - }, { tabMessage: (t) => t('networks'), sectionMessage: (t) => t('mainnet'), diff --git a/ui/helpers/utils/settings-search.test.js b/ui/helpers/utils/settings-search.test.js index c3d07073a7d3..cc7b875d8c5e 100644 --- a/ui/helpers/utils/settings-search.test.js +++ b/ui/helpers/utils/settings-search.test.js @@ -86,10 +86,6 @@ const t = (key) => { return 'Participate in MetaMetrics to help us make MetaMask better'; case 'alerts': return 'Alerts'; - case 'alertSettingsUnconnectedAccount': - return 'Browsing a website with an unconnected account selected'; - case 'alertSettingsWeb3ShimUsage': - return 'When a website tries to use the removed window.web3 API'; case 'networks': return 'Networks'; case 'mainnet': @@ -177,10 +173,6 @@ describe('Settings Search Utils', () => { ).toStrictEqual(21); }); - it('returns "Alerts" section count', () => { - expect(getNumberOfSettingRoutesInTab(t, t('alerts'))).toStrictEqual(2); - }); - it('returns "Network" section count', () => { expect(getNumberOfSettingRoutesInTab(t, t('networks'))).toStrictEqual(7); }); diff --git a/ui/pages/settings/alerts-tab/alerts-tab.js b/ui/pages/settings/alerts-tab/alerts-tab.js deleted file mode 100644 index 7523c68f6fa1..000000000000 --- a/ui/pages/settings/alerts-tab/alerts-tab.js +++ /dev/null @@ -1,87 +0,0 @@ -import React, { useEffect, useRef } from 'react'; -import PropTypes from 'prop-types'; -import { useSelector } from 'react-redux'; - -import { AlertTypes } from '../../../../shared/constants/alerts'; -import Tooltip from '../../../components/ui/tooltip'; -import ToggleButton from '../../../components/ui/toggle-button'; -import { setAlertEnabledness } from '../../../store/actions'; -import { getAlertEnabledness } from '../../../ducks/metamask/metamask'; -import { useI18nContext } from '../../../hooks/useI18nContext'; -import { handleSettingsRefs } from '../../../helpers/utils/settings-search'; -import { Icon, IconName } from '../../../components/component-library'; - -const AlertSettingsEntry = ({ alertId, description, title }) => { - const t = useI18nContext(); - const settingsRefs = useRef(); - - useEffect(() => { - handleSettingsRefs(t, t('alerts'), settingsRefs); - }, [settingsRefs, t]); - - const isEnabled = useSelector((state) => getAlertEnabledness(state)[alertId]); - - return ( - <> -
- {title} -
- - - - setAlertEnabledness(alertId, !isEnabled)} - value={isEnabled} - /> -
-
- - ); -}; - -AlertSettingsEntry.propTypes = { - alertId: PropTypes.string.isRequired, - description: PropTypes.string.isRequired, - title: PropTypes.string.isRequired, -}; - -const AlertsTab = () => { - const t = useI18nContext(); - - const alertConfig = { - [AlertTypes.unconnectedAccount]: { - title: t('alertSettingsUnconnectedAccount'), - description: t('alertSettingsUnconnectedAccountDescription'), - }, - [AlertTypes.web3ShimUsage]: { - title: t('alertSettingsWeb3ShimUsage'), - description: t('alertSettingsWeb3ShimUsageDescription'), - }, - }; - - return ( -
- {Object.entries(alertConfig).map( - ([alertId, { title, description }], _) => ( - - ), - )} -
- ); -}; - -export default AlertsTab; diff --git a/ui/pages/settings/alerts-tab/alerts-tab.scss b/ui/pages/settings/alerts-tab/alerts-tab.scss deleted file mode 100644 index 0e8ee8f83983..000000000000 --- a/ui/pages/settings/alerts-tab/alerts-tab.scss +++ /dev/null @@ -1,38 +0,0 @@ -@use "design-system"; - -.alerts-tab { - &__body { - @include design-system.H6; - - display: grid; - grid-template-columns: 8fr 30px max-content; - grid-template-rows: 1fr 1fr; - align-items: center; - display: block; - } - - &__description-container { - display: flex; - } - - &__description-container > * { - padding: 0 8px; - } - - &__description { - display: flex; - align-items: center; - - &__icon { - color: var(--color-icon-alternative); - } - } - - &__item { - border-bottom: 1px solid var(--color-border-muted); - padding: 16px 32px; - display: flex; - justify-content: space-between; - align-items: center; - } -} diff --git a/ui/pages/settings/alerts-tab/alerts-tab.stories.js b/ui/pages/settings/alerts-tab/alerts-tab.stories.js deleted file mode 100644 index 65b9dfd12d11..000000000000 --- a/ui/pages/settings/alerts-tab/alerts-tab.stories.js +++ /dev/null @@ -1,14 +0,0 @@ -import React from 'react'; -import AlertsTab from './alerts-tab'; - -export default { - title: 'Components/UI/Pages/AlertsTab ', - - component: AlertsTab, -}; - -export const DefaultAlertsTab = () => { - return ; -}; - -DefaultAlertsTab.storyName = 'Default'; diff --git a/ui/pages/settings/alerts-tab/alerts-tab.test.js b/ui/pages/settings/alerts-tab/alerts-tab.test.js deleted file mode 100644 index 8750c4a9a3ec..000000000000 --- a/ui/pages/settings/alerts-tab/alerts-tab.test.js +++ /dev/null @@ -1,42 +0,0 @@ -import React from 'react'; -import { fireEvent, screen } from '@testing-library/react'; -import configureMockStore from 'redux-mock-store'; -import { renderWithProvider } from '../../../../test/jest'; -import { AlertTypes } from '../../../../shared/constants/alerts'; -import AlertsTab from '.'; - -const mockSetAlertEnabledness = jest.fn(); - -jest.mock('../../../store/actions', () => ({ - setAlertEnabledness: (...args) => mockSetAlertEnabledness(...args), -})); - -describe('Alerts Tab', () => { - const store = configureMockStore([])({ - metamask: { - alertEnabledness: { - unconnectedAccount: false, - web3ShimUsage: false, - }, - }, - }); - - it('calls setAlertEnabledness with the correct params method when the toggles are clicked', () => { - renderWithProvider(, store); - - expect(mockSetAlertEnabledness.mock.calls).toHaveLength(0); - fireEvent.click(screen.getAllByRole('checkbox')[0]); - expect(mockSetAlertEnabledness.mock.calls).toHaveLength(1); - expect(mockSetAlertEnabledness.mock.calls[0][0]).toBe( - AlertTypes.unconnectedAccount, - ); - expect(mockSetAlertEnabledness.mock.calls[0][1]).toBe(true); - - fireEvent.click(screen.getAllByRole('checkbox')[1]); - expect(mockSetAlertEnabledness.mock.calls).toHaveLength(2); - expect(mockSetAlertEnabledness.mock.calls[1][0]).toBe( - AlertTypes.web3ShimUsage, - ); - expect(mockSetAlertEnabledness.mock.calls[1][1]).toBe(true); - }); -}); diff --git a/ui/pages/settings/alerts-tab/index.js b/ui/pages/settings/alerts-tab/index.js deleted file mode 100644 index f6aa526da73e..000000000000 --- a/ui/pages/settings/alerts-tab/index.js +++ /dev/null @@ -1 +0,0 @@ -export { default } from './alerts-tab'; diff --git a/ui/pages/settings/index.scss b/ui/pages/settings/index.scss index b4cea4bef630..f57e1c310998 100644 --- a/ui/pages/settings/index.scss +++ b/ui/pages/settings/index.scss @@ -1,7 +1,6 @@ @use "design-system"; @import 'info-tab/index'; -@import 'alerts-tab/alerts-tab'; @import 'developer-options-tab/index'; @import 'networks-tab/index'; @import 'settings-tab/index'; diff --git a/ui/pages/settings/settings.component.js b/ui/pages/settings/settings.component.js index 72a4141512ee..2f33cd78f2e1 100644 --- a/ui/pages/settings/settings.component.js +++ b/ui/pages/settings/settings.component.js @@ -5,7 +5,6 @@ import classnames from 'classnames'; import TabBar from '../../components/app/tab-bar'; import { - ALERTS_ROUTE, ADVANCED_ROUTE, SECURITY_ROUTE, GENERAL_ROUTE, @@ -45,7 +44,6 @@ import MetafoxLogo from '../../components/ui/metafox-logo'; import { getEnvironmentType } from '../../../app/scripts/lib/util'; import { ENVIRONMENT_TYPE_POPUP } from '../../../shared/constants/app'; import SettingsTab from './settings-tab'; -import AlertsTab from './alerts-tab'; import AdvancedTab from './advanced-tab'; import InfoTab from './info-tab'; import SecurityTab from './security-tab'; @@ -316,11 +314,6 @@ class SettingsPage extends PureComponent { icon: , key: SECURITY_ROUTE, }, - { - content: t('alerts'), - icon: , - key: ALERTS_ROUTE, - }, { content: t('experimental'), icon: , @@ -376,7 +369,6 @@ class SettingsPage extends PureComponent { /> - Date: Thu, 10 Oct 2024 16:28:33 +0100 Subject: [PATCH 3/4] feat: adds the new default settings view to onboarding (#24562) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fixes: MetaMask/MetaMask-planning#2080 --
## **Description** Introduces the new Default Settings view and Congratulations views depending on the fact if user imported a wallet or created a new one. **User imported a wallet:** ![Screenshot 2024-06-03 at 16 08 44](https://github.com/MetaMask/metamask-extension/assets/1125631/c9784cbb-e4e2-4557-b6f6-527d9df91fa5) **User created a new wallet and backed up the seed phrase:** ![Screenshot 2024-06-03 at 16 11 13](https://github.com/MetaMask/metamask-extension/assets/1125631/8045e007-63bb-4aac-915c-d908d03b52a1) **User created a new wallet and didn’t back up the seed phrase:** ![Screenshot 2024-06-03 at 16 09 37](https://github.com/MetaMask/metamask-extension/assets/1125631/005d34ec-587a-4978-92d3-0ed14d64f9c8) **Inside look on the Default Settings:** ![Screenshot 2024-06-03 at 16 13 49](https://github.com/MetaMask/metamask-extension/assets/1125631/c573c7ba-36f4-4b46-8124-9c2091018356) ![Screenshot 2024-06-03 at 16 14 00](https://github.com/MetaMask/metamask-extension/assets/1125631/733ab5db-6aec-43a9-8da8-f1d543e5d3a1) ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** ### **Before** ### **After** ## **Pre-merge author checklist** - [ ] I’ve followed [MetaMask Coding Standards](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --------- Co-authored-by: vinnyhoward Co-authored-by: David Walsh --- app/_locales/de/messages.json | 42 - app/_locales/el/messages.json | 42 - app/_locales/en/messages.json | 95 +- app/_locales/es/messages.json | 42 - app/_locales/es_419/messages.json | 29 - app/_locales/fr/messages.json | 42 - app/_locales/hi/messages.json | 42 - app/_locales/id/messages.json | 42 - app/_locales/ja/messages.json | 42 - app/_locales/ko/messages.json | 42 - app/_locales/pt/messages.json | 42 - app/_locales/pt_BR/messages.json | 33 - app/_locales/ru/messages.json | 42 - app/_locales/tl/messages.json | 42 - app/_locales/tr/messages.json | 42 - app/_locales/vi/messages.json | 42 - app/_locales/zh_CN/messages.json | 42 - shared/constants/metametrics.ts | 1 + test/e2e/helpers.js | 4 +- test/e2e/tests/network/multi-rpc.spec.ts | 31 +- test/e2e/tests/onboarding/onboarding.spec.js | 183 ++-- .../tests/privacy/basic-functionality.spec.js | 47 +- .../onboarding/wallet-created.test.tsx | 16 +- .../incoming-transaction-toggle.test.js.snap | 2 +- .../incoming-transaction-toggle.tsx | 4 +- .../creation-successful.js | 221 +++-- .../creation-successful.test.js | 94 +- .../creation-successful/index.scss | 37 - .../pin-extension/pin-extension.js | 48 +- .../pin-extension/pin-extension.test.js | 16 +- .../privacy-settings/index.scss | 49 +- .../privacy-settings/privacy-settings.js | 842 +++++++++++------- .../privacy-settings/privacy-settings.test.js | 110 ++- .../privacy-settings/setting.js | 9 +- .../__snapshots__/security-tab.test.js.snap | 2 +- 35 files changed, 1174 insertions(+), 1287 deletions(-) diff --git a/app/_locales/de/messages.json b/app/_locales/de/messages.json index b744300f8656..6177fe229bfb 100644 --- a/app/_locales/de/messages.json +++ b/app/_locales/de/messages.json @@ -331,9 +331,6 @@ "advancedBaseGasFeeToolTip": { "message": "Wenn Ihre Transaktion in den Block aufgenommen wird, wird die Differenz zwischen Ihrer maximalen Grundgebühr und der tatsächlichen Grundgebühr erstattet. Der Gesamtbetrag wird berechnet als maximale Grundgebühr (in GWEI) * Gas-Limit." }, - "advancedConfiguration": { - "message": "Erweiterte Einstellungen" - }, "advancedDetailsDataDesc": { "message": "Daten" }, @@ -700,12 +697,6 @@ "betaTerms": { "message": "Beta-Nutzungsbedingungen" }, - "betaWalletCreationSuccessReminder1": { - "message": "MetaMask Beta kann Ihre geheime Wiederherstellungsphrase nicht wiederherstellen." - }, - "betaWalletCreationSuccessReminder2": { - "message": "MetaMask Beta wird Sie nie nach Ihrer geheimen Wiederherstellungsphrase fragen." - }, "billionAbbreviation": { "message": "B", "description": "Shortened form of 'billion'" @@ -2400,9 +2391,6 @@ "jazzicons": { "message": "Jazzicons" }, - "jsDeliver": { - "message": "jsDeliver" - }, "jsonFile": { "message": "JSON Datei", "description": "format for importing an account" @@ -3452,10 +3440,6 @@ "onboardingPinMmiExtensionLabel": { "message": "MetaMask Institutional pinnen" }, - "onboardingUsePhishingDetectionDescription": { - "message": "Phishing-Warnungen basieren auf der Kommunikation mit $1. jsDeliver hat Zugriff auf Ihre IP-Adresse. $2 ansehen.", - "description": "The $1 is the word 'jsDeliver', from key 'jsDeliver' and $2 is the words Privacy Policy from key 'privacyMsg', both separated here so that it can be wrapped as a link" - }, "oneDayAbbreviation": { "message": "1 T", "description": "Shortened form of '1 day'" @@ -4096,9 +4080,6 @@ "rejected": { "message": "Abgelehnt" }, - "remember": { - "message": "Erinnern:" - }, "remove": { "message": "Entfernen" }, @@ -4506,9 +4487,6 @@ "sepolia": { "message": "Sepolia-Testnetzwerk" }, - "setAdvancedPrivacySettingsDetails": { - "message": "MetaMask nutzt diese vertrauenswürdigen Dienstleistungen von Drittanbietern, um die Benutzerfreundlichkeit und Sicherheit der Produkte zu verbessern." - }, "setApprovalForAll": { "message": "Erlaubnis für alle erteilen" }, @@ -6160,26 +6138,6 @@ "walletConnectionGuide": { "message": "unsere Hardware-Wallet-Verbindungsanleitung" }, - "walletCreationSuccessDetail": { - "message": "Sie haben Ihre Wallet erfolgreich geschützt. Halten Sie Ihre geheime Wiederherstellungsphrase sicher und geheim -- es liegt in Ihrer Verantwortung!" - }, - "walletCreationSuccessReminder1": { - "message": "MetaMask kann Ihre geheime Wiederherstellungsphrase nicht wiederherstellen." - }, - "walletCreationSuccessReminder2": { - "message": "MetaMask-Team wird nie nach Ihrer geheimen Wiederherstellungsphrase fragen." - }, - "walletCreationSuccessReminder3": { - "message": "$1 mit jemandem oder riskieren Sie, dass Ihre Gelder gestohlen werden.", - "description": "$1 is separated as walletCreationSuccessReminder3BoldSection so that we can bold it" - }, - "walletCreationSuccessReminder3BoldSection": { - "message": "Geben Sie niemals Ihre geheime Wiederherstellungsphrase an andere weiter", - "description": "This string is localized separately from walletCreationSuccessReminder3 so that we can bold it" - }, - "walletCreationSuccessTitle": { - "message": "Wallet-Erstellung erfolgreich" - }, "wantToAddThisNetwork": { "message": "Möchten Sie dieses Netzwerk hinzufügen?" }, diff --git a/app/_locales/el/messages.json b/app/_locales/el/messages.json index acafb24be5b6..c7ce18893b4d 100644 --- a/app/_locales/el/messages.json +++ b/app/_locales/el/messages.json @@ -331,9 +331,6 @@ "advancedBaseGasFeeToolTip": { "message": "Όταν η συναλλαγή σας συμπεριληφθεί στο μπλοκ, οποιαδήποτε διαφορά μεταξύ της μέγιστης βασικής χρέωσής σας και της πραγματικής βασικής χρέωσής θα επιστραφεί. Το συνολικό ποσό υπολογίζεται ως μέγιστο βασικό τέλος (σε GWEI) * όριο τελών συναλλαγής." }, - "advancedConfiguration": { - "message": "Προηγμένη ρύθμιση παραμέτρων" - }, "advancedDetailsDataDesc": { "message": "Δεδομένα" }, @@ -700,12 +697,6 @@ "betaTerms": { "message": "Όροι Χρήσης της Δοκιμαστικής Έκδοσης" }, - "betaWalletCreationSuccessReminder1": { - "message": "Η δοκιμαστική έκδοση του MetaMask δεν μπορεί να ανακτήσει τη Μυστική Φράση Ανάκτησής σας." - }, - "betaWalletCreationSuccessReminder2": { - "message": "Η δοκιμαστική έκδοση του MetaMask δεν θα σας ζητήσει ποτέ τη Μυστική Φράση Ανάκτησής σας." - }, "billionAbbreviation": { "message": "Δ", "description": "Shortened form of 'billion'" @@ -2400,9 +2391,6 @@ "jazzicons": { "message": "Jazzicons" }, - "jsDeliver": { - "message": "jsDeliver" - }, "jsonFile": { "message": "Αρχείο JSON", "description": "format for importing an account" @@ -3452,10 +3440,6 @@ "onboardingPinMmiExtensionLabel": { "message": "Καρφιτσώστε το MetaMask Institutional" }, - "onboardingUsePhishingDetectionDescription": { - "message": "Οι ειδοποιήσεις ανίχνευσης για phishing βασίζονται στην επικοινωνία με το $1. Το jsDeliver θα έχει πρόσβαση στη διεύθυνση IP σας. Δείτε $2.", - "description": "The $1 is the word 'jsDeliver', from key 'jsDeliver' and $2 is the words Privacy Policy from key 'privacyMsg', both separated here so that it can be wrapped as a link" - }, "oneDayAbbreviation": { "message": "1Η", "description": "Shortened form of '1 day'" @@ -4096,9 +4080,6 @@ "rejected": { "message": "Απορρίφθηκε" }, - "remember": { - "message": "Να θυμάστε:" - }, "remove": { "message": "Κατάργηση" }, @@ -4506,9 +4487,6 @@ "sepolia": { "message": "Δίκτυο δοκιμών Sepolia" }, - "setAdvancedPrivacySettingsDetails": { - "message": "Το MetaMask χρησιμοποιεί αυτές τις αξιόπιστες υπηρεσίες τρίτων για να ενισχύσει τη χρηστικότητα και την ασφάλεια των προϊόντων." - }, "setApprovalForAll": { "message": "Ρύθμιση έγκρισης για όλους" }, @@ -6160,26 +6138,6 @@ "walletConnectionGuide": { "message": "ο οδηγός μας σύνδεσης πορτοφολιού υλικού" }, - "walletCreationSuccessDetail": { - "message": "Προστατεύσατε με επιτυχία το πορτοφόλι σας. Διατηρήστε τη Μυστική Φράση Ανάκτησης ασφαλής και μυστική - είναι δική σας ευθύνη!" - }, - "walletCreationSuccessReminder1": { - "message": "Το MetaMask δεν μπορεί να ανακτήσει τη Μυστική Φράση Ανάκτησής σας." - }, - "walletCreationSuccessReminder2": { - "message": "Το MetaMask δεν θα σας ζητήσει ποτέ τη Μυστική Φράση Ανάκτησής σας." - }, - "walletCreationSuccessReminder3": { - "message": "$1 με οποιονδήποτε ή να διακινδυνεύστε τα χρήματά σας να κλαπούν", - "description": "$1 is separated as walletCreationSuccessReminder3BoldSection so that we can bold it" - }, - "walletCreationSuccessReminder3BoldSection": { - "message": "Ποτέ μην μοιράζεστε τη Μυστική Φράση Ανάκτησης σας", - "description": "This string is localized separately from walletCreationSuccessReminder3 so that we can bold it" - }, - "walletCreationSuccessTitle": { - "message": "Επιτυχής δημιουργία πορτοφολιού" - }, "wantToAddThisNetwork": { "message": "Θέλετε να προσθέσετε αυτό το δίκτυο;" }, diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index 2924499a236d..e8b2625103d3 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -373,9 +373,6 @@ "advancedBaseGasFeeToolTip": { "message": "When your transaction gets included in the block, any difference between your max base fee and the actual base fee will be refunded. Total amount is calculated as max base fee (in GWEI) * gas limit." }, - "advancedConfiguration": { - "message": "Advanced configuration" - }, "advancedDetailsDataDesc": { "message": "Data" }, @@ -638,6 +635,12 @@ "assetOptions": { "message": "Asset options" }, + "assets": { + "message": "Assets" + }, + "assetsDescription": { + "message": "Autodetect tokens in your wallet, display NFTs, and get batched account balance updates" + }, "attemptSendingAssets": { "message": "You may lose your assets if you try to send them from another network. Transfer funds safely between networks by using a bridge." }, @@ -752,12 +755,6 @@ "betaTerms": { "message": "Beta Terms of use" }, - "betaWalletCreationSuccessReminder1": { - "message": "MetaMask Beta can’t recover your Secret Recovery Phrase." - }, - "betaWalletCreationSuccessReminder2": { - "message": "MetaMask Beta will never ask you for your Secret Recovery Phrase." - }, "billionAbbreviation": { "message": "B", "description": "Shortened form of 'billion'" @@ -1093,6 +1090,9 @@ "confusingEnsDomain": { "message": "We have detected a confusable character in the ENS name. Check the ENS name to avoid a potential scam." }, + "congratulations": { + "message": "Congratulations!" + }, "connect": { "message": "Connect" }, @@ -1544,6 +1544,12 @@ "defaultRpcUrl": { "message": "Default RPC URL" }, + "defaultSettingsSubTitle": { + "message": "MetaMask uses default settings to best balance safety and ease of use. Change these settings to further increase your privacy." + }, + "defaultSettingsTitle": { + "message": "Default settings" + }, "delete": { "message": "Delete" }, @@ -2193,6 +2199,9 @@ "generalCameraErrorTitle": { "message": "Something went wrong...." }, + "generalDescription": { + "message": "Sync settings across devices, select network preferences, and track token data" + }, "genericExplorerView": { "message": "View account on $1" }, @@ -2356,6 +2365,10 @@ "id": { "message": "ID" }, + "ifYouGetLockedOut": { + "message": "If you get locked out of the app or get a new device, you will lose your funds. Be sure to back up your Secret Recovery Phrase in $1 ", + "description": "$1 is the menu path to be shown with font weight bold" + }, "ignoreAll": { "message": "Ignore all" }, @@ -2606,13 +2619,14 @@ "jazzicons": { "message": "Jazzicons" }, - "jsDeliver": { - "message": "jsDeliver" - }, "jsonFile": { "message": "JSON File", "description": "format for importing an account" }, + "keepReminderOfSRP": { + "message": "Keep a reminder of your Secret Recovery Phrase somewhere safe. If you lose it, no one can help you get it back. Even worse, you won’t be able access to your wallet ever again. $1", + "description": "$1 is a learn more link" + }, "keyringAccountName": { "message": "Account name" }, @@ -2671,6 +2685,9 @@ "message": "Learn how to $1", "description": "$1 is link to cancel or speed up transactions" }, + "learnHow": { + "message": "Learn how" + }, "learnMore": { "message": "learn more" }, @@ -2678,6 +2695,9 @@ "message": "Want to $1 about gas?", "description": "$1 will be replaced by the learnMore translation key" }, + "learnMoreAboutPrivacy": { + "message": "Learn more about privacy best practices." + }, "learnMoreKeystone": { "message": "Learn More" }, @@ -2829,6 +2849,9 @@ "message": "Make sure nobody is looking", "description": "Warning to users to be care while creating and saving their new Secret Recovery Phrase" }, + "manageDefaultSettings": { + "message": "Manage default settings" + }, "marketCap": { "message": "Market cap" }, @@ -3702,10 +3725,6 @@ "onboardingPinMmiExtensionLabel": { "message": "Pin MetaMask Institutional" }, - "onboardingUsePhishingDetectionDescription": { - "message": "Phishing detection alerts rely on communication with $1. jsDeliver will have access to your IP address. View $2.", - "description": "The $1 is the word 'jsDeliver', from key 'jsDeliver' and $2 is the words Privacy Policy from key 'privacyMsg', both separated here so that it can be wrapped as a link" - }, "oneDayAbbreviation": { "message": "1D", "description": "Shortened form of '1 day'" @@ -4369,8 +4388,11 @@ "rejected": { "message": "Rejected" }, - "remember": { - "message": "Remember:" + "rememberSRPIfYouLooseAccess": { + "message": "Remember, if you lose your Secret Recovery Phrase, you lose access to your wallet. $1 to keep this set of words safe so you can always access your funds." + }, + "reminderSet": { + "message": "Reminder set!" }, "remove": { "message": "Remove" @@ -4642,6 +4664,12 @@ "securityAndPrivacy": { "message": "Security & privacy" }, + "securityDescription": { + "message": "Reduce your chances of joining unsafe networks and protect your accounts" + }, + "securityPrivacyPath": { + "message": "Settings > Security & Privacy." + }, "securityProviderPoweredBy": { "message": "Powered by $1", "description": "The security provider that is providing data" @@ -4808,9 +4836,6 @@ "sepolia": { "message": "Sepolia test network" }, - "setAdvancedPrivacySettingsDetails": { - "message": "MetaMask uses these trusted third-party services to enhance product usability and safety." - }, "setApprovalForAll": { "message": "Set approval for all" }, @@ -4827,6 +4852,9 @@ "settings": { "message": "Settings" }, + "settingsOptimisedForEaseOfUseAndSecurity": { + "message": "Settings are optimised for ease of use and security. Change these any time." + }, "settingsSearchMatchingNotFound": { "message": "No matching results found." }, @@ -6545,25 +6573,9 @@ "walletConnectionGuide": { "message": "our hardware wallet connection guide" }, - "walletCreationSuccessDetail": { - "message": "You’ve successfully protected your wallet. Keep your Secret Recovery Phrase safe and secret -- it’s your responsibility!" - }, - "walletCreationSuccessReminder1": { - "message": "MetaMask can’t recover your Secret Recovery Phrase." - }, - "walletCreationSuccessReminder2": { - "message": "MetaMask will never ask you for your Secret Recovery Phrase." - }, - "walletCreationSuccessReminder3": { - "message": "$1 with anyone or risk your funds being stolen", - "description": "$1 is separated as walletCreationSuccessReminder3BoldSection so that we can bold it" - }, - "walletCreationSuccessReminder3BoldSection": { - "message": "Never share your Secret Recovery Phrase", - "description": "This string is localized separately from walletCreationSuccessReminder3 so that we can bold it" - }, - "walletCreationSuccessTitle": { - "message": "Wallet creation successful" + "walletProtectedAndReadyToUse": { + "message": "Your wallet is protected and ready to use. You can find your Secret Recovery Phrase in $1 ", + "description": "$1 is the menu path to be shown with font weight bold" }, "wantToAddThisNetwork": { "message": "Want to add this network?" @@ -6681,6 +6693,9 @@ "yourTransactionJustConfirmed": { "message": "We weren't able to cancel your transaction before it was confirmed on the blockchain." }, + "yourWalletIsReady": { + "message": "Your wallet is ready" + }, "zeroGasPriceOnSpeedUpError": { "message": "Zero gas price on speed up" } diff --git a/app/_locales/es/messages.json b/app/_locales/es/messages.json index a22d35c294f1..0b4dc1432ac8 100644 --- a/app/_locales/es/messages.json +++ b/app/_locales/es/messages.json @@ -331,9 +331,6 @@ "advancedBaseGasFeeToolTip": { "message": "Cuando su transacción se incluya en el bloque, se reembolsará cualquier diferencia entre su tarifa base máxima y la tarifa base real. El importe total se calcula como tarifa base máxima (en GWEI) * límite de gas." }, - "advancedConfiguration": { - "message": "Configuración avanzada" - }, "advancedDetailsDataDesc": { "message": "Datos" }, @@ -697,12 +694,6 @@ "betaTerms": { "message": "Términos de uso de beta" }, - "betaWalletCreationSuccessReminder1": { - "message": "MetaMask beta no puede recuperar su frase secreta de recuperación." - }, - "betaWalletCreationSuccessReminder2": { - "message": "MetaMask beta nunca le pedirá su frase secreta de recuperación." - }, "billionAbbreviation": { "message": "mm", "description": "Shortened form of 'billion'" @@ -2397,9 +2388,6 @@ "jazzicons": { "message": "Jazzicons" }, - "jsDeliver": { - "message": "jsDeliver" - }, "jsonFile": { "message": "Archivo JSON", "description": "format for importing an account" @@ -3449,10 +3437,6 @@ "onboardingPinMmiExtensionLabel": { "message": "Fijar MetaMask Institutional" }, - "onboardingUsePhishingDetectionDescription": { - "message": "Las alertas de detección de phishing se basan en la comunicación con $1. jsDeliver tendrá acceso a su dirección IP. Ver 2$.", - "description": "The $1 is the word 'jsDeliver', from key 'jsDeliver' and $2 is the words Privacy Policy from key 'privacyMsg', both separated here so that it can be wrapped as a link" - }, "oneDayAbbreviation": { "message": "1 d", "description": "Shortened form of '1 day'" @@ -4093,9 +4077,6 @@ "rejected": { "message": "Rechazado" }, - "remember": { - "message": "Recuerde:" - }, "remove": { "message": "Quitar" }, @@ -4503,9 +4484,6 @@ "sepolia": { "message": "Red de prueba Sepolia" }, - "setAdvancedPrivacySettingsDetails": { - "message": "MetaMask utiliza estos servicios de terceros de confianza para mejorar la usabilidad y la seguridad de los productos." - }, "setApprovalForAll": { "message": "Establecer aprobación para todos" }, @@ -6157,26 +6135,6 @@ "walletConnectionGuide": { "message": "nuestra guía de conexión del monedero físico" }, - "walletCreationSuccessDetail": { - "message": "Ha protegido con éxito su monedero. Mantenga su frase secreta de recuperación a salvo y en secreto: ¡es su responsabilidad!" - }, - "walletCreationSuccessReminder1": { - "message": "MetaMask no puede recuperar su frase secreta de recuperación." - }, - "walletCreationSuccessReminder2": { - "message": "MetaMask nunca le pedirá su frase secreta de recuperación." - }, - "walletCreationSuccessReminder3": { - "message": "$1 con nadie o se arriesga a que le roben los fondos", - "description": "$1 is separated as walletCreationSuccessReminder3BoldSection so that we can bold it" - }, - "walletCreationSuccessReminder3BoldSection": { - "message": "Nunca comparta su frase secreta de recuperación", - "description": "This string is localized separately from walletCreationSuccessReminder3 so that we can bold it" - }, - "walletCreationSuccessTitle": { - "message": "Creación exitosa del monedero" - }, "wantToAddThisNetwork": { "message": "¿Desea añadir esta red?" }, diff --git a/app/_locales/es_419/messages.json b/app/_locales/es_419/messages.json index 4de37dd09e43..cd980aaa99c2 100644 --- a/app/_locales/es_419/messages.json +++ b/app/_locales/es_419/messages.json @@ -1033,9 +1033,6 @@ "invalidSeedPhrase": { "message": "Frase secreta de recuperación no válida" }, - "jsDeliver": { - "message": "jsDeliver" - }, "jsonFile": { "message": "Archivo JSON", "description": "format for importing an account" @@ -1555,9 +1552,6 @@ "rejected": { "message": "Rechazado" }, - "remember": { - "message": "Recuerde:" - }, "remove": { "message": "Quitar" }, @@ -1720,9 +1714,6 @@ "message": "Enviando $1", "description": "$1 represents the native currency symbol for the current network (e.g. ETH or BNB)" }, - "setAdvancedPrivacySettingsDetails": { - "message": "MetaMask utiliza estos servicios de terceros de confianza para mejorar la usabilidad y la seguridad de los productos." - }, "settings": { "message": "Configuración" }, @@ -2442,26 +2433,6 @@ "walletConnectionGuide": { "message": "nuestra guía de conexión de la cartera de hardware" }, - "walletCreationSuccessDetail": { - "message": "Ha protegido con éxito su cartera. Mantenga su frase secreta de recuperación a salvo y en secreto: ¡es su responsabilidad!" - }, - "walletCreationSuccessReminder1": { - "message": "MetaMask no puede recuperar su frase secreta de recuperación." - }, - "walletCreationSuccessReminder2": { - "message": "MetaMask nunca le pedirá su frase secreta de recuperación." - }, - "walletCreationSuccessReminder3": { - "message": "$1 con nadie o se arriesga a que le roben los fondos", - "description": "$1 is separated as walletCreationSuccessReminder3BoldSection so that we can bold it" - }, - "walletCreationSuccessReminder3BoldSection": { - "message": "Nunca comparta su frase secreta de recuperación", - "description": "This string is localized separately from walletCreationSuccessReminder3 so that we can bold it" - }, - "walletCreationSuccessTitle": { - "message": "Creación exitosa de la cartera" - }, "web3ShimUsageNotification": { "message": "Parece que el sitio web actual intentó utilizar la API de window.web3 que se eliminó. Si el sitio no funciona, haga clic en $1 para obtener más información.", "description": "$1 is a clickable link." diff --git a/app/_locales/fr/messages.json b/app/_locales/fr/messages.json index 9a1fbb3b8fb7..780300aebe08 100644 --- a/app/_locales/fr/messages.json +++ b/app/_locales/fr/messages.json @@ -331,9 +331,6 @@ "advancedBaseGasFeeToolTip": { "message": "Lorsque votre transaction est intégrée au bloc, toute différence entre vos frais de base maximaux et les frais de base réels vous sera remboursée. Le montant total est calculé comme suit : frais de base maximaux (en GWEI) × limite de carburant." }, - "advancedConfiguration": { - "message": "Configuration avancée" - }, "advancedDetailsDataDesc": { "message": "Données" }, @@ -700,12 +697,6 @@ "betaTerms": { "message": "Conditions d’utilisation de la version bêta" }, - "betaWalletCreationSuccessReminder1": { - "message": "La version bêta de MetaMask ne peut pas retrouver votre phrase secrète de récupération." - }, - "betaWalletCreationSuccessReminder2": { - "message": "La version bêta de MetaMask ne vous demandera jamais votre phrase secrète de récupération." - }, "billionAbbreviation": { "message": "Mrd", "description": "Shortened form of 'billion'" @@ -2400,9 +2391,6 @@ "jazzicons": { "message": "Jazzicons" }, - "jsDeliver": { - "message": "jsDeliver" - }, "jsonFile": { "message": "Fichier JSON", "description": "format for importing an account" @@ -3452,10 +3440,6 @@ "onboardingPinMmiExtensionLabel": { "message": "Épingler MetaMask Institutional" }, - "onboardingUsePhishingDetectionDescription": { - "message": "Les alertes de détection d’hameçonnage reposent sur la communication avec $1. jsDeliver aura accès à votre adresse IP. Voir $2.", - "description": "The $1 is the word 'jsDeliver', from key 'jsDeliver' and $2 is the words Privacy Policy from key 'privacyMsg', both separated here so that it can be wrapped as a link" - }, "oneDayAbbreviation": { "message": "1 j", "description": "Shortened form of '1 day'" @@ -4096,9 +4080,6 @@ "rejected": { "message": "Rejeté" }, - "remember": { - "message": "Rappel :" - }, "remove": { "message": "Supprimer" }, @@ -4506,9 +4487,6 @@ "sepolia": { "message": "Réseau de test Sepolia" }, - "setAdvancedPrivacySettingsDetails": { - "message": "MetaMask utilise ces services tiers de confiance pour améliorer la convivialité et la sécurité des produits." - }, "setApprovalForAll": { "message": "Définir l’approbation pour tous" }, @@ -6160,26 +6138,6 @@ "walletConnectionGuide": { "message": "notre guide de connexion des portefeuilles matériels" }, - "walletCreationSuccessDetail": { - "message": "Votre portefeuille est bien protégé. Conservez votre phrase secrète de récupération en sécurité et en toute discrétion. C’est votre responsabilité !" - }, - "walletCreationSuccessReminder1": { - "message": "MetaMask ne peut pas restaurer votre phrase secrète de récupération." - }, - "walletCreationSuccessReminder2": { - "message": "MetaMask ne vous demandera jamais votre phrase secrète de récupération." - }, - "walletCreationSuccessReminder3": { - "message": "$1 avec n’importe qui, sinon vous risquez de voir vos fonds subtilisés", - "description": "$1 is separated as walletCreationSuccessReminder3BoldSection so that we can bold it" - }, - "walletCreationSuccessReminder3BoldSection": { - "message": "Ne partagez jamais votre phrase secrète de récupération", - "description": "This string is localized separately from walletCreationSuccessReminder3 so that we can bold it" - }, - "walletCreationSuccessTitle": { - "message": "Portefeuille créé avec succès" - }, "wantToAddThisNetwork": { "message": "Voulez-vous ajouter ce réseau ?" }, diff --git a/app/_locales/hi/messages.json b/app/_locales/hi/messages.json index 1d7dcc92b7ed..8a3744a255f5 100644 --- a/app/_locales/hi/messages.json +++ b/app/_locales/hi/messages.json @@ -331,9 +331,6 @@ "advancedBaseGasFeeToolTip": { "message": "जब आपका ट्रांसेक्शन ब्लॉक में शामिल हो जाता है, तो आपके अधिकतम बेस फ़ीस और वास्तविक बेस फ़ीस के बीच का कोई भी अंतर वापस कर दिया जाता है। कुल अमाउंट को अधिकतम बेस फ़ीस (GWEI में) * गैस लिमिट के रुप में कैलकुलेट किया जाता है।" }, - "advancedConfiguration": { - "message": "एडवांस्ड कॉन्फ़िगरेशन" - }, "advancedDetailsDataDesc": { "message": "डेटा" }, @@ -700,12 +697,6 @@ "betaTerms": { "message": "बीटा के इस्तेमाल की शर्तें" }, - "betaWalletCreationSuccessReminder1": { - "message": "MetaMask बीटा आपका सीक्रेट रिकवरी फ्रेज़ रिकवर नहीं कर सकता।" - }, - "betaWalletCreationSuccessReminder2": { - "message": "MetaMask बीटा आपसे आपका गुप्त रिकवरी वाक्यांश कभी नहीं मांगेगा।" - }, "billionAbbreviation": { "message": "B", "description": "Shortened form of 'billion'" @@ -2400,9 +2391,6 @@ "jazzicons": { "message": "जैज़आइकन्स" }, - "jsDeliver": { - "message": "jsDeliver" - }, "jsonFile": { "message": "JSON फाइल", "description": "format for importing an account" @@ -3452,10 +3440,6 @@ "onboardingPinMmiExtensionLabel": { "message": "MetaMask Institutional को पिन करें" }, - "onboardingUsePhishingDetectionDescription": { - "message": "फिशिंग डिटेक्शन अलर्ट $1 के साथ संचार पर निर्भर करते हैं। jsDeliver की पहुंच आपके IP एड्रेस तक होगी। $2 देखें।", - "description": "The $1 is the word 'jsDeliver', from key 'jsDeliver' and $2 is the words Privacy Policy from key 'privacyMsg', both separated here so that it can be wrapped as a link" - }, "oneDayAbbreviation": { "message": "1D", "description": "Shortened form of '1 day'" @@ -4096,9 +4080,6 @@ "rejected": { "message": "रिजेक्ट" }, - "remember": { - "message": "याद रखें:" - }, "remove": { "message": "हटाएं" }, @@ -4506,9 +4487,6 @@ "sepolia": { "message": "Sepolia टेस्ट नेटवर्क" }, - "setAdvancedPrivacySettingsDetails": { - "message": "MetaMask उत्पाद की उपयोगिता और सुरक्षा को बढ़ाने के लिए इन विश्वसनीय तीसरे-पक्ष की सेवाओं का इस्तेमाल करता है।" - }, "setApprovalForAll": { "message": "सभी के लिए स्वीकृति सेट करें" }, @@ -6160,26 +6138,6 @@ "walletConnectionGuide": { "message": "हमारी hardware wallet कनेक्शन गाइड" }, - "walletCreationSuccessDetail": { - "message": "आपने अपने वॉलेट को सफलतापूर्वक सुरक्षित कर लिया है। अपने सीक्रेट रिकवरी फ्रेज को सुरक्षित और गुप्त रखें -- यह आपकी जिम्मेदारी है!" - }, - "walletCreationSuccessReminder1": { - "message": "MetaMask आपके सीक्रेट रिकवरी फ्रेज को फिर से प्राप्त नहीं कर सकता है।" - }, - "walletCreationSuccessReminder2": { - "message": "MetaMask कभी भी आपके सीक्रेट रिकवरी फ्रेज के बारे में नहीं पूछेगा।" - }, - "walletCreationSuccessReminder3": { - "message": "$1 किसी के साथ या आपके फंड के चोरी होने का खतरा", - "description": "$1 is separated as walletCreationSuccessReminder3BoldSection so that we can bold it" - }, - "walletCreationSuccessReminder3BoldSection": { - "message": "अपने सीक्रेट रिकवरी फ्रेज को कभी शेयर ना करें", - "description": "This string is localized separately from walletCreationSuccessReminder3 so that we can bold it" - }, - "walletCreationSuccessTitle": { - "message": "वॉलेट का निर्माण सफल हुआ" - }, "wantToAddThisNetwork": { "message": "इस नेटवर्क को जोड़ना चाहते हैं?" }, diff --git a/app/_locales/id/messages.json b/app/_locales/id/messages.json index 77c7b8f5286a..39d64cc98618 100644 --- a/app/_locales/id/messages.json +++ b/app/_locales/id/messages.json @@ -331,9 +331,6 @@ "advancedBaseGasFeeToolTip": { "message": "Saat transaksi Anda dimasukkan ke dalam blok, selisih antara biaya dasar maks dan biaya dasar aktual akan dikembalikan. Jumlah total dihitung sebagai biaya dasar maks (dalam GWEI) * batas gas." }, - "advancedConfiguration": { - "message": "Konfigurasi lanjutan" - }, "advancedDetailsDataDesc": { "message": "Data" }, @@ -700,12 +697,6 @@ "betaTerms": { "message": "Ketentuan penggunaan Beta" }, - "betaWalletCreationSuccessReminder1": { - "message": "MetaMask Beta tidak dapat memulihkan Frasa Pemulihan Rahasia Anda." - }, - "betaWalletCreationSuccessReminder2": { - "message": "MetaMask Beta tidak akan pernah menanyakan Frasa Pemulihan Rahasia Anda." - }, "billionAbbreviation": { "message": "M", "description": "Shortened form of 'billion'" @@ -2400,9 +2391,6 @@ "jazzicons": { "message": "Jazzicons" }, - "jsDeliver": { - "message": "jsDeliver" - }, "jsonFile": { "message": "File JSON", "description": "format for importing an account" @@ -3452,10 +3440,6 @@ "onboardingPinMmiExtensionLabel": { "message": "Sematkan MetaMask Institutional" }, - "onboardingUsePhishingDetectionDescription": { - "message": "Peringatan deteksi pengelabuan bergantung pada komunikasi dengan $1. jsDeliver akan mendapat akses ke alamat IP Anda. Lihat $2.", - "description": "The $1 is the word 'jsDeliver', from key 'jsDeliver' and $2 is the words Privacy Policy from key 'privacyMsg', both separated here so that it can be wrapped as a link" - }, "oneDayAbbreviation": { "message": "1H", "description": "Shortened form of '1 day'" @@ -4096,9 +4080,6 @@ "rejected": { "message": "Ditolak" }, - "remember": { - "message": "Ingatlah:" - }, "remove": { "message": "Hapus" }, @@ -4506,9 +4487,6 @@ "sepolia": { "message": "Jaringan uji Sepolia" }, - "setAdvancedPrivacySettingsDetails": { - "message": "MetaMask menggunakan layanan pihak ketiga tepercaya ini untuk meningkatkan kegunaan dan keamanan produk." - }, "setApprovalForAll": { "message": "Atur persetujuan untuk semua" }, @@ -6160,26 +6138,6 @@ "walletConnectionGuide": { "message": "panduan koneksi dompet perangkat keras kami" }, - "walletCreationSuccessDetail": { - "message": "Anda telah berhasil melindungi dompet Anda. Jaga agar Frasa Pemulihan Rahasia tetap aman dan terlindungi. Ini merupakan tanggung jawab Anda!" - }, - "walletCreationSuccessReminder1": { - "message": "MetaMask tidak dapat memulihkan Frasa Pemulihan Rahasia Anda." - }, - "walletCreationSuccessReminder2": { - "message": "MetaMask tidak akan pernah menanyakan Frasa Pemulihan Rahasia Anda." - }, - "walletCreationSuccessReminder3": { - "message": "$1 dengan siapa pun atau dana Anda berisiko dicuri", - "description": "$1 is separated as walletCreationSuccessReminder3BoldSection so that we can bold it" - }, - "walletCreationSuccessReminder3BoldSection": { - "message": "Jangan pernah membagikan Frasa Pemulihan Rahasia Anda", - "description": "This string is localized separately from walletCreationSuccessReminder3 so that we can bold it" - }, - "walletCreationSuccessTitle": { - "message": "Dompet berhasil dibuat" - }, "wantToAddThisNetwork": { "message": "Ingin menambahkan jaringan ini?" }, diff --git a/app/_locales/ja/messages.json b/app/_locales/ja/messages.json index c258d0947266..ca1e76018a81 100644 --- a/app/_locales/ja/messages.json +++ b/app/_locales/ja/messages.json @@ -331,9 +331,6 @@ "advancedBaseGasFeeToolTip": { "message": "トランザクションがブロックに含まれた場合、最大基本料金と実際の基本料金の差が返金されます。合計金額は、最大基本料金 (Gwei単位) * ガスリミットで計算されます。" }, - "advancedConfiguration": { - "message": "詳細設定" - }, "advancedDetailsDataDesc": { "message": "データ" }, @@ -700,12 +697,6 @@ "betaTerms": { "message": "ベータ版利用規約" }, - "betaWalletCreationSuccessReminder1": { - "message": "MetaMaskベータ版はシークレットリカバリーフレーズを復元できません。" - }, - "betaWalletCreationSuccessReminder2": { - "message": "MetaMaskベータ版がユーザーのシークレットリカバリーフレーズを求めることは絶対にありません。" - }, "billionAbbreviation": { "message": "B", "description": "Shortened form of 'billion'" @@ -2400,9 +2391,6 @@ "jazzicons": { "message": "Jazzicon" }, - "jsDeliver": { - "message": "jsDeliver" - }, "jsonFile": { "message": "JSONファイル", "description": "format for importing an account" @@ -3452,10 +3440,6 @@ "onboardingPinMmiExtensionLabel": { "message": "MetaMask Institutionalをピン留めする" }, - "onboardingUsePhishingDetectionDescription": { - "message": "フィッシング検出アラートには$1との通信が必要です。jsDeliverはユーザーのIPアドレスにアクセスします。$2をご覧ください。", - "description": "The $1 is the word 'jsDeliver', from key 'jsDeliver' and $2 is the words Privacy Policy from key 'privacyMsg', both separated here so that it can be wrapped as a link" - }, "oneDayAbbreviation": { "message": "1日", "description": "Shortened form of '1 day'" @@ -4096,9 +4080,6 @@ "rejected": { "message": "拒否されました" }, - "remember": { - "message": "ご注意:" - }, "remove": { "message": "削除" }, @@ -4506,9 +4487,6 @@ "sepolia": { "message": "Sepoliaテストネットワーク" }, - "setAdvancedPrivacySettingsDetails": { - "message": "MetaMaskはこれらの信頼できるサードパーティサービスを使用して、製品の使いやすさと安全性を向上させています。" - }, "setApprovalForAll": { "message": "すべてを承認に設定" }, @@ -6160,26 +6138,6 @@ "walletConnectionGuide": { "message": "弊社のハードウェアウォレット接続ガイド" }, - "walletCreationSuccessDetail": { - "message": "ウォレットが正常に保護されました。シークレットリカバリーフレーズを安全かつ機密に保管してください。これはユーザーの責任です!" - }, - "walletCreationSuccessReminder1": { - "message": "MetaMaskはシークレットリカバリーフレーズを復元できません。" - }, - "walletCreationSuccessReminder2": { - "message": "MetaMaskがユーザーのシークレットリカバリーフレーズを確認することは絶対にありません。" - }, - "walletCreationSuccessReminder3": { - "message": "誰に対しても$1。資金が盗まれる恐れがあります", - "description": "$1 is separated as walletCreationSuccessReminder3BoldSection so that we can bold it" - }, - "walletCreationSuccessReminder3BoldSection": { - "message": "シークレットリカバリーフレーズは決して教えないでください", - "description": "This string is localized separately from walletCreationSuccessReminder3 so that we can bold it" - }, - "walletCreationSuccessTitle": { - "message": "ウォレットが作成されました" - }, "wantToAddThisNetwork": { "message": "このネットワークを追加しますか?" }, diff --git a/app/_locales/ko/messages.json b/app/_locales/ko/messages.json index 6eaa179492f3..051a19589005 100644 --- a/app/_locales/ko/messages.json +++ b/app/_locales/ko/messages.json @@ -331,9 +331,6 @@ "advancedBaseGasFeeToolTip": { "message": "트랜잭션이 블록에 포함되면 최대 기본 요금과 실제 기본 요금 간의 차액이 환불됩니다. 총 금액은 최대 기본 요금(GWEI 단위) 곱하기 가스 한도로 계산합니다." }, - "advancedConfiguration": { - "message": "고급 옵션" - }, "advancedDetailsDataDesc": { "message": "데이터" }, @@ -700,12 +697,6 @@ "betaTerms": { "message": "베타 이용약관" }, - "betaWalletCreationSuccessReminder1": { - "message": "MetaMask 베타는 비밀복구구문을 복구할 수 없습니다." - }, - "betaWalletCreationSuccessReminder2": { - "message": "MetaMask 베타는 비밀복구구문을 절대 묻지 않습니다." - }, "billionAbbreviation": { "message": "B", "description": "Shortened form of 'billion'" @@ -2400,9 +2391,6 @@ "jazzicons": { "message": "Jazzicons" }, - "jsDeliver": { - "message": "jsDeliver" - }, "jsonFile": { "message": "JSON 파일", "description": "format for importing an account" @@ -3452,10 +3440,6 @@ "onboardingPinMmiExtensionLabel": { "message": "MetaMask Institutional 고정" }, - "onboardingUsePhishingDetectionDescription": { - "message": "피싱 감지 경고는 $1과(와)의 통신에 의존합니다. jsDeliver는 회원님의 IP 주소에 액세스할 수 있습니다. $2 보기.", - "description": "The $1 is the word 'jsDeliver', from key 'jsDeliver' and $2 is the words Privacy Policy from key 'privacyMsg', both separated here so that it can be wrapped as a link" - }, "oneDayAbbreviation": { "message": "1일", "description": "Shortened form of '1 day'" @@ -4096,9 +4080,6 @@ "rejected": { "message": "거부됨" }, - "remember": { - "message": "참고:" - }, "remove": { "message": "제거" }, @@ -4506,9 +4487,6 @@ "sepolia": { "message": "Sepolia 테스트 네트워크" }, - "setAdvancedPrivacySettingsDetails": { - "message": "이와 같이 MetaMask는 신용있는 타사의 서비스를 사용하여 제품 가용성과 안전성을 향상합니다." - }, "setApprovalForAll": { "message": "모두 승인 설정" }, @@ -6160,26 +6138,6 @@ "walletConnectionGuide": { "message": "당사의 하드웨어 지갑 연결 가이드" }, - "walletCreationSuccessDetail": { - "message": "지갑을 성공적으로 보호했습니다. 비밀복구구문을 안전하게 비밀로 유지하세요. 이는 회원님의 책임입니다!" - }, - "walletCreationSuccessReminder1": { - "message": "MetaMask는 비밀복구구문을 복구할 수 없습니다." - }, - "walletCreationSuccessReminder2": { - "message": "MetaMask는 비밀복구구문을 절대 묻지 않습니다." - }, - "walletCreationSuccessReminder3": { - "message": "누군가와 $1 또는 회원님의 자금을 도난당할 위험이 있습니다.", - "description": "$1 is separated as walletCreationSuccessReminder3BoldSection so that we can bold it" - }, - "walletCreationSuccessReminder3BoldSection": { - "message": "비밀복구구문을 절대 공유하지 마세요.", - "description": "This string is localized separately from walletCreationSuccessReminder3 so that we can bold it" - }, - "walletCreationSuccessTitle": { - "message": "지갑 생성 성공" - }, "wantToAddThisNetwork": { "message": "이 네트워크를 추가하시겠습니까?" }, diff --git a/app/_locales/pt/messages.json b/app/_locales/pt/messages.json index ca4f9a643a36..8d686eaee7c2 100644 --- a/app/_locales/pt/messages.json +++ b/app/_locales/pt/messages.json @@ -331,9 +331,6 @@ "advancedBaseGasFeeToolTip": { "message": "Quando a sua transação for incluída no bloco, qualquer diferença entre a sua taxa-base máxima e a taxa-base real será reembolsada. O cálculo do valor total é feito da seguinte forma: taxa-base máxima (em GWEI) * limite de gás." }, - "advancedConfiguration": { - "message": "Configurações avançadas" - }, "advancedDetailsDataDesc": { "message": "Dados" }, @@ -700,12 +697,6 @@ "betaTerms": { "message": "Termos de uso do Beta" }, - "betaWalletCreationSuccessReminder1": { - "message": "O MetaMask Beta não pode recuperar a sua Frase de Recuperação Secreta." - }, - "betaWalletCreationSuccessReminder2": { - "message": "O MetaMask Beta nunca pedirá sua Frase de Recuperação Secreta." - }, "billionAbbreviation": { "message": "B", "description": "Shortened form of 'billion'" @@ -2400,9 +2391,6 @@ "jazzicons": { "message": "Jazzicons" }, - "jsDeliver": { - "message": "jsDeliver" - }, "jsonFile": { "message": "Arquivo JSON", "description": "format for importing an account" @@ -3452,10 +3440,6 @@ "onboardingPinMmiExtensionLabel": { "message": "Fixar MetaMask Institutional" }, - "onboardingUsePhishingDetectionDescription": { - "message": "Os alertas de detecção de phishing dependem de comunicação com $1. O jsDeliver terá acesso ao seu endereço IP. Veja $2.", - "description": "The $1 is the word 'jsDeliver', from key 'jsDeliver' and $2 is the words Privacy Policy from key 'privacyMsg', both separated here so that it can be wrapped as a link" - }, "oneDayAbbreviation": { "message": "1D", "description": "Shortened form of '1 day'" @@ -4096,9 +4080,6 @@ "rejected": { "message": "Recusada" }, - "remember": { - "message": "Lembre-se:" - }, "remove": { "message": "Remover" }, @@ -4506,9 +4487,6 @@ "sepolia": { "message": "Rede de teste Sepolia" }, - "setAdvancedPrivacySettingsDetails": { - "message": "A MetaMask utiliza esses serviços terceirizados de confiança para aumentar a usabilidade e a segurança dos produtos." - }, "setApprovalForAll": { "message": "Definir aprovação para todos" }, @@ -6160,26 +6138,6 @@ "walletConnectionGuide": { "message": "nosso guia de conexão com a carteira de hardware" }, - "walletCreationSuccessDetail": { - "message": "Você protegeu sua carteira com sucesso. Guarde sua Frase de Recuperação Secreta em segredo e em segurança — é sua responsabilidade!" - }, - "walletCreationSuccessReminder1": { - "message": "A MetaMask não é capaz de recuperar sua Frase de Recuperação Secreta." - }, - "walletCreationSuccessReminder2": { - "message": "A equipe da MetaMask jamais pedirá sua Frase de Recuperação Secreta." - }, - "walletCreationSuccessReminder3": { - "message": "$1 com ninguém, senão seus fundos poderão ser roubados", - "description": "$1 is separated as walletCreationSuccessReminder3BoldSection so that we can bold it" - }, - "walletCreationSuccessReminder3BoldSection": { - "message": "Nunca compartilhe a sua Frase de Recuperação Secreta", - "description": "This string is localized separately from walletCreationSuccessReminder3 so that we can bold it" - }, - "walletCreationSuccessTitle": { - "message": "Carteira criada com sucesso" - }, "wantToAddThisNetwork": { "message": "Desejar adicionar esta rede?" }, diff --git a/app/_locales/pt_BR/messages.json b/app/_locales/pt_BR/messages.json index b37bbb8af658..2becf1c495a1 100644 --- a/app/_locales/pt_BR/messages.json +++ b/app/_locales/pt_BR/messages.json @@ -1033,9 +1033,6 @@ "invalidSeedPhrase": { "message": "Frase de Recuperação Secreta inválida" }, - "jsDeliver": { - "message": "jsDeliver" - }, "jsonFile": { "message": "Arquivo JSON", "description": "format for importing an account" @@ -1392,10 +1389,6 @@ "onboardingPinExtensionTitle": { "message": "Sua instalação da MetaMask está concluída!" }, - "onboardingUsePhishingDetectionDescription": { - "message": "Os alertas de detecção de phishing dependem de comunicação com $1. O jsDeliver terá acesso ao seu endereço IP. Veja $2.", - "description": "The $1 is the word 'jsDeliver', from key 'jsDeliver' and $2 is the words Privacy Policy from key 'privacyMsg', both separated here so that it can be wrapped as a link" - }, "onlyConnectTrust": { "message": "Conecte-se somente com sites em que você confia.", "description": "Text displayed above the buttons for connection confirmation. $1 is the link to the learn more web page." @@ -1559,9 +1552,6 @@ "rejected": { "message": "Rejeitada" }, - "remember": { - "message": "Lembre-se:" - }, "remove": { "message": "Remover" }, @@ -1724,9 +1714,6 @@ "message": "Enviando $1", "description": "$1 represents the native currency symbol for the current network (e.g. ETH or BNB)" }, - "setAdvancedPrivacySettingsDetails": { - "message": "A MetaMask utiliza esses serviços terceirizados de confiança para aumentar a usabilidade e a segurança dos produtos." - }, "settings": { "message": "Configurações" }, @@ -2446,26 +2433,6 @@ "walletConnectionGuide": { "message": "nosso guia de conexão com a carteira de hardware" }, - "walletCreationSuccessDetail": { - "message": "Você protegeu sua carteira com sucesso. Guarde sua Frase de Recuperação Secreta em segredo e em segurança — é sua responsabilidade!" - }, - "walletCreationSuccessReminder1": { - "message": "A MetaMask não é capaz de recuperar sua Frase de Recuperação Secreta." - }, - "walletCreationSuccessReminder2": { - "message": "A equipe da MetaMask jamais pedirá sua Frase de Recuperação Secreta." - }, - "walletCreationSuccessReminder3": { - "message": "$1 com ninguém, senão seus fundos poderão ser roubados", - "description": "$1 is separated as walletCreationSuccessReminder3BoldSection so that we can bold it" - }, - "walletCreationSuccessReminder3BoldSection": { - "message": "Nunca compartilhe a sua Frase de Recuperação Secreta", - "description": "This string is localized separately from walletCreationSuccessReminder3 so that we can bold it" - }, - "walletCreationSuccessTitle": { - "message": "Carteira criada com sucesso" - }, "web3ShimUsageNotification": { "message": "Percebemos que o site atual tentou usar a API window.web3 removida. Se o site parecer estar corrompido, clique em $1 para obter mais informações.", "description": "$1 is a clickable link." diff --git a/app/_locales/ru/messages.json b/app/_locales/ru/messages.json index b06caab95019..b36ac87f7dbe 100644 --- a/app/_locales/ru/messages.json +++ b/app/_locales/ru/messages.json @@ -331,9 +331,6 @@ "advancedBaseGasFeeToolTip": { "message": "После включения вашей транзакции в блок возмещается любая разница между вашей максимальной базовой комиссией и фактической базовой комиссией. Общая сумма рассчитывается следующим образом: максимальная базовая комиссия (в Гвей) x лимит газа." }, - "advancedConfiguration": { - "message": "Дополнительная конфигурация" - }, "advancedDetailsDataDesc": { "message": "Данные" }, @@ -700,12 +697,6 @@ "betaTerms": { "message": "Условия использования бета-версии" }, - "betaWalletCreationSuccessReminder1": { - "message": "Бета-версия MetaMask не сможет восстановить вашу секретную фразу для восстановления." - }, - "betaWalletCreationSuccessReminder2": { - "message": "Бета-версия MetaMask никогда не запрашивает у вас секретную фразу для восстановления." - }, "billionAbbreviation": { "message": "Б", "description": "Shortened form of 'billion'" @@ -2400,9 +2391,6 @@ "jazzicons": { "message": "Jazzicons" }, - "jsDeliver": { - "message": "jsDeliver" - }, "jsonFile": { "message": "JSON-файл", "description": "format for importing an account" @@ -3452,10 +3440,6 @@ "onboardingPinMmiExtensionLabel": { "message": "Закрепить MetaMask Institutional" }, - "onboardingUsePhishingDetectionDescription": { - "message": "Оповещения об обнаружении фишинга зависят от связи с $1. jsDeliver получит доступ к вашему IP-адресу. Посмотрите $ 2.", - "description": "The $1 is the word 'jsDeliver', from key 'jsDeliver' and $2 is the words Privacy Policy from key 'privacyMsg', both separated here so that it can be wrapped as a link" - }, "oneDayAbbreviation": { "message": "1 Д", "description": "Shortened form of '1 day'" @@ -4096,9 +4080,6 @@ "rejected": { "message": "Отклонено" }, - "remember": { - "message": "Помните:" - }, "remove": { "message": "Удалить" }, @@ -4506,9 +4487,6 @@ "sepolia": { "message": "Тестовая сеть Sepolia" }, - "setAdvancedPrivacySettingsDetails": { - "message": "MetaMask использует эти доверенные сторонние сервисы для повышения удобства использования и безопасности продукта." - }, "setApprovalForAll": { "message": "Установить одобрение для всех" }, @@ -6160,26 +6138,6 @@ "walletConnectionGuide": { "message": "наше руководство по подключению аппаратного кошелька" }, - "walletCreationSuccessDetail": { - "message": "Вы успешно защитили свой кошелек. Сохраните секретную фразу для восстановления в тайне — вы отвечаете за ее сохранность!" - }, - "walletCreationSuccessReminder1": { - "message": "MetaMask не сможет восстановить вашу секретную фразу для восстановления." - }, - "walletCreationSuccessReminder2": { - "message": "MetaMask никогда не запрашивает у вас секретную фразу для восстановления." - }, - "walletCreationSuccessReminder3": { - "message": "$1, чтобы предотвратить кражу ваших средств", - "description": "$1 is separated as walletCreationSuccessReminder3BoldSection so that we can bold it" - }, - "walletCreationSuccessReminder3BoldSection": { - "message": "Никогда не сообщайте никому свою секретную фразу для восстановления", - "description": "This string is localized separately from walletCreationSuccessReminder3 so that we can bold it" - }, - "walletCreationSuccessTitle": { - "message": "Кошелек создан" - }, "wantToAddThisNetwork": { "message": "Хотите добавить эту сеть?" }, diff --git a/app/_locales/tl/messages.json b/app/_locales/tl/messages.json index 42ad155e2931..e076ac55176b 100644 --- a/app/_locales/tl/messages.json +++ b/app/_locales/tl/messages.json @@ -331,9 +331,6 @@ "advancedBaseGasFeeToolTip": { "message": "Kapag nakasama ang iyong transaksyon sa block, ire-refund ang anumang difference sa pagitan ng iyong pinakamataas na batayang bayad at ang aktwal na batayang bayad. Ang kabuuang halaga ay kinakalkula bilang pinakamataas na batayang bayad (sa GWEI) * ng limitasyon ng gas." }, - "advancedConfiguration": { - "message": "Advanced na pagsasaayos" - }, "advancedDetailsDataDesc": { "message": "Data" }, @@ -700,12 +697,6 @@ "betaTerms": { "message": "Mga tuntunin sa paggamit ng Beta" }, - "betaWalletCreationSuccessReminder1": { - "message": "Hindi mabawi ng MetaMask Beta ang iyong Lihim na Parirala sa Pagbawi." - }, - "betaWalletCreationSuccessReminder2": { - "message": "Hindi kailanman hihingiin sa iyo ng MetaMask Beta ang iyong Lihim na Parirala sa Pagbawi." - }, "billionAbbreviation": { "message": "B", "description": "Shortened form of 'billion'" @@ -2400,9 +2391,6 @@ "jazzicons": { "message": "Mga Jazzicon" }, - "jsDeliver": { - "message": "jsDeliver" - }, "jsonFile": { "message": "File na JSON", "description": "format for importing an account" @@ -3452,10 +3440,6 @@ "onboardingPinMmiExtensionLabel": { "message": "I-pin ang MetaMask Institutional" }, - "onboardingUsePhishingDetectionDescription": { - "message": "Ang mga alerto sa pagtuklas ng phishing ay umaasa sa komunikasyon sa $1. Ang jsDeliver ay magkakaroon ng access sa iyong IP address. Tingnan ang $2.", - "description": "The $1 is the word 'jsDeliver', from key 'jsDeliver' and $2 is the words Privacy Policy from key 'privacyMsg', both separated here so that it can be wrapped as a link" - }, "oneDayAbbreviation": { "message": "1D", "description": "Shortened form of '1 day'" @@ -4096,9 +4080,6 @@ "rejected": { "message": "Tinanggihan" }, - "remember": { - "message": "Tandaan:" - }, "remove": { "message": "Alisin" }, @@ -4506,9 +4487,6 @@ "sepolia": { "message": "Sepolia test network" }, - "setAdvancedPrivacySettingsDetails": { - "message": "Ginagamit ng MetaMask ang mga pinagkakatiwalaang serbisyo ng third-party na ito para mapahusay ang kakayahang magamit at kaligtasan ng produkto." - }, "setApprovalForAll": { "message": "Itakda ang Pag-apruba para sa Lahat" }, @@ -6160,26 +6138,6 @@ "walletConnectionGuide": { "message": "ang aming gabay sa pagkonekta ng wallet na hardware" }, - "walletCreationSuccessDetail": { - "message": "Matagumpay mong naprotektahan ang iyong wallet. Panatilihing ligtas at sikreto ang iyong Lihim na Parirala sa Pagbawi - pananagutan mo ito!" - }, - "walletCreationSuccessReminder1": { - "message": "Di mababawi ng MetaMask ang iyong Lihim na Parirala sa Pagbawi." - }, - "walletCreationSuccessReminder2": { - "message": "Kailanman ay hindi hihingin ng MetaMask ang iyong Lihim na Parirala sa Pagbawi." - }, - "walletCreationSuccessReminder3": { - "message": "$1 sa sinuman o panganib na manakaw ang iyong pondo", - "description": "$1 is separated as walletCreationSuccessReminder3BoldSection so that we can bold it" - }, - "walletCreationSuccessReminder3BoldSection": { - "message": "Huwag kailanman ibahagi ang iyong Lihim na Parirala sa Pagbawi", - "description": "This string is localized separately from walletCreationSuccessReminder3 so that we can bold it" - }, - "walletCreationSuccessTitle": { - "message": "Matagumpay ang paggawa ng wallet" - }, "wantToAddThisNetwork": { "message": "Gusto mo bang idagdag ang network na ito?" }, diff --git a/app/_locales/tr/messages.json b/app/_locales/tr/messages.json index db5dab6482f3..4465fd7c0d78 100644 --- a/app/_locales/tr/messages.json +++ b/app/_locales/tr/messages.json @@ -331,9 +331,6 @@ "advancedBaseGasFeeToolTip": { "message": "İşleminiz bloka dahil edildiğinde maks. baz ücretiniz ile gerçek paz ücret arasındaki fark iade edilecektir. Toplam miktar, maks. baz ücret (GWEI'de) * gaz limiti olarak hesaplanacaktır." }, - "advancedConfiguration": { - "message": "Gelişmiş yapılandırma" - }, "advancedDetailsDataDesc": { "message": "Veri" }, @@ -700,12 +697,6 @@ "betaTerms": { "message": "Beta Kullanım koşulları" }, - "betaWalletCreationSuccessReminder1": { - "message": "MetaMask Beta Gizli Kurtarma İfadenizi kurtaramaz." - }, - "betaWalletCreationSuccessReminder2": { - "message": "MetaMask hiçbir zaman Gizli Kurtarma İfadenizi istemez." - }, "billionAbbreviation": { "message": "MR", "description": "Shortened form of 'billion'" @@ -2400,9 +2391,6 @@ "jazzicons": { "message": "Jazzicons" }, - "jsDeliver": { - "message": "jsDeliver" - }, "jsonFile": { "message": "JSON Dosyası", "description": "format for importing an account" @@ -3452,10 +3440,6 @@ "onboardingPinMmiExtensionLabel": { "message": "MetaMask Institutional'ı sabitle" }, - "onboardingUsePhishingDetectionDescription": { - "message": "Kimlik avı tespiti uyarıları $1 ile iletişime bağlıdır. jsDeliver IP adresinize erişim sağlayacaktır. Şunu görüntüleyin: $2.", - "description": "The $1 is the word 'jsDeliver', from key 'jsDeliver' and $2 is the words Privacy Policy from key 'privacyMsg', both separated here so that it can be wrapped as a link" - }, "oneDayAbbreviation": { "message": "1G", "description": "Shortened form of '1 day'" @@ -4096,9 +4080,6 @@ "rejected": { "message": "Reddedildi" }, - "remember": { - "message": "Unutmayın:" - }, "remove": { "message": "Kaldır" }, @@ -4506,9 +4487,6 @@ "sepolia": { "message": "Sepolia test ağı" }, - "setAdvancedPrivacySettingsDetails": { - "message": "MetaMask, ürünün kullanılabilirliğini ve güvenliğini iyileştirmek amacıyla bu güvenilir üçüncü taraf hizmetlerini kullanır." - }, "setApprovalForAll": { "message": "Tümüne onay ver" }, @@ -6160,26 +6138,6 @@ "walletConnectionGuide": { "message": "donanım cüzdanı bağlantı kılavuzumuz" }, - "walletCreationSuccessDetail": { - "message": "Cüzdanınızı başarılı bir şekilde korudunuz. Gizli Kurtarma İfadenizi güvenli ve gizli tutun -- bunun sorumluluğu size aittir!" - }, - "walletCreationSuccessReminder1": { - "message": "MetaMask Gizli Kurtarma İfadenizi kurtaramıyor." - }, - "walletCreationSuccessReminder2": { - "message": "MetaMask hiçbir zaman Gizli Kurtarma İfadenizi istemeyecektir." - }, - "walletCreationSuccessReminder3": { - "message": "$1 hiç kimseyle başkasıyla paylaşmayın, aksi halde çalınma riskiyle karşı karşıya kalırsınız", - "description": "$1 is separated as walletCreationSuccessReminder3BoldSection so that we can bold it" - }, - "walletCreationSuccessReminder3BoldSection": { - "message": "Gizli Kurtarma İfadenizi", - "description": "This string is localized separately from walletCreationSuccessReminder3 so that we can bold it" - }, - "walletCreationSuccessTitle": { - "message": "Cüzdan oluşturma başarılı" - }, "wantToAddThisNetwork": { "message": "Bu ağı eklemek istiyor musunuz?" }, diff --git a/app/_locales/vi/messages.json b/app/_locales/vi/messages.json index 3623c8b86a2e..2d8d89a25ee7 100644 --- a/app/_locales/vi/messages.json +++ b/app/_locales/vi/messages.json @@ -331,9 +331,6 @@ "advancedBaseGasFeeToolTip": { "message": "Khi các giao dịch của bạn được đưa vào khối, mọi phần chênh lệch giữa phí cơ sở tối đa và phí cơ sở thực tế đều sẽ được hoàn lại. Tổng số tiền sẽ được tính bằng phí cơ sở tối đa (theo GWEI) * hạn mức phí gas." }, - "advancedConfiguration": { - "message": "Cấu hình nâng cao" - }, "advancedDetailsDataDesc": { "message": "Dữ liệu" }, @@ -700,12 +697,6 @@ "betaTerms": { "message": "Điều khoản sử dụng phiên bản Beta" }, - "betaWalletCreationSuccessReminder1": { - "message": "MetaMask Beta không thể khôi phục Cụm từ khôi phục bí mật của bạn." - }, - "betaWalletCreationSuccessReminder2": { - "message": "MetaMask Beta sẽ không bao giờ hỏi về Cụm từ khôi phục bí mật của bạn." - }, "billionAbbreviation": { "message": "Tỷ", "description": "Shortened form of 'billion'" @@ -2400,9 +2391,6 @@ "jazzicons": { "message": "Jazzicons" }, - "jsDeliver": { - "message": "jsDeliver" - }, "jsonFile": { "message": "Tập tin JSON", "description": "format for importing an account" @@ -3452,10 +3440,6 @@ "onboardingPinMmiExtensionLabel": { "message": "Ghim MetaMask Institutional" }, - "onboardingUsePhishingDetectionDescription": { - "message": "Thông báo phát hiện dấu hiệu lừa đảo tùy thuộc vào quá trình truyền tin với $1. jsDeliver sẽ có quyền truy cập vào địa chỉ IP của bạn. Xem $2.", - "description": "The $1 is the word 'jsDeliver', from key 'jsDeliver' and $2 is the words Privacy Policy from key 'privacyMsg', both separated here so that it can be wrapped as a link" - }, "oneDayAbbreviation": { "message": "1 Ngày", "description": "Shortened form of '1 day'" @@ -4096,9 +4080,6 @@ "rejected": { "message": "Đã từ chối" }, - "remember": { - "message": "Ghi nhớ:" - }, "remove": { "message": "Xóa" }, @@ -4506,9 +4487,6 @@ "sepolia": { "message": "Mạng thử nghiệm Sepolia" }, - "setAdvancedPrivacySettingsDetails": { - "message": "MetaMask sử dụng các dịch vụ của bên thứ ba đáng tin cậy này để nâng cao sự hữu ích và an toàn của sản phẩm." - }, "setApprovalForAll": { "message": "Thiết lập chấp thuận tất cả" }, @@ -6160,26 +6138,6 @@ "walletConnectionGuide": { "message": "hướng dẫn của chúng tôi về cách kết nối ví cứng" }, - "walletCreationSuccessDetail": { - "message": "Bạn đã bảo vệ thành công ví của mình. Hãy đảm bảo an toàn và bí mật cho Cụm từ khôi phục bí mật của bạn -- đây là trách nhiệm của bạn!" - }, - "walletCreationSuccessReminder1": { - "message": "MetaMask không thể khôi phục Cụm từ khôi phục bí mật của bạn." - }, - "walletCreationSuccessReminder2": { - "message": "MetaMask sẽ không bao giờ hỏi về Cụm từ khôi phục bí mật của bạn." - }, - "walletCreationSuccessReminder3": { - "message": "$1 với bất kỳ ai, nếu không bạn sẽ có nguy cơ bị mất tiền", - "description": "$1 is separated as walletCreationSuccessReminder3BoldSection so that we can bold it" - }, - "walletCreationSuccessReminder3BoldSection": { - "message": "Không bao giờ chia sẻ Cụm từ khôi phục bí mật của bạn", - "description": "This string is localized separately from walletCreationSuccessReminder3 so that we can bold it" - }, - "walletCreationSuccessTitle": { - "message": "Tạo ví thành công" - }, "wantToAddThisNetwork": { "message": "Bạn muốn thêm mạng này?" }, diff --git a/app/_locales/zh_CN/messages.json b/app/_locales/zh_CN/messages.json index 3b78771d5823..37836c219ccd 100644 --- a/app/_locales/zh_CN/messages.json +++ b/app/_locales/zh_CN/messages.json @@ -331,9 +331,6 @@ "advancedBaseGasFeeToolTip": { "message": "当您的交易被包含在区块中时,您的最大基础费用与实际基础费用之间的任何差额将被退还。总金额按最大基础费用(以GWEI为单位)*燃料限制计算。" }, - "advancedConfiguration": { - "message": "高级配置" - }, "advancedDetailsDataDesc": { "message": "数据" }, @@ -700,12 +697,6 @@ "betaTerms": { "message": "测试版使用条款" }, - "betaWalletCreationSuccessReminder1": { - "message": "MetaMask 测试版无法恢复您的账户私钥助记词。" - }, - "betaWalletCreationSuccessReminder2": { - "message": "MetaMask 测试版绝对不会向您索要账户私钥助记词。" - }, "billionAbbreviation": { "message": "十亿", "description": "Shortened form of 'billion'" @@ -2400,9 +2391,6 @@ "jazzicons": { "message": "Jazzicons" }, - "jsDeliver": { - "message": "jsDeliver" - }, "jsonFile": { "message": "JSON 文件", "description": "format for importing an account" @@ -3452,10 +3440,6 @@ "onboardingPinMmiExtensionLabel": { "message": "将MetaMask Institutional置顶" }, - "onboardingUsePhishingDetectionDescription": { - "message": "网络钓鱼检测提醒依赖于与 $1 的通信。jsDeliver 将有权访问您的 IP 地址。查看 $2。", - "description": "The $1 is the word 'jsDeliver', from key 'jsDeliver' and $2 is the words Privacy Policy from key 'privacyMsg', both separated here so that it can be wrapped as a link" - }, "oneDayAbbreviation": { "message": "1 天", "description": "Shortened form of '1 day'" @@ -4096,9 +4080,6 @@ "rejected": { "message": "已拒绝" }, - "remember": { - "message": "记住:" - }, "remove": { "message": "删除" }, @@ -4506,9 +4487,6 @@ "sepolia": { "message": "Sepolia测试网络" }, - "setAdvancedPrivacySettingsDetails": { - "message": "MetaMask 使用这些可信的第三方服务来提高产品可用性和安全性。" - }, "setApprovalForAll": { "message": "设置批准所有" }, @@ -6160,26 +6138,6 @@ "walletConnectionGuide": { "message": "我们的硬件钱包连接指南" }, - "walletCreationSuccessDetail": { - "message": "您已经成功地保护了您的钱包。请确保您的账户私钥助记词安全和秘密——这是您的责任!" - }, - "walletCreationSuccessReminder1": { - "message": "MetaMask 无法恢复您的账户私钥助记词。" - }, - "walletCreationSuccessReminder2": { - "message": "MetaMask 绝对不会索要您的账户私钥助记词。" - }, - "walletCreationSuccessReminder3": { - "message": "对任何人 $1,否则您的资金有被盗风险", - "description": "$1 is separated as walletCreationSuccessReminder3BoldSection so that we can bold it" - }, - "walletCreationSuccessReminder3BoldSection": { - "message": "切勿分享您的账户私钥助记词", - "description": "This string is localized separately from walletCreationSuccessReminder3 so that we can bold it" - }, - "walletCreationSuccessTitle": { - "message": "钱包创建成功" - }, "wantToAddThisNetwork": { "message": "想要添加此网络吗?" }, diff --git a/shared/constants/metametrics.ts b/shared/constants/metametrics.ts index 8faf7c7bfb79..b3e6f252d23d 100644 --- a/shared/constants/metametrics.ts +++ b/shared/constants/metametrics.ts @@ -586,6 +586,7 @@ export enum MetaMetricsEventName { OnboardingWalletImportAttempted = 'Wallet Import Attempted', OnboardingWalletVideoPlay = 'SRP Intro Video Played', OnboardingTwitterClick = 'External Link Clicked', + OnboardingWalletSetupComplete = 'Wallet Setup Complete', OnrampProviderSelected = 'On-ramp Provider Selected', PermissionsApproved = 'Permissions Approved', PermissionsRejected = 'Permissions Rejected', diff --git a/test/e2e/helpers.js b/test/e2e/helpers.js index 643dcefa35ae..21cc84a6fcb9 100644 --- a/test/e2e/helpers.js +++ b/test/e2e/helpers.js @@ -546,7 +546,7 @@ const onboardingRevealAndConfirmSRP = async (driver) => { */ const onboardingCompleteWalletCreation = async (driver) => { // complete - await driver.findElement({ text: 'Wallet creation successful', tag: 'h2' }); + await driver.findElement({ text: 'Congratulations', tag: 'h2' }); await driver.clickElement('[data-testid="onboarding-complete-done"]'); }; @@ -554,7 +554,7 @@ const onboardingCompleteWalletCreationWithOptOut = async (driver) => { // wait for h2 to appear await driver.findElement({ text: 'Wallet creation successful', tag: 'h2' }); // opt-out from third party API - await driver.clickElement({ text: 'Advanced configuration', tag: 'a' }); + await driver.clickElement({ text: 'Manage default settings', tag: 'a' }); await driver.clickElement( '[data-testid="basic-functionality-toggle"] .toggle-button', ); diff --git a/test/e2e/tests/network/multi-rpc.spec.ts b/test/e2e/tests/network/multi-rpc.spec.ts index 7b03d411d6ec..c9fa95f986e9 100644 --- a/test/e2e/tests/network/multi-rpc.spec.ts +++ b/test/e2e/tests/network/multi-rpc.spec.ts @@ -397,7 +397,13 @@ describe('MultiRpc:', function (this: Suite) { // go to advanced settigns await driver.clickElement({ - text: 'Advanced configuration', + text: 'Manage default settings', + }); + + await driver.delay(regularDelayMs); + + await driver.clickElement({ + text: 'General', }); // open edit modal @@ -419,6 +425,27 @@ describe('MultiRpc:', function (this: Suite) { tag: 'button', }); + await driver.delay(regularDelayMs); + await driver.waitForSelector('[data-testid="category-back-button"]'); + await driver.clickElement('[data-testid="category-back-button"]'); + + await driver.waitForSelector( + '[data-testid="privacy-settings-back-button"]', + ); + await driver.clickElement( + '[data-testid="privacy-settings-back-button"]', + ); + + await driver.clickElement({ + text: 'Done', + tag: 'button', + }); + + await driver.clickElement({ + text: 'Next', + tag: 'button', + }); + await driver.clickElement({ text: 'Done', tag: 'button', @@ -433,7 +460,7 @@ describe('MultiRpc:', function (this: Suite) { true, '“Arbitrum One” was successfully edited!', ); - + // Ensures popover backround doesn't kill test await driver.delay(regularDelayMs); await driver.clickElement('[data-testid="network-display"]'); diff --git a/test/e2e/tests/onboarding/onboarding.spec.js b/test/e2e/tests/onboarding/onboarding.spec.js index 1aa716953703..1b15dba5ddd7 100644 --- a/test/e2e/tests/onboarding/onboarding.spec.js +++ b/test/e2e/tests/onboarding/onboarding.spec.js @@ -21,6 +21,7 @@ const { regularDelayMs, unlockWallet, tinyDelayMs, + largeDelayMs, } = require('../../helpers'); const FixtureBuilder = require('../../fixture-builder'); const { @@ -204,7 +205,7 @@ describe('MetaMask onboarding @no-mmi', function () { // Verify site assert.equal( await driver.isElementPresent({ - text: 'Wallet creation successful', + text: 'Your wallet is ready', tag: 'h2', }), true, @@ -270,76 +271,122 @@ describe('MetaMask onboarding @no-mmi', function () { }, async ({ driver, secondaryGanacheServer }) => { - await driver.navigate(); - await importSRPOnboardingFlow( - driver, - TEST_SEED_PHRASE, - WALLET_PASSWORD, - ); + try { + await driver.navigate(); + await importSRPOnboardingFlow( + driver, + TEST_SEED_PHRASE, + WALLET_PASSWORD, + ); - // Add custom network localhost 8546 during onboarding - await driver.clickElement({ text: 'Advanced configuration', tag: 'a' }); - await driver.clickElement({ text: 'Add a network' }); - await driver.waitForSelector( - '.multichain-network-list-menu-content-wrapper__dialog', - ); + await driver.clickElement({ + text: 'Manage default settings', + tag: 'button', + }); - await driver.fill( - '[data-testid="network-form-network-name"]', - networkName, - ); - await driver.fill( - '[data-testid="network-form-chain-id"]', - chainId.toString(), - ); - await driver.fill( - '[data-testid="network-form-ticker-input"]', - currencySymbol, - ); + await driver.clickElement({ + text: 'General', + }); + await driver.delay(largeDelayMs); + await driver.clickElement({ text: 'Add a network' }); - // Add rpc url - const rpcUrlInputDropDown = await driver.waitForSelector( - '[data-testid="test-add-rpc-drop-down"]', - ); - await rpcUrlInputDropDown.click(); - await driver.delay(tinyDelayMs); - await driver.clickElement({ - text: 'Add RPC URL', - tag: 'button', - }); - const rpcUrlInput = await driver.waitForSelector( - '[data-testid="rpc-url-input-test"]', - ); - await rpcUrlInput.clear(); - await rpcUrlInput.sendKeys(networkUrl); - await driver.clickElement({ - text: 'Add URL', - tag: 'button', - }); + await driver.waitForSelector( + '.multichain-network-list-menu-content-wrapper__dialog', + ); - await driver.clickElement({ text: 'Save', tag: 'button' }); - await driver.clickElement({ - text: 'Done', - tag: 'button', - }); + await driver.fill( + '[data-testid="network-form-network-name"]', + networkName, + ); + await driver.fill( + '[data-testid="network-form-chain-id"]', + chainId.toString(), + ); + await driver.fill( + '[data-testid="network-form-ticker-input"]', + currencySymbol, + ); - await driver.clickElement('.mm-picker-network'); - await driver.clickElement( - `[data-rbd-draggable-id="${toHex(chainId)}"]`, - ); + // Add rpc url + const rpcUrlInputDropDown = await driver.waitForSelector( + '[data-testid="test-add-rpc-drop-down"]', + ); + await driver.delay(tinyDelayMs); + await rpcUrlInputDropDown.click(); + await driver.delay(tinyDelayMs); + await driver.clickElement({ + text: 'Add RPC URL', + tag: 'button', + }); + const rpcUrlInput = await driver.waitForSelector( + '[data-testid="rpc-url-input-test"]', + ); + await rpcUrlInput.clear(); + await rpcUrlInput.sendKeys(networkUrl); + await driver.clickElement({ + text: 'Add URL', + tag: 'button', + }); + + await driver.clickElement({ text: 'Save', tag: 'button' }); + + await driver.delay(largeDelayMs); + await driver.waitForSelector('[data-testid="category-back-button"]'); + const generalBackButton = await driver.waitForSelector( + '[data-testid="category-back-button"]', + ); + await generalBackButton.click(); - // Check localhost 8546 is selected and its balance value is correct - await driver.findElement({ - css: '[data-testid="network-display"]', - text: networkName, - }); + await driver.delay(largeDelayMs); + + await driver.waitForSelector( + '[data-testid="privacy-settings-back-button"]', + ); + const defaultSettingsBackButton = await driver.findElement( + '[data-testid="privacy-settings-back-button"]', + ); + await defaultSettingsBackButton.click(); + + await driver.delay(largeDelayMs); + + await driver.clickElement({ + text: 'Done', + tag: 'button', + }); + + await driver.clickElement({ + text: 'Next', + tag: 'button', + }); + + await driver.delay(largeDelayMs); - await locateAccountBalanceDOM(driver, secondaryGanacheServer[0]); + await driver.clickElement({ + text: 'Done', + tag: 'button', + }); + + await driver.clickElement('.mm-picker-network'); + await driver.clickElement( + `[data-rbd-draggable-id="${toHex(chainId)}"]`, + ); + await driver.delay(largeDelayMs); + // Check localhost 8546 is selected and its balance value is correct + await driver.findElement({ + css: '[data-testid="network-display"]', + text: networkName, + }); + + await locateAccountBalanceDOM(driver, secondaryGanacheServer[0]); + } catch (error) { + console.error('Error in test:', error); + throw error; + } }, ); }); - it('User can turn off basic functionality in advanced configurations', async function () { + it('User can turn off basic functionality in default settings', async function () { await withFixtures( { fixtures: new FixtureBuilder({ onboarding: true }).build(), @@ -354,13 +401,25 @@ describe('MetaMask onboarding @no-mmi', function () { WALLET_PASSWORD, ); - await driver.clickElement({ text: 'Advanced configuration', tag: 'a' }); + await driver.clickElement({ + text: 'Manage default settings', + tag: 'button', + }); + await driver.clickElement('[data-testid="category-item-General"]'); await driver.clickElement( '[data-testid="basic-functionality-toggle"] .toggle-button', ); await driver.clickElement('[id="basic-configuration-checkbox"]'); await driver.clickElement({ text: 'Turn off', tag: 'button' }); - await driver.clickElement({ text: 'Done', tag: 'button' }); + await driver.clickElement('[data-testid="category-back-button"]'); + await driver.clickElement( + '[data-testid="privacy-settings-back-button"]', + ); + + await driver.clickElement('[data-testid="onboarding-complete-done"]'); + await driver.clickElement('[data-testid="pin-extension-next"]'); + await driver.clickElement('[data-testid="pin-extension-done"]'); + // Check that the 'basic functionality is off' banner is displayed on the home screen after onboarding completion await driver.waitForSelector({ text: 'Basic functionality is off', diff --git a/test/e2e/tests/privacy/basic-functionality.spec.js b/test/e2e/tests/privacy/basic-functionality.spec.js index aef2f16728de..062a0345a39a 100644 --- a/test/e2e/tests/privacy/basic-functionality.spec.js +++ b/test/e2e/tests/privacy/basic-functionality.spec.js @@ -5,6 +5,8 @@ const { importSRPOnboardingFlow, WALLET_PASSWORD, tinyDelayMs, + regularDelayMs, + largeDelayMs, defaultGanacheOptions, } = require('../../helpers'); const { METAMASK_STALELIST_URL } = require('../phishing-controller/helpers'); @@ -41,7 +43,7 @@ async function mockApis(mockServer) { } describe('MetaMask onboarding @no-mmi', function () { - it('should prevent network requests to basic functionality endpoints when the basica functionality toggle is off', async function () { + it('should prevent network requests to basic functionality endpoints when the basic functionality toggle is off', async function () { await withFixtures( { fixtures: new FixtureBuilder({ onboarding: true }).build(), @@ -57,15 +59,36 @@ describe('MetaMask onboarding @no-mmi', function () { WALLET_PASSWORD, ); - await driver.clickElement({ text: 'Advanced configuration', tag: 'a' }); + await driver.clickElement({ + text: 'Manage default settings', + tag: 'button', + }); + await driver.clickElement('[data-testid="category-item-General"]'); + + await driver.delay(regularDelayMs); + await driver.clickElement( '[data-testid="basic-functionality-toggle"] .toggle-button', ); + await driver.clickElement('[id="basic-configuration-checkbox"]'); await driver.clickElement({ text: 'Turn off', tag: 'button' }); + await driver.clickElement('[data-testid="category-back-button"]'); + await driver.delay(regularDelayMs); + await driver.clickElement('[data-testid="category-item-Assets"]'); + await driver.delay(regularDelayMs); await driver.clickElement( '[data-testid="currency-rate-check-toggle"] .toggle-button', ); + await driver.clickElement('[data-testid="category-back-button"]'); + await driver.delay(regularDelayMs); + await driver.clickElement( + '[data-testid="privacy-settings-back-button"]', + ); + await driver.delay(regularDelayMs); + + await driver.clickElement({ text: 'Done', tag: 'button' }); + await driver.clickElement('[data-testid="pin-extension-next"]'); await driver.clickElement({ text: 'Done', tag: 'button' }); await driver.clickElement('[data-testid="network-display"]'); @@ -90,7 +113,7 @@ describe('MetaMask onboarding @no-mmi', function () { ); }); - it('should not prevent network requests to basic functionality endpoints when the basica functionality toggle is on', async function () { + it('should not prevent network requests to basic functionality endpoints when the basic functionality toggle is on', async function () { await withFixtures( { fixtures: new FixtureBuilder({ onboarding: true }).build(), @@ -106,19 +129,29 @@ describe('MetaMask onboarding @no-mmi', function () { WALLET_PASSWORD, ); - await driver.clickElement({ text: 'Advanced configuration', tag: 'a' }); - + await driver.clickElement({ + text: 'Manage default settings', + tag: 'button', + }); + await driver.clickElement('[data-testid="category-item-General"]'); + await driver.delay(largeDelayMs); + await driver.clickElement('[data-testid="category-back-button"]'); + await driver.delay(largeDelayMs); + await driver.clickElement( + '[data-testid="privacy-settings-back-button"]', + ); + await driver.delay(largeDelayMs); + await driver.clickElement({ text: 'Done', tag: 'button' }); + await driver.clickElement('[data-testid="pin-extension-next"]'); await driver.clickElement({ text: 'Done', tag: 'button' }); await driver.clickElement('[data-testid="network-display"]'); await driver.clickElement({ text: 'Ethereum Mainnet', tag: 'p' }); - await driver.delay(tinyDelayMs); // Wait until network is fully switched and refresh tokens before asserting to mitigate flakiness await driver.assertElementNotPresent('.loading-overlay'); await driver.clickElement('[data-testid="refresh-list-button"]'); - for (let i = 0; i < mockedEndpoints.length; i += 1) { const requests = await mockedEndpoints[i].getSeenRequests(); assert.equal( diff --git a/test/integration/onboarding/wallet-created.test.tsx b/test/integration/onboarding/wallet-created.test.tsx index 36ff7c8d3ecf..55be476839fe 100644 --- a/test/integration/onboarding/wallet-created.test.tsx +++ b/test/integration/onboarding/wallet-created.test.tsx @@ -10,6 +10,7 @@ import { jest.mock('../../../ui/store/background-connection', () => ({ ...jest.requireActual('../../../ui/store/background-connection'), submitRequestToBackground: jest.fn(), + callBackgroundMethod: jest.fn(), })); jest.mock('../../../ui/ducks/bridge/actions', () => ({ @@ -21,6 +22,7 @@ const mockedBackgroundConnection = jest.mocked(backgroundConnection); const backgroundConnectionMocked = { onNotification: jest.fn(), + callBackgroundMethod: jest.fn(), }; describe('Wallet Created Events', () => { @@ -34,7 +36,7 @@ describe('Wallet Created Events', () => { backgroundConnection: backgroundConnectionMocked, }); - expect(getByText('Wallet creation successful')).toBeInTheDocument(); + expect(getByText('Congratulations!')).toBeInTheDocument(); fireEvent.click(getByTestId('onboarding-complete-done')); @@ -69,6 +71,18 @@ describe('Wallet Created Events', () => { fireEvent.click(getByTestId('pin-extension-next')); + let onboardingPinExtensionMetricsEvent; + + await waitFor(() => { + onboardingPinExtensionMetricsEvent = + mockedBackgroundConnection.submitRequestToBackground.mock.calls?.find( + (call) => call[0] === 'trackMetaMetricsEvent', + ); + expect(onboardingPinExtensionMetricsEvent?.[0]).toBe( + 'trackMetaMetricsEvent', + ); + }); + await waitFor(() => { expect( getByText( diff --git a/ui/components/app/incoming-trasaction-toggle/__snapshots__/incoming-transaction-toggle.test.js.snap b/ui/components/app/incoming-trasaction-toggle/__snapshots__/incoming-transaction-toggle.test.js.snap index 27ee8bbf6b69..8c44078d57cd 100644 --- a/ui/components/app/incoming-trasaction-toggle/__snapshots__/incoming-transaction-toggle.test.js.snap +++ b/ui/components/app/incoming-trasaction-toggle/__snapshots__/incoming-transaction-toggle.test.js.snap @@ -6,7 +6,7 @@ exports[`IncomingTransactionToggle should render existing incoming transaction p class="mm-box mm-incoming-transaction-toggle" >

Show incoming transactions

diff --git a/ui/components/app/incoming-trasaction-toggle/incoming-transaction-toggle.tsx b/ui/components/app/incoming-trasaction-toggle/incoming-transaction-toggle.tsx index d1274075d056..0295fc1a044d 100644 --- a/ui/components/app/incoming-trasaction-toggle/incoming-transaction-toggle.tsx +++ b/ui/components/app/incoming-trasaction-toggle/incoming-transaction-toggle.tsx @@ -60,7 +60,9 @@ const IncomingTransactionToggle = ({ return ( - {t('showIncomingTransactions')} + + {t('showIncomingTransactions')} + {t('showIncomingTransactionsExplainer')} diff --git a/ui/pages/onboarding-flow/creation-successful/creation-successful.js b/ui/pages/onboarding-flow/creation-successful/creation-successful.js index fab463e5b685..d91e3e54746d 100644 --- a/ui/pages/onboarding-flow/creation-successful/creation-successful.js +++ b/ui/pages/onboarding-flow/creation-successful/creation-successful.js @@ -1,23 +1,34 @@ import React, { useContext } from 'react'; import { useHistory } from 'react-router-dom'; import { useSelector } from 'react-redux'; - -import Box from '../../../components/ui/box'; -import { Text } from '../../../components/component-library'; -import Button from '../../../components/ui/button'; import { - FontWeight, - TextAlign, - AlignItems, + Button, + ButtonSize, + ButtonVariant, +} from '../../../components/component-library/button'; +import { TextVariant, + Display, + AlignItems, + JustifyContent, + FlexDirection, } from '../../../helpers/constants/design-system'; +import { + Box, + Text, + IconName, + ButtonLink, + ButtonLinkSize, + IconSize, +} from '../../../components/component-library'; import { useI18nContext } from '../../../hooks/useI18nContext'; import { ONBOARDING_PIN_EXTENSION_ROUTE, ONBOARDING_PRIVACY_SETTINGS_ROUTE, } from '../../../helpers/constants/routes'; -import { isBeta } from '../../../helpers/utils/build-types'; +import { FirstTimeFlowType } from '../../../../shared/constants/onboarding'; import { getFirstTimeFlowType } from '../../../selectors'; +import { getSeedPhraseBackedUp } from '../../../ducks/metamask/metamask'; import { MetaMetricsEventCategory, MetaMetricsEventName, @@ -31,84 +42,160 @@ export default function CreationSuccessful() { const t = useI18nContext(); const trackEvent = useContext(MetaMetricsContext); const firstTimeFlowType = useSelector(getFirstTimeFlowType); + const seedPhraseBackedUp = useSelector(getSeedPhraseBackedUp); + const learnMoreLink = + 'https://support.metamask.io/hc/en-us/articles/360015489591-Basic-Safety-and-Security-Tips-for-MetaMask'; + const learnHowToKeepWordsSafe = + 'https://community.metamask.io/t/what-is-a-secret-recovery-phrase-and-how-to-keep-your-crypto-wallet-secure/3440'; const { createSession } = useCreateSession(); const isProfileSyncingEnabled = useSelector(selectIsProfileSyncingEnabled); return ( -
- - + + + + + {firstTimeFlowType === FirstTimeFlowType.create && + !seedPhraseBackedUp + ? '🔓' + : '🎉'} + + - {t('walletCreationSuccessTitle')} + {firstTimeFlowType === FirstTimeFlowType.import && + t('yourWalletIsReady')} + + {firstTimeFlowType === FirstTimeFlowType.create && + !seedPhraseBackedUp && + t('reminderSet')} + + {firstTimeFlowType === FirstTimeFlowType.create && + seedPhraseBackedUp && + t('congratulations')} - - {t('walletCreationSuccessDetail')} + + {firstTimeFlowType === FirstTimeFlowType.import && + t('rememberSRPIfYouLooseAccess', [ + + {t('learnHow')} + , + ])} + + {firstTimeFlowType === FirstTimeFlowType.create && + seedPhraseBackedUp && + t('walletProtectedAndReadyToUse', [ + + {t('securityPrivacyPath')} + , + ])} + {firstTimeFlowType === FirstTimeFlowType.create && + !seedPhraseBackedUp && + t('ifYouGetLockedOut', [ + {t('securityPrivacyPath')}, + ])} - + {t('keepReminderOfSRP', [ + + {t('learnMoreUpperCaseWithDot')} + , + ])} + + )} + + - {t('remember')} - -
    -
  • - - {isBeta() - ? t('betaWalletCreationSuccessReminder1') - : t('walletCreationSuccessReminder1')} - -
  • -
  • - - {isBeta() - ? t('betaWalletCreationSuccessReminder2') - : t('walletCreationSuccessReminder2')} - -
  • -
  • - - {t('walletCreationSuccessReminder3', [ - - {t('walletCreationSuccessReminder3BoldSection')} - , - ])} - -
  • -
  • - -
  • -
- + + {t('settingsOptimisedForEaseOfUseAndSecurity')} + + + + -
+
); } diff --git a/ui/pages/onboarding-flow/creation-successful/creation-successful.test.js b/ui/pages/onboarding-flow/creation-successful/creation-successful.test.js index 7d6c55f84642..5349a9f23f9e 100644 --- a/ui/pages/onboarding-flow/creation-successful/creation-successful.test.js +++ b/ui/pages/onboarding-flow/creation-successful/creation-successful.test.js @@ -8,6 +8,8 @@ import { } from '../../../helpers/constants/routes'; import { setBackgroundConnection } from '../../../store/background-connection'; import { renderWithProvider } from '../../../../test/jest'; +import initializedMockState from '../../../../test/data/mock-state.json'; +import { FirstTimeFlowType } from '../../../../shared/constants/onboarding'; import CreationSuccessful from './creation-successful'; const mockHistoryPush = jest.fn(); @@ -25,7 +27,12 @@ jest.mock('react-router-dom', () => ({ describe('Creation Successful Onboarding View', () => { const mockStore = { - metamask: {}, + metamask: { + providerConfig: { + type: 'test', + }, + firstTimeFlowType: FirstTimeFlowType.import, + }, }; const store = configureMockStore([thunk])(mockStore); setBackgroundConnection({ completeOnboarding: completeOnboardingStub }); @@ -34,19 +41,94 @@ describe('Creation Successful Onboarding View', () => { jest.resetAllMocks(); }); - it('should redirect to privacy-settings view when "Advanced configuration" button is clicked', () => { + it('should remind the user to not loose the SRP and keep it safe (Import case)', () => { + const importFirstTimeFlowState = { + ...initializedMockState, + metamask: { + ...initializedMockState.metamask, + firstTimeFlowType: FirstTimeFlowType.import, + }, + }; + const customMockStore = configureMockStore([thunk])( + importFirstTimeFlowState, + ); + + const { getByText } = renderWithProvider( + , + customMockStore, + ); + + expect(getByText('Your wallet is ready')).toBeInTheDocument(); + expect( + getByText( + /Remember, if you lose your Secret Recovery Phrase, you lose access to your wallet/u, + ), + ).toBeInTheDocument(); + }); + + it('should show the Congratulations! message to the user (New wallet & backed up SRP)', () => { + const importFirstTimeFlowState = { + ...initializedMockState, + metamask: { + ...initializedMockState.metamask, + firstTimeFlowType: FirstTimeFlowType.create, + seedPhraseBackedUp: true, + }, + }; + const customMockStore = configureMockStore([thunk])( + importFirstTimeFlowState, + ); + + const { getByText } = renderWithProvider( + , + customMockStore, + ); + + expect(getByText('Congratulations!')).toBeInTheDocument(); + expect( + getByText(/Your wallet is protected and ready to use/u), + ).toBeInTheDocument(); + }); + + it('should show the Reminder set! message to the user (New wallet & did not backed up SRP)', () => { + const importFirstTimeFlowState = { + ...initializedMockState, + metamask: { + ...initializedMockState.metamask, + firstTimeFlowType: FirstTimeFlowType.create, + seedPhraseBackedUp: false, + }, + }; + const customMockStore = configureMockStore([thunk])( + importFirstTimeFlowState, + ); + + const { getByText } = renderWithProvider( + , + customMockStore, + ); + + expect(getByText('Reminder set!')).toBeInTheDocument(); + expect( + getByText( + /If you get locked out of the app or get a new device, you will lose your funds./u, + ), + ).toBeInTheDocument(); + }); + + it('should redirect to privacy-settings view when "Manage default settings" button is clicked', () => { const { getByText } = renderWithProvider(, store); - const privacySettingsButton = getByText('Advanced configuration'); + const privacySettingsButton = getByText('Manage default settings'); fireEvent.click(privacySettingsButton); expect(mockHistoryPush).toHaveBeenCalledWith( ONBOARDING_PRIVACY_SETTINGS_ROUTE, ); }); - it('should route to pin extension route when "Got it" button is clicked', async () => { + it('should route to pin extension route when "Done" button is clicked', async () => { const { getByText } = renderWithProvider(, store); - const gotItButton = getByText('Got it'); - fireEvent.click(gotItButton); + const doneButton = getByText('Done'); + fireEvent.click(doneButton); await waitFor(() => { expect(mockHistoryPush).toHaveBeenCalledWith( ONBOARDING_PIN_EXTENSION_ROUTE, diff --git a/ui/pages/onboarding-flow/creation-successful/index.scss b/ui/pages/onboarding-flow/creation-successful/index.scss index ca05b3b1323e..bbb558627caf 100644 --- a/ui/pages/onboarding-flow/creation-successful/index.scss +++ b/ui/pages/onboarding-flow/creation-successful/index.scss @@ -1,46 +1,9 @@ @use "design-system"; .creation-successful { - @include design-system.screen-sm-min { - display: flex; - flex-direction: column; - align-items: center; - } - img { align-self: center; } max-width: 600px; - - ul { - list-style-type: disc; - max-width: 500px; - } - - li { - margin-left: 25px; - - a { - justify-content: flex-start; - padding: 0; - } - } - - &__bold { - font-weight: bold; - } - - &__actions { - display: flex; - align-items: center; - flex-direction: column; - justify-content: center; - - button { - margin-top: 14px; - max-width: 280px; - padding: 16px 0; - } - } } diff --git a/ui/pages/onboarding-flow/pin-extension/pin-extension.js b/ui/pages/onboarding-flow/pin-extension/pin-extension.js index 216bb1416cdf..c9ad1806d49d 100644 --- a/ui/pages/onboarding-flow/pin-extension/pin-extension.js +++ b/ui/pages/onboarding-flow/pin-extension/pin-extension.js @@ -1,13 +1,18 @@ import React, { ///: BEGIN:ONLY_INCLUDE_IF(build-main,build-beta,build-flask) useState, + useContext, ///: END:ONLY_INCLUDE_IF } from 'react'; import { useHistory } from 'react-router-dom'; ///: BEGIN:ONLY_INCLUDE_IF(build-main,build-beta,build-flask) -import { useDispatch } from 'react-redux'; +import { useDispatch, useSelector } from 'react-redux'; import { Carousel } from 'react-responsive-carousel'; -import { setCompletedOnboarding } from '../../../store/actions'; +import { + setCompletedOnboarding, + performSignIn, + toggleExternalServices, +} from '../../../store/actions'; ///: END:ONLY_INCLUDE_IF import { useI18nContext } from '../../../hooks/useI18nContext'; import Button from '../../../components/ui/button'; @@ -30,6 +35,18 @@ import OnboardingPinMmiBillboard from '../../institutional/pin-mmi-billboard/pin ///: END:ONLY_INCLUDE_IF import { Text } from '../../../components/component-library'; ///: BEGIN:ONLY_INCLUDE_IF(build-main,build-beta,build-flask) +import { MetaMetricsContext } from '../../../contexts/metametrics'; +import { + getFirstTimeFlowType, + getExternalServicesOnboardingToggleState, +} from '../../../selectors'; +import { selectIsProfileSyncingEnabled } from '../../../selectors/metamask-notifications/profile-syncing'; +import { selectParticipateInMetaMetrics } from '../../../selectors/metamask-notifications/authentication'; +import { + MetaMetricsEventCategory, + MetaMetricsEventName, +} from '../../../../shared/constants/metametrics'; +import { FirstTimeFlowType } from '../../../../shared/constants/onboarding'; import OnboardingPinBillboard from './pin-billboard'; ///: END:ONLY_INCLUDE_IF @@ -39,14 +56,37 @@ export default function OnboardingPinExtension() { ///: BEGIN:ONLY_INCLUDE_IF(build-main,build-beta,build-flask) const [selectedIndex, setSelectedIndex] = useState(0); const dispatch = useDispatch(); - ///: END:ONLY_INCLUDE_IF + const trackEvent = useContext(MetaMetricsContext); + const firstTimeFlowType = useSelector(getFirstTimeFlowType); + + const externalServicesOnboardingToggleState = useSelector( + getExternalServicesOnboardingToggleState, + ); + const isProfileSyncingEnabled = useSelector(selectIsProfileSyncingEnabled); + const participateInMetaMetrics = useSelector(selectParticipateInMetaMetrics); - ///: BEGIN:ONLY_INCLUDE_IF(build-main,build-beta,build-flask) const handleClick = async () => { if (selectedIndex === 0) { setSelectedIndex(1); } else { + dispatch(toggleExternalServices(externalServicesOnboardingToggleState)); await dispatch(setCompletedOnboarding()); + + if (externalServicesOnboardingToggleState) { + if (!isProfileSyncingEnabled || participateInMetaMetrics) { + await dispatch(performSignIn()); + } + } + + trackEvent({ + category: MetaMetricsEventCategory.Onboarding, + event: MetaMetricsEventName.OnboardingWalletSetupComplete, + properties: { + wallet_setup_type: + firstTimeFlowType === FirstTimeFlowType.import ? 'import' : 'new', + new_wallet: firstTimeFlowType === FirstTimeFlowType.create, + }, + }); history.push(DEFAULT_ROUTE); } }; diff --git a/ui/pages/onboarding-flow/pin-extension/pin-extension.test.js b/ui/pages/onboarding-flow/pin-extension/pin-extension.test.js index 8dc0529c86ae..00c7c38cf1d0 100644 --- a/ui/pages/onboarding-flow/pin-extension/pin-extension.test.js +++ b/ui/pages/onboarding-flow/pin-extension/pin-extension.test.js @@ -11,6 +11,8 @@ const completeOnboardingStub = jest .fn() .mockImplementation(() => Promise.resolve()); +const toggleExternalServicesStub = jest.fn(); + jest.mock('react-router-dom', () => ({ ...jest.requireActual('react-router-dom'), useHistory: jest.fn(() => []), @@ -18,10 +20,20 @@ jest.mock('react-router-dom', () => ({ describe('Creation Successful Onboarding View', () => { const mockStore = { - metamask: {}, + metamask: { + providerConfig: { + type: 'test', + }, + }, + appState: { + externalServicesOnboardingToggleState: true, + }, }; const store = configureMockStore([thunk])(mockStore); - setBackgroundConnection({ completeOnboarding: completeOnboardingStub }); + setBackgroundConnection({ + completeOnboarding: completeOnboardingStub, + toggleExternalServices: toggleExternalServicesStub, + }); const pushMock = jest.fn(); beforeAll(() => { diff --git a/ui/pages/onboarding-flow/privacy-settings/index.scss b/ui/pages/onboarding-flow/privacy-settings/index.scss index 53ce477fe7af..6e3f793cc5a2 100644 --- a/ui/pages/onboarding-flow/privacy-settings/index.scss +++ b/ui/pages/onboarding-flow/privacy-settings/index.scss @@ -5,22 +5,16 @@ flex-direction: column; justify-content: center; align-items: center; + overflow-x: hidden; @include design-system.screen-sm-max { margin-bottom: 24px; } - @include design-system.screen-sm-min { - margin-bottom: 40px; - } - &__header { - display: flex; - justify-content: center; - flex-direction: column; - text-align: center; - max-width: 500px; - margin: 24px; + a { + color: var(--color-primary-default); + } } &__settings { @@ -29,11 +23,6 @@ max-width: 620px; margin-bottom: 20px; - @include design-system.screen-sm-min { - margin-inline-start: 48px; - margin-inline-end: 48px; - } - a { color: var(--color-primary-default); @@ -65,6 +54,36 @@ } } + .container { + display: flex; + width: 100%; + transition: transform 0.5s ease; + } + + .hidden { + display: none; + } + + .categories-item { + cursor: pointer; + } + + .list-view, + .detail-view { + flex: 0 0 100%; + width: 100%; + } + + /* slide in show the detail view */ + .container.show-detail { + transform: translateX(-100%); + } + + /* slide back to show the list view */ + .container.show-list { + transform: translateX(0%); + } + &__customizable-network:hover { cursor: pointer; } diff --git a/ui/pages/onboarding-flow/privacy-settings/privacy-settings.js b/ui/pages/onboarding-flow/privacy-settings/privacy-settings.js index 53cfe99efeb0..ca3bd0af2ff4 100644 --- a/ui/pages/onboarding-flow/privacy-settings/privacy-settings.js +++ b/ui/pages/onboarding-flow/privacy-settings/privacy-settings.js @@ -5,6 +5,7 @@ import { ButtonVariant } from '@metamask/snaps-sdk'; // TODO: Remove restricted import // eslint-disable-next-line import/no-restricted-paths import { addUrlProtocolPrefix } from '../../../../app/scripts/lib/util'; + import { useSetIsProfileSyncingEnabled, useEnableProfileSyncing, @@ -19,12 +20,12 @@ import { PRIVACY_POLICY_LINK, TRANSACTION_SIMULATIONS_LEARN_MORE_LINK, } from '../../../../shared/lib/ui-utils'; +import Button from '../../../components/ui/button'; + import { Box, Text, TextField, - ButtonPrimary, - ButtonPrimarySize, IconName, ButtonLink, AvatarNetwork, @@ -34,15 +35,17 @@ import { } from '../../../components/component-library'; import { MetaMetricsContext } from '../../../contexts/metametrics'; import { - AlignItems, Display, - FlexDirection, - JustifyContent, TextAlign, TextColor, TextVariant, + IconColor, + AlignItems, + JustifyContent, + FlexDirection, + BlockSize, } from '../../../helpers/constants/design-system'; -import { ONBOARDING_PIN_EXTENSION_ROUTE } from '../../../helpers/constants/routes'; +import { ONBOARDING_COMPLETION_ROUTE } from '../../../helpers/constants/routes'; import { useI18nContext } from '../../../hooks/useI18nContext'; import { getPetnamesEnabled, @@ -50,9 +53,7 @@ import { getNetworkConfigurationsByChainId, } from '../../../selectors'; import { selectIsProfileSyncingEnabled } from '../../../selectors/metamask-notifications/profile-syncing'; -import { selectParticipateInMetaMetrics } from '../../../selectors/metamask-notifications/authentication'; import { - setCompletedOnboarding, setIpfsGateway, setUseCurrencyRateCheck, setUseMultiAccountBalanceChecker, @@ -63,10 +64,8 @@ import { showModal, toggleNetworkMenu, setIncomingTransactionsPreferences, - toggleExternalServices, setUseTransactionSimulations, setPetnamesEnabled, - performSignIn, setEditedNetwork, } from '../../../store/actions'; import { @@ -116,6 +115,10 @@ export default function PrivacySettings() { const dispatch = useDispatch(); const history = useHistory(); + const [showDetail, setShowDetail] = useState(false); + const [selectedItem, setSelectedItem] = useState(null); + const [hiddenClass, setHiddenClass] = useState(true); + const defaultState = useSelector((state) => state.metamask); const { incomingTransactionsPreferences, @@ -128,7 +131,6 @@ export default function PrivacySettings() { useTransactionSimulations, } = defaultState; const petnamesEnabled = useSelector(getPetnamesEnabled); - const participateInMetaMetrics = useSelector(selectParticipateInMetaMetrics); const [usePhishingDetection, setUsePhishingDetection] = useState(null); const [turnOn4ByteResolution, setTurnOn4ByteResolution] = @@ -168,7 +170,6 @@ export default function PrivacySettings() { ); const handleSubmit = () => { - dispatch(toggleExternalServices(externalServicesOnboardingToggleState)); dispatch(setUsePhishDetect(phishingToggleState)); dispatch(setUse4ByteResolution(turnOn4ByteResolution)); dispatch(setUseTokenDetection(turnOnTokenDetection)); @@ -176,20 +177,12 @@ export default function PrivacySettings() { setUseMultiAccountBalanceChecker(isMultiAccountBalanceCheckerEnabled), ); dispatch(setUseCurrencyRateCheck(turnOnCurrencyRateCheck)); - dispatch(setCompletedOnboarding()); dispatch(setUseAddressBarEnsResolution(addressBarResolution)); setUseTransactionSimulations(isTransactionSimulationsEnabled); dispatch(setPetnamesEnabled(turnOnPetnames)); // Profile Syncing Setup - if (externalServicesOnboardingToggleState) { - if ( - profileSyncingProps.isProfileSyncingEnabled || - participateInMetaMetrics - ) { - dispatch(performSignIn()); - } - } else { + if (!externalServicesOnboardingToggleState) { profileSyncingProps.setIsProfileSyncingEnabled(false); } @@ -211,7 +204,7 @@ export default function PrivacySettings() { }, }); - history.push(ONBOARDING_PIN_EXTENSION_ROUTE); + history.push(ONBOARDING_COMPLETION_ROUTE); }; const handleUseProfileSync = async () => { @@ -242,352 +235,513 @@ export default function PrivacySettings() { } }; + const handleItemSelected = (item) => { + setSelectedItem(item); + setShowDetail(true); + + setTimeout(() => { + setHiddenClass(false); + }, 500); + }; + + const handleBack = () => { + setShowDetail(false); + setTimeout(() => { + setHiddenClass(true); + }, 500); + }; + + const items = [ + { id: 1, title: t('general'), subtitle: t('generalDescription') }, + { id: 2, title: t('assets'), subtitle: t('assetsDescription') }, + { id: 3, title: t('security'), subtitle: t('securityDescription') }, + ]; + return ( <>
-
- - {t('advancedConfiguration')} - - - {t('setAdvancedPrivacySettingsDetails')} - -
- { - if (toggledValue === false) { - dispatch(openBasicFunctionalityModal()); - } else { - dispatch(onboardingToggleBasicFunctionalityOn()); - trackEvent({ - category: MetaMetricsEventCategory.Onboarding, - event: MetaMetricsEventName.SettingsUpdated, - properties: { - settings_group: 'onboarding_advanced_configuration', - settings_type: 'basic_functionality', - old_value: false, - new_value: true, - was_profile_syncing_on: false, - }, - }); - } - }} - title={t('basicConfigurationLabel')} - description={t('basicConfigurationDescription', [ - - {t('privacyMsg')} - , - ])} - /> - - - dispatch(setIncomingTransactionsPreferences(chainId, value)) - } - incomingTransactionsPreferences={incomingTransactionsPreferences} - /> - - + + - {t('profileSyncPrivacyLink')} - , - ])} - /> - {profileSyncingProps.profileSyncingError && ( - - - {t('notificationsSettingsBoxError')} +
+ +
+ +
diff --git a/ui/pages/onboarding-flow/privacy-settings/privacy-settings.test.js b/ui/pages/onboarding-flow/privacy-settings/privacy-settings.test.js index 80561e9376ae..ec8b88fc52e9 100644 --- a/ui/pages/onboarding-flow/privacy-settings/privacy-settings.test.js +++ b/ui/pages/onboarding-flow/privacy-settings/privacy-settings.test.js @@ -97,8 +97,8 @@ describe('Privacy Settings Onboarding View', () => { disableProfileSyncing: disableProfileSyncingStub, }); - it('should update preferences', () => { - const { container, getByText } = renderWithProvider( + it('should update the default settings from each category', () => { + const { container, queryByTestId } = renderWithProvider( , store, ); @@ -114,61 +114,76 @@ describe('Privacy Settings Onboarding View', () => { expect(setUseTransactionSimulationsStub).toHaveBeenCalledTimes(0); expect(setPreferenceStub).toHaveBeenCalledTimes(0); - const toggles = container.querySelectorAll('input[type=checkbox]'); - const submitButton = getByText('Done'); - // TODO: refactor this toggle array, not very readable - // toggle to false + // Default Settings - General category + const itemCategoryGeneral = queryByTestId('category-item-General'); + expect(itemCategoryGeneral).toBeInTheDocument(); + fireEvent.click(itemCategoryGeneral); + + let toggles = container.querySelectorAll('input[type=checkbox]'); + const backButton = queryByTestId('privacy-settings-back-button'); fireEvent.click(toggles[0]); // toggleExternalServicesStub - fireEvent.click(toggles[1]); // setIncomingTransactionsPreferencesStub - fireEvent.click(toggles[2]); // setIncomingTransactionsPreferencesStub (2) - fireEvent.click(toggles[3]); // setIncomingTransactionsPreferencesStub (3) - fireEvent.click(toggles[4]); // setIncomingTransactionsPreferencesStub (4) - fireEvent.click(toggles[5]); // setUsePhishDetectStub - fireEvent.click(toggles[6]); - fireEvent.click(toggles[7]); // setUse4ByteResolutionStub - fireEvent.click(toggles[8]); // setUseTokenDetectionStub - fireEvent.click(toggles[9]); // setUseMultiAccountBalanceCheckerStub - fireEvent.click(toggles[10]); // setUseTransactionSimulationsStub - fireEvent.click(toggles[11]); // setUseAddressBarEnsResolutionStub - fireEvent.click(toggles[12]); // setUseCurrencyRateCheckStub - fireEvent.click(toggles[13]); // setPreferenceStub - - expect(mockOpenBasicFunctionalityModal).toHaveBeenCalledTimes(1); - - fireEvent.click(submitButton); - - expect(toggleExternalServicesStub).toHaveBeenCalledTimes(1); - expect(setIncomingTransactionsPreferencesStub).toHaveBeenCalledTimes(4); - expect(setUsePhishDetectStub).toHaveBeenCalledTimes(1); - expect(setUse4ByteResolutionStub).toHaveBeenCalledTimes(1); + + // Default Settings - Assets category + const itemCategoryAssets = queryByTestId('category-item-Assets'); + fireEvent.click(itemCategoryAssets); + + toggles = container.querySelectorAll('input[type=checkbox]'); + + fireEvent.click(toggles[0]); // setUseTokenDetectionStub + fireEvent.click(toggles[1]); // setUseTransactionSimulationsStub + + fireEvent.click(toggles[2]); // setIncomingTransactionsPreferencesStub + fireEvent.click(toggles[3]); // setIncomingTransactionsPreferencesStub (2) + fireEvent.click(toggles[4]); // setIncomingTransactionsPreferencesStub (3) + fireEvent.click(toggles[5]); // setIncomingTransactionsPreferencesStub (4) + + fireEvent.click(toggles[6]); // setUseCurrencyRateCheckStub + fireEvent.click(toggles[7]); // setUseAddressBarEnsResolutionStub + fireEvent.click(toggles[8]); // setUseMultiAccountBalanceCheckerStub + + // Default Settings - Security category + const itemCategorySecurity = queryByTestId('category-item-Security'); + fireEvent.click(itemCategorySecurity); + + toggles = container.querySelectorAll('input[type=checkbox]'); + + fireEvent.click(toggles[0]); // setUsePhishDetectStub + fireEvent.click(toggles[1]); // setUse4ByteResolutionStub + fireEvent.click(toggles[2]); // setPreferenceStub + + fireEvent.click(backButton); + expect(setUseTokenDetectionStub).toHaveBeenCalledTimes(1); - expect(setUseMultiAccountBalanceCheckerStub).toHaveBeenCalledTimes(1); - expect(setUseCurrencyRateCheckStub).toHaveBeenCalledTimes(1); - expect(setUseAddressBarEnsResolutionStub).toHaveBeenCalledTimes(1); + expect(setUseTokenDetectionStub.mock.calls[0][0]).toStrictEqual(true); expect(setUseTransactionSimulationsStub).toHaveBeenCalledTimes(1); - expect(setPreferenceStub).toHaveBeenCalledTimes(1); + expect(setUseTransactionSimulationsStub.mock.calls[0][0]).toStrictEqual( + false, + ); + expect(setIncomingTransactionsPreferencesStub).toHaveBeenCalledTimes(4); expect(setIncomingTransactionsPreferencesStub).toHaveBeenCalledWith( CHAIN_IDS.MAINNET, false, expect.anything(), ); - // toggleExternalServices is true still because modal is "open" but not confirmed yet - expect(toggleExternalServicesStub.mock.calls[0][0]).toStrictEqual(true); - expect(setUsePhishDetectStub.mock.calls[0][0]).toStrictEqual(false); - expect(setUse4ByteResolutionStub.mock.calls[0][0]).toStrictEqual(false); - expect(setUseTokenDetectionStub.mock.calls[0][0]).toStrictEqual(true); - expect(setUseMultiAccountBalanceCheckerStub.mock.calls[0][0]).toStrictEqual( - false, - ); + + expect(setUseCurrencyRateCheckStub).toHaveBeenCalledTimes(1); expect(setUseCurrencyRateCheckStub.mock.calls[0][0]).toStrictEqual(false); + expect(setUseAddressBarEnsResolutionStub).toHaveBeenCalledTimes(1); expect(setUseAddressBarEnsResolutionStub.mock.calls[0][0]).toStrictEqual( false, ); - expect(setUseTransactionSimulationsStub.mock.calls[0][0]).toStrictEqual( + expect(setUseMultiAccountBalanceCheckerStub).toHaveBeenCalledTimes(1); + expect(setUseMultiAccountBalanceCheckerStub.mock.calls[0][0]).toStrictEqual( false, ); + + expect(setUsePhishDetectStub).toHaveBeenCalledTimes(1); + expect(setUsePhishDetectStub.mock.calls[0][0]).toStrictEqual(false); + expect(setUse4ByteResolutionStub).toHaveBeenCalledTimes(1); + expect(setUse4ByteResolutionStub.mock.calls[0][0]).toStrictEqual(false); + expect(setPreferenceStub).toHaveBeenCalledTimes(1); expect(setPreferenceStub.mock.calls[0][0]).toStrictEqual( 'petnamesEnabled', false, @@ -182,6 +197,9 @@ describe('Privacy Settings Onboarding View', () => { store, ); + const itemCategoryAssets = queryByTestId('category-item-Assets'); + fireEvent.click(itemCategoryAssets); + const ipfsInput = queryByTestId('ipfs-input'); const ipfsEvent = { target: { @@ -194,8 +212,8 @@ describe('Privacy Settings Onboarding View', () => { const validIpfsUrl = queryByText('IPFS gateway URL is valid'); expect(validIpfsUrl).toBeInTheDocument(); - const submitButton = queryByText('Done'); - fireEvent.click(submitButton); + const backButton = queryByTestId('privacy-settings-back-button'); + fireEvent.click(backButton); expect(setIpfsGatewayStub).toHaveBeenCalled(); }); @@ -206,6 +224,9 @@ describe('Privacy Settings Onboarding View', () => { store, ); + const itemCategoryAssets = queryByTestId('category-item-Assets'); + fireEvent.click(itemCategoryAssets); + const ipfsInput = queryByTestId('ipfs-input'); const ipfsEvent = { target: { @@ -226,6 +247,9 @@ describe('Privacy Settings Onboarding View', () => { store, ); + const itemCategoryAssets = queryByTestId('category-item-Assets'); + fireEvent.click(itemCategoryAssets); + const ipfsInput = queryByTestId('ipfs-input'); const ipfsEvent = { target: { diff --git a/ui/pages/onboarding-flow/privacy-settings/setting.js b/ui/pages/onboarding-flow/privacy-settings/setting.js index 31ee059d1126..5811707603c0 100644 --- a/ui/pages/onboarding-flow/privacy-settings/setting.js +++ b/ui/pages/onboarding-flow/privacy-settings/setting.js @@ -7,6 +7,7 @@ import { TextVariant, AlignItems, Display, + TextColor, } from '../../../helpers/constants/design-system'; import { useI18nContext } from '../../../hooks/useI18nContext'; @@ -25,7 +26,7 @@ export const Setting = ({
{title} - + {description}
diff --git a/ui/pages/settings/security-tab/__snapshots__/security-tab.test.js.snap b/ui/pages/settings/security-tab/__snapshots__/security-tab.test.js.snap index 343a7f05ecb4..dcec71767fe6 100644 --- a/ui/pages/settings/security-tab/__snapshots__/security-tab.test.js.snap +++ b/ui/pages/settings/security-tab/__snapshots__/security-tab.test.js.snap @@ -551,7 +551,7 @@ exports[`Security Tab should match snapshot 1`] = ` class="mm-box mm-incoming-transaction-toggle" >

Show incoming transactions

From 1bd1fa480e781dc3b493f6305f21681f1051be09 Mon Sep 17 00:00:00 2001 From: Pedro Figueiredo Date: Thu, 10 Oct 2024 17:22:33 +0100 Subject: [PATCH 4/4] feat: Token send heading component (#27562) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/27562?quickstart=1) ## **Related issues** Fixes: https://github.com/MetaMask/MetaMask-planning/issues/3219 ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** ### **Before** ### **After** #### Token with image Screenshot 2024-10-01 at 14 48 07 #### Token without image but with symbol Screenshot 2024-10-01 at 14 50 23 #### Token without image and symbol Screenshot 2024-10-01 at 15 12 21 ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- .../advanced-details-button.test.tsx.snap | 20 +++ .../header/__snapshots__/header.test.tsx.snap | 4 +- .../header/advanced-details-button.test.tsx | 20 +++ .../header/advanced-details-button.tsx | 50 ++++++++ .../components/confirm/header/header-info.tsx | 41 +----- .../header/wallet-initiated-header.test.tsx | 2 +- .../header/wallet-initiated-header.tsx | 39 +----- .../info/hooks/use-token-image.test.ts | 96 ++++++++++++++ .../confirm/info/hooks/use-token-image.ts | 20 +++ .../info/hooks/use-token-values.test.ts | 120 ++++++++++++++++++ .../confirm/info/hooks/use-token-values.ts | 77 +++++++++++ .../confirm/info/shared/selected-token.ts | 7 + .../__snapshots__/send-heading.test.tsx.snap | 20 +++ .../send-heading/send-heading.stories.tsx | 29 +++++ .../shared/send-heading/send-heading.test.tsx | 21 +++ .../info/shared/send-heading/send-heading.tsx | 84 ++++++++++++ .../token-transfer.test.tsx.snap | 19 ++- .../info/token-transfer/token-transfer.tsx | 5 +- ui/selectors/selectors.js | 19 +++ 19 files changed, 616 insertions(+), 77 deletions(-) create mode 100644 ui/pages/confirmations/components/confirm/header/__snapshots__/advanced-details-button.test.tsx.snap create mode 100644 ui/pages/confirmations/components/confirm/header/advanced-details-button.test.tsx create mode 100644 ui/pages/confirmations/components/confirm/header/advanced-details-button.tsx create mode 100644 ui/pages/confirmations/components/confirm/info/hooks/use-token-image.test.ts create mode 100644 ui/pages/confirmations/components/confirm/info/hooks/use-token-image.ts create mode 100644 ui/pages/confirmations/components/confirm/info/hooks/use-token-values.test.ts create mode 100644 ui/pages/confirmations/components/confirm/info/hooks/use-token-values.ts create mode 100644 ui/pages/confirmations/components/confirm/info/shared/selected-token.ts create mode 100644 ui/pages/confirmations/components/confirm/info/shared/send-heading/__snapshots__/send-heading.test.tsx.snap create mode 100644 ui/pages/confirmations/components/confirm/info/shared/send-heading/send-heading.stories.tsx create mode 100644 ui/pages/confirmations/components/confirm/info/shared/send-heading/send-heading.test.tsx create mode 100644 ui/pages/confirmations/components/confirm/info/shared/send-heading/send-heading.tsx diff --git a/ui/pages/confirmations/components/confirm/header/__snapshots__/advanced-details-button.test.tsx.snap b/ui/pages/confirmations/components/confirm/header/__snapshots__/advanced-details-button.test.tsx.snap new file mode 100644 index 000000000000..66cc3a5a7da7 --- /dev/null +++ b/ui/pages/confirmations/components/confirm/header/__snapshots__/advanced-details-button.test.tsx.snap @@ -0,0 +1,20 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[` should match snapshot 1`] = ` +
+
+ +
+
+`; diff --git a/ui/pages/confirmations/components/confirm/header/__snapshots__/header.test.tsx.snap b/ui/pages/confirmations/components/confirm/header/__snapshots__/header.test.tsx.snap index 1af0810d285f..4346963ead15 100644 --- a/ui/pages/confirmations/components/confirm/header/__snapshots__/header.test.tsx.snap +++ b/ui/pages/confirmations/components/confirm/header/__snapshots__/header.test.tsx.snap @@ -219,7 +219,7 @@ exports[`Header should match snapshot with token transfer confirmation initiated