diff --git a/.circleci/config.yml b/.circleci/config.yml index 83ccb67ee..1a62e1cf7 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -52,6 +52,9 @@ workflows: - test-lint-lockfile: requires: - prep-deps + - test-lint-changelog: + requires: + - prep-deps - test-e2e-chrome: requires: - prep-build-test @@ -83,6 +86,7 @@ workflows: - test-lint - test-lint-shellcheck - test-lint-lockfile + - test-lint-changelog - test-unit - test-unit-global - validate-source-maps @@ -282,6 +286,33 @@ jobs: name: lockfile-lint command: yarn lint:lockfile + test-lint-changelog: + executor: node-browsers + steps: + - checkout + - attach_workspace: + at: . + - when: + condition: + not: + matches: + pattern: /^Version-v(\d+)[.](\d+)[.](\d+)$/ + value: << pipeline.git.branch >> + steps: + - run: + name: Validate changelog + command: yarn auto-changelog validate + - when: + condition: + matches: + pattern: /^Version-v(\d+)[.](\d+)[.](\d+)$/ + value: << pipeline.git.branch >> + steps: + - run: + name: Validate release candidate changelog + command: yarn auto-changelog validate --rc + + test-deps: executor: node-browsers steps: @@ -485,7 +516,7 @@ jobs: steps: - add_ssh_keys: fingerprints: - - "5e:a3:2d:35:b6:25:b5:87:b1:41:11:0d:77:50:96:73" + - "3d:49:29:f4:b2:e8:ea:af:d1:32:eb:2a:fc:15:85:d8" - checkout - attach_workspace: at: . diff --git a/.circleci/scripts/release-bump-manifest-version.sh b/.circleci/scripts/release-bump-manifest-version.sh index 776a33a63..e00382504 100755 --- a/.circleci/scripts/release-bump-manifest-version.sh +++ b/.circleci/scripts/release-bump-manifest-version.sh @@ -19,9 +19,7 @@ fi printf '%s\n' 'Updating the manifest version if needed' version="${CIRCLE_BRANCH/Version-v/}" -updated_manifest="$(jq ".version = \"$version\"" app/manifest/_base.json)" -printf '%s\n' "$updated_manifest" > app/manifest/_base.json -yarn prettier --write app/manifest/_base.json +yarn version --no-git-tag-version --new-version "${version}" if [[ -z $(git status --porcelain) ]] then diff --git a/.circleci/scripts/release-commit-version-bump.sh b/.circleci/scripts/release-commit-version-bump.sh index 6ceb67fb9..554350646 100755 --- a/.circleci/scripts/release-commit-version-bump.sh +++ b/.circleci/scripts/release-commit-version-bump.sh @@ -16,9 +16,19 @@ then exit 1 fi +if [[ -z "${GITHUB_TOKEN:-}" ]] +then + printf '%s\n' 'GITHUB_TOKEN environment variable must be set' + exit 1 +elif [[ -z "${GITHUB_TOKEN_USER:-}" ]] +then + printf '%s\n' 'GITHUB_TOKEN_USER environment variable must be set' + exit 1 +fi + printf '%s\n' 'Commit the manifest version and changelog if the manifest has changed' -if git diff --quiet app/manifest/_base.json; +if git diff --quiet package.json; then printf '%s\n' 'No manifest changes to commit' exit 0 @@ -28,7 +38,7 @@ git \ -c user.name='MetaMask Bot' \ -c user.email='metamaskbot@users.noreply.github.com' \ commit --message "${CIRCLE_BRANCH/-/ }" \ - CHANGELOG.md app/manifest/_base.json + CHANGELOG.md package.json repo_slug="$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME" git push "https://$GITHUB_TOKEN_USER:$GITHUB_TOKEN@github.com/$repo_slug" "$CIRCLE_BRANCH" diff --git a/.circleci/scripts/release-create-release-pr.sh b/.circleci/scripts/release-create-release-pr.sh index a1d05c777..9aa5d39bd 100755 --- a/.circleci/scripts/release-create-release-pr.sh +++ b/.circleci/scripts/release-create-release-pr.sh @@ -16,12 +16,6 @@ then exit 1 fi -if [[ -z "${GITHUB_TOKEN:-}" ]] -then - printf '%s\n' 'GITHUB_TOKEN environment variable must be set' - exit 1 -fi - function install_github_cli () { printf '%s\n' 'Installing hub CLI' diff --git a/.eslintrc.js b/.eslintrc.js index 8b9f27b12..fa67adaaf 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -108,7 +108,7 @@ module.exports = { }, { files: ['**/*.test.js'], - excludedFiles: ['ui/**/*.test.js', 'ui/app/__mocks__/*.js'], + excludedFiles: ['ui/**/*.test.js', 'ui/__mocks__/*.js'], extends: ['@metamask/eslint-config-mocha'], rules: { 'mocha/no-setup-in-describe': 'off', @@ -125,7 +125,7 @@ module.exports = { }, }, { - files: ['ui/**/*.test.js', 'ui/app/__mocks__/*.js'], + files: ['ui/**/*.test.js', 'ui/__mocks__/*.js'], extends: ['@metamask/eslint-config-jest'], rules: { 'jest/no-restricted-matchers': 'off', diff --git a/.gitignore b/.gitignore index 6333a39a1..21c882a97 100644 --- a/.gitignore +++ b/.gitignore @@ -39,7 +39,7 @@ test-builds build-artifacts #ignore css output and sourcemaps -ui/app/css/output/ +ui/css/output/ notes.txt diff --git a/.storybook/i18n.js b/.storybook/i18n.js index 9eadca331..314ea544e 100644 --- a/.storybook/i18n.js +++ b/.storybook/i18n.js @@ -1,12 +1,12 @@ import React, { Component, createContext, useMemo } from 'react'; import PropTypes from 'prop-types'; -import { getMessage } from '../ui/app/helpers/utils/i18n-helper'; -import { I18nContext } from '../ui/app/contexts/i18n'; +import { getMessage } from '../ui/helpers/utils/i18n-helper'; +import { I18nContext } from '../ui/contexts/i18n'; -export { I18nContext } +export { I18nContext }; export const I18nProvider = (props) => { - const { currentLocale, current, en } = props + const { currentLocale, current, en } = props; const t = useMemo(() => { return (key, ...args) => diff --git a/.storybook/main.js b/.storybook/main.js index 2e708e264..310bce17d 100644 --- a/.storybook/main.js +++ b/.storybook/main.js @@ -1,9 +1,9 @@ -const path = require('path') +const path = require('path'); -const CopyWebpackPlugin = require('copy-webpack-plugin') +const CopyWebpackPlugin = require('copy-webpack-plugin'); module.exports = { - stories: ['../ui/app/**/*.stories.js'], + stories: ['../ui/**/*.stories.js'], addons: [ '@storybook/addon-knobs', '@storybook/addon-actions', @@ -12,7 +12,7 @@ module.exports = { './i18n-party-addon/register.js', ], webpackFinal: async (config) => { - config.module.strictExportPresence = true + config.module.strictExportPresence = true; config.module.rules.push({ test: /\.scss$/, loaders: [ @@ -31,12 +31,12 @@ module.exports = { sourceMap: true, implementation: require('sass'), sassOptions: { - includePaths: ['ui/app/css/'], + includePaths: ['ui/css/'], }, }, }, ], - }) + }); config.plugins.push( new CopyWebpackPlugin({ patterns: [ @@ -51,7 +51,7 @@ module.exports = { }, ], }), - ) - return config + ); + return config; }, -} +}; diff --git a/.storybook/preview.js b/.storybook/preview.js index 112c8f16e..24d195c4e 100644 --- a/.storybook/preview.js +++ b/.storybook/preview.js @@ -3,12 +3,12 @@ import { addDecorator, addParameters } from '@storybook/react'; import { useGlobals } from '@storybook/api'; import { withKnobs } from '@storybook/addon-knobs'; import { Provider } from 'react-redux'; -import configureStore from '../ui/app/store/store'; -import '../ui/app/css/index.scss'; +import configureStore from '../ui/store/store'; +import '../ui/css/index.scss'; import localeList from '../app/_locales/index.json'; import * as allLocales from './locales'; import { I18nProvider, LegacyI18nProvider } from './i18n'; -import testData from './test-data.js' +import testData from './test-data.js'; addParameters({ backgrounds: { @@ -41,7 +41,7 @@ const styles = { alignItems: 'center', }; -const store = configureStore(testData) +const store = configureStore(testData); const metamaskDecorator = (story, context) => { const currentLocale = context.globals.locale; diff --git a/CHANGELOG.md b/CHANGELOG.md index 043a560a8..a7d233871 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#10932](https://github.com/MetaMask/metamask-extension/pull/10932): Add view account details menu item to token page menu - [#10895](https://github.com/MetaMask/metamask-extension/pull/10895): Adding new links to contact MetaMask support - [#10595](https://github.com/MetaMask/metamask-extension/pull/10595): Adding option to set Custom Nonce to Confirm Approve Page +- [#10717](https://github.com/MetaMask/metamask-extension/pull/10717): Adding recovery phrase video to onboarding process - [#10616](https://github.com/MetaMask/metamask-extension/pull/10616): add trezor HD path for ledger wallets ### Changed @@ -2228,6 +2229,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 [Unreleased]: https://github.com/MetaMask/metamask-extension/compare/v9.5.1...HEAD [9.5.1]: https://github.com/MetaMask/metamask-extension/compare/v9.5.0...v9.5.1 +[Unreleased]: https://github.com/MetaMask/metamask-extension/compare/v9.5.0...HEAD [9.5.0]: https://github.com/MetaMask/metamask-extension/compare/v9.4.0...v9.5.0 [9.4.0]: https://github.com/MetaMask/metamask-extension/compare/v9.3.0...v9.4.0 [9.3.0]: https://github.com/MetaMask/metamask-extension/compare/v9.2.1...v9.3.0 diff --git a/app/_locales/am/messages.json b/app/_locales/am/messages.json index a2845d6b0..91c2eb214 100644 --- a/app/_locales/am/messages.json +++ b/app/_locales/am/messages.json @@ -308,9 +308,6 @@ "done": { "message": "ተጠናቅቋል" }, - "dontHaveAHardwareWallet": { - "message": "የሃርድዌር ቋት የለዎትም?" - }, "downloadGoogleChrome": { "message": "Google Chrome አውርድ" }, @@ -443,9 +440,6 @@ "message": "Ether ከቧንቧ በ$1ያግኙ", "description": "Displays network name for Ether faucet" }, - "getHelp": { - "message": "እገዛ ያግኙ።" - }, "getStarted": { "message": "አስጀማሪ መመሪያ" }, @@ -467,9 +461,6 @@ "hardwareWalletsMsg": { "message": "ከ MetaMask ጋር ሊጠቀሙበት የሚፈልጉትን የሃርድዌር ቋት ይምረጡ" }, - "havingTroubleConnecting": { - "message": "ግንኙነት መፍጠር ላይ ተቸግረዋል?" - }, "here": { "message": "እዚህ", "description": "as in -click here- for more information (goes with troubleTokenBalances)" @@ -698,9 +689,6 @@ "optionalCurrencySymbol": { "message": "ምልክት (አማራጭ)" }, - "orderOneHere": { - "message": "ትሬዞር ወይም ሌጀር በማዘዝ ገንዘብዎን በቀዝቃዛ ማስቀመጫ ውስጥ ያቆዩ" - }, "origin": { "message": "መነሻ" }, @@ -760,9 +748,6 @@ "readdToken": { "message": "በመለያ አማራጮችዎ ምናሌ ውስጥ ወደ “ተለዋጭ ስም አክል” በመግባት ለወደፊቱ ይህን ተለዋጭ ስም መልሰው ማከል ይችላሉ።" }, - "readyToConnect": { - "message": "ለመገናኘት ዝግጁ ነዎት?" - }, "recents": { "message": "የቅርብ ጊዜያት" }, @@ -985,24 +970,6 @@ "stateLogsDescription": { "message": "ስቴት መዛግብት ይፋዊ የመለያ አድራሻዎትንና የተላኩ ግብይቶችን ይይዛሉ።" }, - "step1HardwareWallet": { - "message": "1. ከሃርድዌር ቋት ጋር ይገናኙ" - }, - "step1HardwareWalletMsg": { - "message": "የሃርድዌር ቋትዎን በቀጥታ ከኮምፒዩተርዎ ጋር ያገናኙ።" - }, - "step2HardwareWallet": { - "message": "2. መለያ ምረጥ" - }, - "step2HardwareWalletMsg": { - "message": "ለማየት የሚፈልጉትን መለያ ይምረጡ። በአንድ ጊዜ መምረጥ የሚችሉት አንድ ብቻ ነው።" - }, - "step3HardwareWallet": { - "message": "3. dApps እና ሌሎችን መጠቀም ይጀምሩ!" - }, - "step3HardwareWalletMsg": { - "message": "የሐርድዌር መለያዎን ከየትኛውም የ Ethereum መለያ ጋር በሚጠቀሙት መንገድ ይጠቀሙ። ወደ dApps በመለያ ይግቡ፣ Eth ይላኩ፣ የ ERC20 ተለዋጭ ስሞችና እንደ CryptoKitties ያሉ የማይለወጡ ተለዋጭ ስሞችን ይግዙና ያከማቹ።" - }, "storePhrase": { "message": "ይህን ሐረግ እንደ 1Password ባለ የይለፍ ቃል አስተዳዳሪ ውስጥ ያስቀምጡ።" }, diff --git a/app/_locales/ar/messages.json b/app/_locales/ar/messages.json index 680f6ab9f..ffe065f16 100644 --- a/app/_locales/ar/messages.json +++ b/app/_locales/ar/messages.json @@ -308,9 +308,6 @@ "done": { "message": "تم" }, - "dontHaveAHardwareWallet": { - "message": "أليس لديك محفظة أجهزة؟" - }, "downloadGoogleChrome": { "message": "تنزيل جوجل كروم" }, @@ -439,9 +436,6 @@ "message": "احصل على الأثير من صنبور مقابل $1", "description": "Displays network name for Ether faucet" }, - "getHelp": { - "message": "احصل على الدعم." - }, "getStarted": { "message": "البدء" }, @@ -463,9 +457,6 @@ "hardwareWalletsMsg": { "message": "حدد محفظة أجهزة ترغب في استخدامها مع MetaMask" }, - "havingTroubleConnecting": { - "message": "هل تواجه مشكلة في الاتصال؟" - }, "here": { "message": "هنا", "description": "as in -click here- for more information (goes with troubleTokenBalances)" @@ -694,9 +685,6 @@ "optionalCurrencySymbol": { "message": "الرمز (اختياري)" }, - "orderOneHere": { - "message": "اطلب Trezor أو Ledger وحافظ على أموالك في مخزن حصين" - }, "origin": { "message": "الأصل" }, @@ -756,9 +744,6 @@ "readdToken": { "message": "يمكنك إضافة هذه العملة الرمزية مرة أخرى في المستقبل من خلال الانتقال إلى \"إضافة عملة رمزية\" في قائمة خيارات الحسابات الخاصة بك." }, - "readyToConnect": { - "message": "هل أنت جاهز للاتصال؟" - }, "recents": { "message": "الحديث" }, @@ -981,24 +966,6 @@ "stateLogsDescription": { "message": "تحتوي سجلات الحالة على عناوين حسابك العامة والمعاملات المرسلة." }, - "step1HardwareWallet": { - "message": "1. قم بتوصيل محفظة Hardware Wallet" - }, - "step1HardwareWalletMsg": { - "message": "قم بتوصيل محفظة الأجهزة الخاصة بك مباشرة إلى جهاز الكمبيوتر الخاص بك." - }, - "step2HardwareWallet": { - "message": "2. حدد حساباً" - }, - "step2HardwareWalletMsg": { - "message": "حدد الحساب الذي تريد عرضه. يمكنك اختيار حساب واحد فقط في المرة الواحدة." - }, - "step3HardwareWallet": { - "message": "3. ابدأ في استخدام dApps وأكثر!" - }, - "step3HardwareWalletMsg": { - "message": "استخدم حساب الجهاز الخاص بك كما تفعل مع أي حساب Ethereum. قم بتسجيل الدخول إلى dApps ، إرسال Eth ، قم بشراء وتخزين عملات ERC20 الرمزية والعملات الرمزية الغير قابلة للاستبدال مثل CryptoKitties." - }, "storePhrase": { "message": "احتفظ بهذه الجملة في مدير كلمات مرور مثل 1Password." }, diff --git a/app/_locales/bg/messages.json b/app/_locales/bg/messages.json index 6878128f6..dde63701f 100644 --- a/app/_locales/bg/messages.json +++ b/app/_locales/bg/messages.json @@ -308,9 +308,6 @@ "done": { "message": "Готово" }, - "dontHaveAHardwareWallet": { - "message": "Нямате хардуерен портфейл?" - }, "downloadGoogleChrome": { "message": "Изтеглете Google Chrome" }, @@ -439,9 +436,6 @@ "message": "Вземете Ether от фосет за $1", "description": "Displays network name for Ether faucet" }, - "getHelp": { - "message": "Получете помощ." - }, "getStarted": { "message": "Първи стъпки" }, @@ -463,9 +457,6 @@ "hardwareWalletsMsg": { "message": "Изберете хардуерен портфейл, който искате да използвате с MetaMask" }, - "havingTroubleConnecting": { - "message": "Имате проблеми със свързването?" - }, "here": { "message": "тук", "description": "as in -click here- for more information (goes with troubleTokenBalances)" @@ -697,9 +688,6 @@ "optionalCurrencySymbol": { "message": "Символ (по избор)" }, - "orderOneHere": { - "message": "Поръчайте Trezor или Ledger и запазете средствата си " - }, "origin": { "message": "Произход" }, @@ -759,9 +747,6 @@ "readdToken": { "message": "Можете да добавите този жетон в бъдеще, като отидете на „Добавяне на жетон“ в менюто с опции на акаунти." }, - "readyToConnect": { - "message": "Готови ли сте да се свържете? " - }, "recents": { "message": "Скорошни" }, @@ -984,24 +969,6 @@ "stateLogsDescription": { "message": "Държавните дневници съдържат адресите на публичните ви акаунти и изпратените транзакции." }, - "step1HardwareWallet": { - "message": "1. Свържете хардуерния портфейл" - }, - "step1HardwareWalletMsg": { - "message": "Свържете хардуерния си портфейл директно към компютъра." - }, - "step2HardwareWallet": { - "message": "2. Изберете акаунт" - }, - "step2HardwareWalletMsg": { - "message": "Изберете акаунта, който искате да видите. В даден момент можете да изберете само един." - }, - "step3HardwareWallet": { - "message": "3. Започнете да използвате dApps и други!" - }, - "step3HardwareWalletMsg": { - "message": "Използвайте хардуерния си акаунт, както бихте правили с всеки акаунт в Ethereum. Влезте в dApps, изпратете Eth, купете и съхранявайте жетони ERC20 и незаменими жетони като CryptoKitties." - }, "storePhrase": { "message": "Съхранявайте тази фраза в мениджър на пароли като 1Password." }, diff --git a/app/_locales/bn/messages.json b/app/_locales/bn/messages.json index ee0272bfe..d2c08ab7b 100644 --- a/app/_locales/bn/messages.json +++ b/app/_locales/bn/messages.json @@ -308,9 +308,6 @@ "done": { "message": "সম্পন্ন " }, - "dontHaveAHardwareWallet": { - "message": "একটি হার্ডওয়্যার ওয়ালেট নেই?" - }, "downloadGoogleChrome": { "message": "Google Chrome ডাউনলোড করুন" }, @@ -443,9 +440,6 @@ "message": "$1 এর জন্য একটি ফসেট থেকে ইথার পান", "description": "Displays network name for Ether faucet" }, - "getHelp": { - "message": "সহায়তা পান।" - }, "getStarted": { "message": "শুরু করুন" }, @@ -467,9 +461,6 @@ "hardwareWalletsMsg": { "message": "আপনি MetaMask এর সাথে ব্যবহার করতে চান এমন একটি হার্ডওয়্যার ওয়ালেট নির্বাচন করুন" }, - "havingTroubleConnecting": { - "message": "সংযোগ করতে সমস্যা হচ্ছে?" - }, "here": { "message": "এখানে", "description": "as in -click here- for more information (goes with troubleTokenBalances)" @@ -701,9 +692,6 @@ "optionalCurrencySymbol": { "message": "প্রতীক (ঐচ্ছিক)" }, - "orderOneHere": { - "message": "একটি Trezor বা লেজার অর্ডার করুন এবং আপনার তহবিলগুলি হীম ঘরে রাখুন" - }, "origin": { "message": "উৎস" }, @@ -763,9 +751,6 @@ "readdToken": { "message": "আপনি আপনার অ্যাকাউন্টস বিকল্পের মেনুতে \"টোকেনগুলি যোগ করুন\" এ গিয়ে ভবিষ্যতে আবার এই টোকেনটি যোগ করতে পারবেন। " }, - "readyToConnect": { - "message": "সংযোগ করার জন্য প্রস্তুত?" - }, "recents": { "message": "সাম্প্রতিকগুলি" }, @@ -988,24 +973,6 @@ "stateLogsDescription": { "message": "স্টেট লগগুলিতে আপনার পাবলিক অ্যাকাউন্টের ঠিকানা এবং প্রেরণ করার লেনদেনগুলি আছে।" }, - "step1HardwareWallet": { - "message": "1. হার্ডওয়্যার ওয়ালেট সংযুক্ত করুন" - }, - "step1HardwareWalletMsg": { - "message": "আপনার হার্ডওয়্যার ওয়ালেট সরাসরি আপনার কম্পিউটারের সাথে সংযুক্ত করুন।" - }, - "step2HardwareWallet": { - "message": "2. একটি অ্যাকাউন্ট নির্বাচন করুন" - }, - "step2HardwareWalletMsg": { - "message": "আপনি যে অ্যাকাউন্টটি দেখতে চান সেটি নির্বাচন করুন। আপনি একই সময়ে শুধুমাত্র একটিই বেছে নিতে পারবেন। " - }, - "step3HardwareWallet": { - "message": "3. dApps এবং আরও ব্যবহার করে শুরু করুন!" - }, - "step3HardwareWalletMsg": { - "message": "আপনি কোনো Ethereum অ্যাকাউন্ট যেমন ব্যবহার করেন সেইভাবে আপনার হার্ডওয়্যার অ্যাকাউন্ট ব্যবহার করুন। dApps এ লগইন করুন, Eth পাঠান, ERC20 টোকেন এবং CryptoKitties এর মতো পরস্পর বিনিময়যোগ্য নয় এমন টোকেনগুলি ক্রয় ও সংরক্ষণ করুন। " - }, "storePhrase": { "message": "এই বাক্যাংশটি 1Password এর মতো একটি পাসওয়ার্ড পরিচালকে সংরক্ষণ করুন। " }, diff --git a/app/_locales/ca/messages.json b/app/_locales/ca/messages.json index 6d0df200a..ab0e91b84 100644 --- a/app/_locales/ca/messages.json +++ b/app/_locales/ca/messages.json @@ -305,9 +305,6 @@ "done": { "message": "Fet" }, - "dontHaveAHardwareWallet": { - "message": "No tens una cartera de hardware?" - }, "downloadGoogleChrome": { "message": "Descarrega Google Chrome" }, @@ -433,9 +430,6 @@ "message": "Aconsegueix Ether d'una aixeta per $1", "description": "Displays network name for Ether faucet" }, - "getHelp": { - "message": "Aconsegueix ajuda." - }, "getStarted": { "message": "Comença" }, @@ -454,9 +448,6 @@ "hardwareWalletsMsg": { "message": "Selecciona una cartera de hardware que t'agradaria utilizar amb MetaMask" }, - "havingTroubleConnecting": { - "message": "Problemes per connectar?" - }, "here": { "message": "aquí", "description": "as in -click here- for more information (goes with troubleTokenBalances)" @@ -685,9 +676,6 @@ "optionalCurrencySymbol": { "message": "Símbol (opcional)" }, - "orderOneHere": { - "message": "Demana un Trezor o un Ledger i congela les teves inversions" - }, "origin": { "message": "Origen" }, @@ -744,9 +732,6 @@ "readdToken": { "message": "Pots tornar a afegir aquesta fitxa en el futur anant a \"Afegir fitxa\" al menu d'opcions dels teus comptes." }, - "readyToConnect": { - "message": "Estàs llest per a connectar?" - }, "recipientAddress": { "message": "Adreça del destinatari" }, @@ -966,24 +951,6 @@ "stateLogsDescription": { "message": "Els registres d'estat contenen les teves adreces de compte públiques i les transaccions enviades." }, - "step1HardwareWallet": { - "message": "1. Connectar Moneder Hardware" - }, - "step1HardwareWalletMsg": { - "message": "Connecta la teva cartera de hardware directament al teu ordinador." - }, - "step2HardwareWallet": { - "message": "2. Selecciona un Compte" - }, - "step2HardwareWalletMsg": { - "message": "Selecciona el compte que vols veure. Només pots seleccionar 1 cada cop." - }, - "step3HardwareWallet": { - "message": "3. Comença a utilitzar dApps i altres!" - }, - "step3HardwareWalletMsg": { - "message": "Fes servir el teu compte de hardware com ho faries amb qualsevol compte Ethereum. Inicia sessió a DApps, envia Eth, compra i emmagatzema fitxes ERC20 i fitxes No Fungibles com CryptoKitties." - }, "storePhrase": { "message": "Guarda aquesta frase a un gestor de contrasenyes com Contrasenya 1" }, diff --git a/app/_locales/da/messages.json b/app/_locales/da/messages.json index a9ce79ad1..24fd9a480 100644 --- a/app/_locales/da/messages.json +++ b/app/_locales/da/messages.json @@ -308,9 +308,6 @@ "done": { "message": "Færdig" }, - "dontHaveAHardwareWallet": { - "message": "Har du ikke en hardware-pung?" - }, "downloadGoogleChrome": { "message": "Hent Google Chrome" }, @@ -439,9 +436,6 @@ "message": "Hent Ether fra en hane til $1", "description": "Displays network name for Ether faucet" }, - "getHelp": { - "message": "Få hjælp" - }, "getStarted": { "message": "Kom godt i gang" }, @@ -460,9 +454,6 @@ "hardwareWalletsMsg": { "message": "Vælg en hardware-pung du vil bruge med MetaMask" }, - "havingTroubleConnecting": { - "message": "Har du problemer med at oprette forbindelse?" - }, "here": { "message": "her", "description": "as in -click here- for more information (goes with troubleTokenBalances)" @@ -685,9 +676,6 @@ "optionalCurrencySymbol": { "message": "Symbol (valgfrit)" }, - "orderOneHere": { - "message": "Bestil en Trezor eller Ledger og frys dine midler ned" - }, "parameters": { "message": "Parametre" }, @@ -744,9 +732,6 @@ "readdToken": { "message": "Du kan tilføje denne token i fremtiden, ved at gå til \"Tilføj token\" under dine valgmenuen for dine konti." }, - "readyToConnect": { - "message": "Klar til at oprette forbindelse?" - }, "recents": { "message": "Seneste" }, @@ -966,24 +951,6 @@ "stateLogsDescription": { "message": "Status-logføringer indeholder dine offentlige kontoadresser og afsendte transaktioner." }, - "step1HardwareWallet": { - "message": "1. Tilslut hardware-tegnebog" - }, - "step1HardwareWalletMsg": { - "message": "Forbind din hardware-tegnebog direkte med din computer." - }, - "step2HardwareWallet": { - "message": "2. Vælg en konto" - }, - "step2HardwareWalletMsg": { - "message": "Vælg den konto du ønsker at se. Du kan kun vælge én ad gangen." - }, - "step3HardwareWallet": { - "message": "3. Begynd at bruge dApps og mere!" - }, - "step3HardwareWalletMsg": { - "message": "Brug din hardwarekonto som du ville gøre med enhver Ethereum-konto. Log ind på dApps, send Eth, køb og opbevar ERC20-tokens og ikke-ombyttelige tokens som CryptoKitties." - }, "storePhrase": { "message": "Gem denne sætning i en adgangskodeadministrator som 1Password." }, diff --git a/app/_locales/de/messages.json b/app/_locales/de/messages.json index 6ec0ae92f..f04fba67c 100644 --- a/app/_locales/de/messages.json +++ b/app/_locales/de/messages.json @@ -296,9 +296,6 @@ "done": { "message": "Fertig" }, - "dontHaveAHardwareWallet": { - "message": "Sie haben kein Hardware-Wallet?" - }, "downloadGoogleChrome": { "message": "Google Chrome herunterladen" }, @@ -431,9 +428,6 @@ "message": "Ether für $1 vom Faucet holen", "description": "Displays network name for Ether faucet" }, - "getHelp": { - "message": "Erhalten Sie Hilfe." - }, "getStarted": { "message": "Erste Schritte" }, @@ -455,9 +449,6 @@ "hardwareWalletsMsg": { "message": "Wählen Sie ein Hardware-Wallet aus, das Sie mit MetaMask verwenden möchten" }, - "havingTroubleConnecting": { - "message": "Verbindungsprobleme?" - }, "here": { "message": "hier", "description": "as in -click here- for more information (goes with troubleTokenBalances)" @@ -674,9 +665,6 @@ "optionalBlockExplorerUrl": { "message": "Block-Explorer-URL (optional)" }, - "orderOneHere": { - "message": "Bestellen Sie ein Trezor oder Ledger und legen Sie Ihr Geld auf Eis" - }, "origin": { "message": "Ursprung" }, @@ -732,9 +720,6 @@ "readdToken": { "message": "Du kannst diesen Token immer erneut hinzufügen, indem du in den Menüpunkt \"Token hinzufügen\" in den Einstellungen deines Accounts gehst." }, - "readyToConnect": { - "message": "Bereit für die Verbindung?" - }, "recents": { "message": "Letzte" }, @@ -957,24 +942,6 @@ "stateLogsDescription": { "message": "Statelogs zeigen die Public Adresse und die gesendeten Transaktionen deines Accounts." }, - "step1HardwareWallet": { - "message": "1. Hardware-Wallet verknüpfen" - }, - "step1HardwareWalletMsg": { - "message": "Verknüpfen Sie Ihr Hardware-Wallet direkt mit Ihrem Computer." - }, - "step2HardwareWallet": { - "message": "2. Ein Konto auswählen" - }, - "step2HardwareWalletMsg": { - "message": "Wählen Sie das Konto aus, das Sie anzeigen wollen. Sie können nur eines zur Zeit wählen." - }, - "step3HardwareWallet": { - "message": "3. Erste Schritte mit dApps und mehr!" - }, - "step3HardwareWalletMsg": { - "message": "Verwenden Sie Ihr Hardware-Konto so wie jedes Ethereum-Konto. Loggen Sie sich bei dApps ein, senden Sie Eth, kaufen und speichern Sie ERC20-Token und Nicht-Fungible-Token wie CryptoKitties." - }, "storePhrase": { "message": "Speichern Sie diesen Schlüssel in einem Passwortmanager wie 1Password." }, diff --git a/app/_locales/el/messages.json b/app/_locales/el/messages.json index 2add7cd8b..d7902743a 100644 --- a/app/_locales/el/messages.json +++ b/app/_locales/el/messages.json @@ -305,9 +305,6 @@ "done": { "message": "Τέλος" }, - "dontHaveAHardwareWallet": { - "message": "Δεν έχετε πορτοφόλι υλικού;" - }, "downloadGoogleChrome": { "message": "Κατεβάστε το Google Chrome" }, @@ -440,9 +437,6 @@ "message": "Πάρτε Ether από μια πηγή για το $1", "description": "Displays network name for Ether faucet" }, - "getHelp": { - "message": "Πάρτε Βοήθεια." - }, "getStarted": { "message": "Έναρξη" }, @@ -464,9 +458,6 @@ "hardwareWalletsMsg": { "message": "Επιλέξτε ένα πορτοφόλι εξοπλισμού το οποίο θέλετε να χρησιμοποιήσετε με το MetaMask" }, - "havingTroubleConnecting": { - "message": "Δυσκολεύεστε να συνδεθείτε;" - }, "here": { "message": "εδώ", "description": "as in -click here- for more information (goes with troubleTokenBalances)" @@ -698,9 +689,6 @@ "optionalCurrencySymbol": { "message": "Σύμβολο (προαιρετικό)" }, - "orderOneHere": { - "message": "Παραγγείλετε ένα Trezor ή Ledger και κρατήστε τα χρήματά σας σε παγωμένη αποθήκευση" - }, "origin": { "message": "Προέλευση" }, @@ -760,9 +748,6 @@ "readdToken": { "message": "Μπορείτε να προσθέσετε ξανά αυτό το διακριτικό στο μέλλον μεταβαίνοντας στο \"Πρόσθεση διακριτικού\" στο μενού επιλογών των λογαριασμών σας." }, - "readyToConnect": { - "message": "Έτοιμοι να Συνδεθείτε;" - }, "recents": { "message": "Πρόσφατα" }, @@ -985,24 +970,6 @@ "stateLogsDescription": { "message": "Τα αρχεία καταγραφής κατάστασης περιέχουν τις διευθύνσεις του δημόσιου λογαριασμού σας και τις συναλλαγές οι οποίες έχουν αποσταλεί." }, - "step1HardwareWallet": { - "message": "1. Συνδέστε το Πορτοφόλι Εξοπλισμού" - }, - "step1HardwareWalletMsg": { - "message": "Συνδέστε το πορτοφόλι υλικού απευθείας στον υπολογιστή σας." - }, - "step2HardwareWallet": { - "message": "2. Επιλέξτε ένα Λογαριασμό" - }, - "step2HardwareWalletMsg": { - "message": "Επιλέξτε τον λογαριασμό που θέλετε να δείτε. Μπορείτε να επιλέξετε έναν μόνο κάθε φορά." - }, - "step3HardwareWallet": { - "message": "3. Ξεκινήστε να χρησιμοποιείτε το dApps και άλλα!" - }, - "step3HardwareWalletMsg": { - "message": "Χρησιμοποιήστε τον λογαριασμό εξοπλισμού σας όπως θα κάνατε με οποιονδήποτε λογαριασμό του Ethereum. Συνδεθείτε στο dApps, στείλτε το Eth, αγοράστε και αποθηκεύστε ERC20 tokens και Non-Fungible tokens όπως το CryptoKitties." - }, "storePhrase": { "message": "Αποθηκεύστε αυτήν τη φράση σε έναν διαχειριστή κωδικών πρόσβασης όπως το 1Password." }, diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index be5a90306..310303049 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -556,12 +556,15 @@ "dismiss": { "message": "Dismiss" }, + "dismissReminderDescriptionField": { + "message": "Turn this on to dismiss the recovery phrase backup reminder message. We highly recommend that you back up your Secret Recovery Phrase to avoid loss of funds" + }, + "dismissReminderField": { + "message": "Dismiss recovery phrase backup reminder" + }, "done": { "message": "Done" }, - "dontHaveAHardwareWallet": { - "message": "Don’t have a hardware wallet?" - }, "dontShowThisAgain": { "message": "Don't show this again" }, @@ -600,7 +603,7 @@ "message": "Request encryption public key" }, "endOfFlowMessage1": { - "message": "You passed the test - keep your seedphrase safe, it's your responsibility!" + "message": "You passed the test - keep your Secret Recovery Phrase safe, it's your responsibility!" }, "endOfFlowMessage10": { "message": "All Done" @@ -615,17 +618,17 @@ "message": "Never share the phrase with anyone." }, "endOfFlowMessage5": { - "message": "Be careful of phishing! MetaMask will never spontaneously ask for your seed phrase." + "message": "Be careful of phishing! MetaMask will never spontaneously ask for your Secret Recovery Phrase." }, "endOfFlowMessage6": { - "message": "If you need to back up your seed phrase again, you can find it in Settings -> Security." + "message": "If you need to back up your Secret Recovery Phrase again, you can find it in Settings -> Security." }, "endOfFlowMessage7": { "message": "If you ever have questions or see something fishy, contact our support $1.", "description": "$1 is a clickable link with text defined by the 'here' key. The link will open to a form where users can file support tickets." }, "endOfFlowMessage8": { - "message": "MetaMask cannot recover your seedphrase." + "message": "MetaMask cannot recover your Secret Recovery Phrase." }, "endOfFlowMessage9": { "message": "Learn more." @@ -687,6 +690,9 @@ "estimatedProcessingTimes": { "message": "Estimated Processing Times" }, + "ethGasPriceFetchWarning": { + "message": "Backup gas price is provided as the main gas estimation service is unavailable right now." + }, "eth_accounts": { "message": "View the addresses of your permitted accounts (required)", "description": "The description for the `eth_accounts` permission" @@ -783,6 +789,9 @@ "gasPriceExtremelyLow": { "message": "Gas Price Extremely Low" }, + "gasPriceFetchFailed": { + "message": "Gas price estimation failed due to network error." + }, "gasPriceInfoTooltipContent": { "message": "Gas price specifies the amount of Ether you are willing to pay for each unit of gas." }, @@ -810,9 +819,6 @@ "message": "Get Ether from a faucet for the $1", "description": "Displays network name for Ether faucet" }, - "getHelp": { - "message": "Get Help." - }, "getStarted": { "message": "Get Started" }, @@ -832,14 +838,14 @@ "message": "(legacy)", "description": "Text representing the MEW path" }, + "hardwareWalletSupportLinkConversion": { + "message": "click here" + }, "hardwareWallets": { "message": "Connect a hardware wallet" }, "hardwareWalletsMsg": { - "message": "Select a hardware wallet you'd like to use with MetaMask" - }, - "havingTroubleConnecting": { - "message": "Having trouble connecting?" + "message": "Select a hardware wallet you'd like to use with MetaMask." }, "here": { "message": "here", @@ -872,13 +878,13 @@ "message": "Import Account" }, "importAccountLinkText": { - "message": "import using seed phrase" + "message": "import using Secret Recovery Phrase" }, "importAccountMsg": { - "message": " Imported accounts will not be associated with your originally created MetaMask account seedphrase. Learn more about imported accounts " + "message": " Imported accounts will not be associated with your originally created MetaMask account Secret Recovery Phrase. Learn more about imported accounts " }, "importAccountSeedPhrase": { - "message": "Import an account with seed phrase" + "message": "Import an account with Secret Recovery Phrase" }, "importAccountText": { "message": "or $1", @@ -888,7 +894,7 @@ "message": "Import wallet" }, "importYourExisting": { - "message": "Import your existing wallet using a seed phrase" + "message": "Import your existing wallet using a Secret Recovery Phrase" }, "imported": { "message": "Imported", @@ -958,7 +964,7 @@ "message": "Invalid RPC URL" }, "invalidSeedPhrase": { - "message": "Invalid seed phrase" + "message": "Invalid Secret Recovery Phrase" }, "ipfsGateway": { "message": "IPFS Gateway" @@ -988,6 +994,21 @@ "ledgerAccountRestriction": { "message": "You need to make use your last account before you can add a new one." }, + "ledgerLiveAdvancedSetting": { + "message": "Use Ledger Live" + }, + "ledgerLiveAdvancedSettingDescription": { + "message": "The new Ledger Live bridge allows you to more easily use your Ledger. Only available in Chrome." + }, + "ledgerLiveApp": { + "message": "Ledger Live App" + }, + "ledgerLocked": { + "message": "Cannot connect to Ledger device. Please make sure your device is unlocked and Ethereum app is opened." + }, + "ledgerTimeout": { + "message": "Ledger Live is taking too long to respond or connection timeout. Make sure Ledger Live app is opened and your device is unlocked." + }, "letsGoSetUp": { "message": "Yes, let’s get set up!" }, @@ -1194,7 +1215,7 @@ "message": "No address has been set for this name." }, "noAlreadyHaveSeed": { - "message": "No, I already have a seed phrase" + "message": "No, I already have a Secret Recovery Phrase" }, "noConversionRateAvailable": { "message": "No Conversion Rate Available" @@ -1295,9 +1316,6 @@ "optionalCurrencySymbol": { "message": "Currency Symbol (optional)" }, - "orderOneHere": { - "message": "Order a Trezor or Ledger and keep your funds in cold storage" - }, "origin": { "message": "Origin" }, @@ -1379,9 +1397,6 @@ "readdToken": { "message": "You can add this token back in the future by going to “Add token” in your accounts options menu." }, - "readyToConnect": { - "message": "Ready to Connect?" - }, "receive": { "message": "Receive" }, @@ -1419,7 +1434,7 @@ "message": "Remove account" }, "removeAccountDescription": { - "message": "This account will be removed from your wallet. Please make sure you have the original seed phrase or private key for this imported account before continuing. You can import or create accounts again from the account drop-down. " + "message": "This account will be removed from your wallet. Please make sure you have the original Secret Recovery Phrase or private key for this imported account before continuing. You can import or create accounts again from the account drop-down. " }, "requestsAwaitingAcknowledgement": { "message": "requests waiting to be acknowledged" @@ -1434,13 +1449,13 @@ "message": "Reset Account" }, "resetAccountDescription": { - "message": "Resetting your account will clear your transaction history. This will not change the balances in your accounts or require you to re-enter your seed phrase." + "message": "Resetting your account will clear your transaction history. This will not change the balances in your accounts or require you to re-enter your Secret Recovery Phrase." }, "restore": { "message": "Restore" }, "restoreAccountWithSeed": { - "message": "Restore your Account with Seed Phrase" + "message": "Restore your Account with Secret Recovery Phrase" }, "restoreWalletPreferences": { "message": "A backup of your data from $1 has been found. Would you like to restore your wallet preferences?", @@ -1453,13 +1468,13 @@ "message": "A token here reuses a symbol from another token you watch, this can be confusing or deceptive." }, "revealSeedWords": { - "message": "Reveal Seed Phrase" + "message": "Reveal Secret Recovery Phrase" }, "revealSeedWordsDescription": { - "message": "If you ever change browsers or move computers, you will need this seed phrase to access your accounts. Save them somewhere safe and secret." + "message": "If you ever change browsers or move computers, you will need this Secret Recovery Phrase to access your accounts. Save them somewhere safe and secret." }, "revealSeedWordsTitle": { - "message": "Seed Phrase" + "message": "Secret Recovery Phrase" }, "revealSeedWordsWarning": { "message": "These words can be used to steal all your accounts." @@ -1519,16 +1534,52 @@ "message": "Security & Privacy" }, "securitySettingsDescription": { - "message": "Privacy settings and wallet seed phrase" + "message": "Privacy settings and wallet Secret Recovery Phrase" + }, + "seedPhraseIntroSidebarBulletFour": { + "message": "Write down and store in multiple secret places." + }, + "seedPhraseIntroSidebarBulletOne": { + "message": "Save in a password manager" + }, + "seedPhraseIntroSidebarBulletThree": { + "message": "Store in a safe-deposit box." + }, + "seedPhraseIntroSidebarBulletTwo": { + "message": "Store in a bank vault." + }, + "seedPhraseIntroSidebarCopyOne": { + "message": "Your recovery phrase is the “master key” to your wallet and funds." + }, + "seedPhraseIntroSidebarCopyThree": { + "message": "If someone asks for your recovery phrase, they are most likely trying to scam you." + }, + "seedPhraseIntroSidebarCopyTwo": { + "message": "Never, ever share your recovery phrase, even with MetaMask!" + }, + "seedPhraseIntroSidebarTitleOne": { + "message": "What is a recovery phrase?" + }, + "seedPhraseIntroSidebarTitleThree": { + "message": "Should I share my recovery phrase?" + }, + "seedPhraseIntroSidebarTitleTwo": { + "message": "How do I save my recovery phrase?" + }, + "seedPhraseIntroTitle": { + "message": "Secure your wallet" + }, + "seedPhraseIntroTitleCopy": { + "message": "Before getting started, watch this short video to learn about your recovery phrase and how to keep your wallet safe." }, "seedPhrasePlaceholder": { "message": "Separate each word with a single space" }, "seedPhrasePlaceholderPaste": { - "message": "Paste seed phrase from clipboard" + "message": "Paste Secret Recovery Phrase from clipboard" }, "seedPhraseReq": { - "message": "Seed phrases contain 12, 15, 18, 21, or 24 words" + "message": "Secret Recovery Phrases contain 12, 15, 18, 21, or 24 words" }, "selectAHigherGasFee": { "message": "Select a higher gas fee to accelerate the processing of your transaction.*" @@ -1546,7 +1597,11 @@ "message": "This account has already been connected to MetaMask" }, "selectAnAccountHelp": { - "message": "Select the account to view in MetaMask" + "message": "Select an account to view in MetaMask." + }, + "selectAnAccountHelpDirections": { + "message": "Don't see your account? $1", + "description": "$1 represents the `hardwareWalletSupportLinkConversion` localization key" }, "selectEachPhrase": { "message": "Please select each phrase in order to make sure it is correct." @@ -1616,7 +1671,7 @@ "message": "Show Private Keys" }, "showSeedPhrase": { - "message": "Show seed phrase" + "message": "Show Secret Recovery Phrase" }, "sigRequest": { "message": "Signature Request" @@ -1688,23 +1743,26 @@ "statusNotConnected": { "message": "Not connected" }, - "step1HardwareWallet": { - "message": "1. Connect Hardware Wallet" + "step1LedgerWallet": { + "message": "Download Ledger app" }, - "step1HardwareWalletMsg": { - "message": "Connect your hardware wallet directly to your computer." + "step1LedgerWalletMsg": { + "message": "Download, set up, and enter your password to unlock $1.", + "description": "$1 represents the `ledgerLiveApp` localization value" }, - "step2HardwareWallet": { - "message": "2. Select an Account" + "step1TrezorWallet": { + "message": "Plug in Trezor wallet" }, - "step2HardwareWalletMsg": { - "message": "Select the account you want to view. You can only choose one at a time." + "step1TrezorWalletMsg": { + "message": "Connect your wallet directly to your computer. For more on using your hardware wallet device, $1", + "description": "$1 represents the `hardwareWalletSupportLinkConversion` localization key" }, - "step3HardwareWallet": { - "message": "3. Start using web3 sites and more!" + "step2LedgerWallet": { + "message": "Plug in Ledger wallet" }, - "step3HardwareWalletMsg": { - "message": "Use your hardware account like you would with any Ethereum account. Connect to web3 sites, send ETH, buy and store ERC20 tokens and non-fungible tokens like CryptoKitties." + "step2LedgerWalletMsg": { + "message": "Connect your wallet directly to your computer. Unlock your Ledger and open the Ethereum app. For more on using your hardware wallet device, $1.", + "description": "$1 represents the `hardwareWalletSupportLinkConversion` localization key" }, "storePhrase": { "message": "Store this phrase in a password manager like 1Password." @@ -1730,6 +1788,10 @@ "swapAggregator": { "message": "Aggregator" }, + "swapAllowSwappingOf": { + "message": "Allow swapping of $1", + "description": "Shows a user that they need to allow a token for swapping on their hardware wallet" + }, "swapAmountReceived": { "message": "Guaranteed amount" }, @@ -1755,6 +1817,9 @@ "message": "Checking $1", "description": "Shown to the user during quote loading. $1 is the name of an aggregator. The message indicates that metamask is currently checking if that aggregator has a trade/quote for their requested swap." }, + "swapConfirmWithHwWallet": { + "message": "Confirm with your hardware wallet" + }, "swapCustom": { "message": "custom" }, @@ -1800,8 +1865,15 @@ "swapFinalizing": { "message": "Finalizing..." }, + "swapFromTo": { + "message": "The swap of $1 to $2", + "description": "Tells a user that they need to confirm on their hardware wallet a swap of 2 tokens. $1 is a source token and $2 is a destination token" + }, + "swapGasFeesSplit": { + "message": "Gas fees on the previous screen are split between these two transactions." + }, "swapHighSlippageWarning": { - "message": "Slippage amount is very high. Make sure you know what you are doing!" + "message": "Slippage amount is very high." }, "swapLowSlippageError": { "message": "Transaction may fail, max slippage too low." @@ -1920,8 +1992,8 @@ "swapSelectQuotePopoverDescription": { "message": "Below are all the quotes gathered from multiple liquidity sources." }, - "swapSlippageTooLow": { - "message": "Slippage must be greater than zero" + "swapSlippageNegative": { + "message": "Slippage must be greater or equal to zero" }, "swapSource": { "message": "Liquidity source" @@ -1941,6 +2013,9 @@ "swapThisWillAllowApprove": { "message": "This will allow $1 to be swapped." }, + "swapToConfirmWithHwWallet": { + "message": "to confirm with your hardware wallet" + }, "swapTokenAvailable": { "message": "Your $1 has been added to your account.", "description": "This message is shown after a swap is successful and communicates the exact amount of tokens the user has received for a swap. The $1 is a decimal number of tokens followed by the token symbol." @@ -1970,6 +2045,9 @@ "swapTransactionComplete": { "message": "Transaction complete" }, + "swapTwoTransactions": { + "message": "2 transactions" + }, "swapUnknown": { "message": "Unknown" }, @@ -2012,6 +2090,12 @@ "switchEthereumChainConfirmationTitle": { "message": "Allow this site to switch the network?" }, + "switchLedgerPaths": { + "message": "Switch Ledger paths" + }, + "switchLedgerPathsText": { + "message": "Select the Ledger path to view other accounts" + }, "switchNetwork": { "message": "Switch network" }, @@ -2070,7 +2154,7 @@ "message": "Test Faucet" }, "thisWillCreate": { - "message": "This will create a new wallet and seed phrase" + "message": "This will create a new wallet and Secret Recovery Phrase" }, "tips": { "message": "Tips" @@ -2254,10 +2338,10 @@ "message": "our hardware wallet connection guide" }, "walletSeed": { - "message": "Seed phrase" + "message": "Secret Recovery Phrase" }, "walletSeedRestore": { - "message": "Wallet Seed" + "message": "Wallet Secret Recovery Phrase" }, "web3ShimUsageNotification": { "message": "We noticed that the current website tried to use the removed window.web3 API. If the site appears to be broken, please click $1 for more information.", @@ -2297,7 +2381,7 @@ "message": "You are signing" }, "yourPrivateSeedPhrase": { - "message": "Your private seed phrase" + "message": "Your private Secret Recovery Phrase" }, "zeroGasPriceOnSpeedUpError": { "message": "Zero gas price on speed up" diff --git a/app/_locales/es/messages.json b/app/_locales/es/messages.json index 83540a855..5f3f401e2 100644 --- a/app/_locales/es/messages.json +++ b/app/_locales/es/messages.json @@ -500,9 +500,6 @@ "done": { "message": "Completo" }, - "dontHaveAHardwareWallet": { - "message": "¿No tienes un monedero físico?" - }, "dontShowThisAgain": { "message": "No mostrar esto de nuevo" }, @@ -727,9 +724,6 @@ "message": "Obtenga Ether de un faucet (grifo) por $1", "description": "Displays network name for Ether faucet" }, - "getHelp": { - "message": "Pedir ayuda." - }, "getStarted": { "message": "Empezar" }, @@ -751,9 +745,6 @@ "hardwareWalletsMsg": { "message": "Seleccionar un monedero físico que quieres usar con MetaMask" }, - "havingTroubleConnecting": { - "message": "¿Tienes problemas de conexión?" - }, "here": { "message": "Aquí", "description": "as in -click here- for more information (goes with troubleTokenBalances)" @@ -1117,9 +1108,6 @@ "optionalCurrencySymbol": { "message": "Símbolo (opcional)" }, - "orderOneHere": { - "message": "Cómprate un Trezor o Ledger y guarda tus fondos en almacenamiento frío" - }, "origin": { "message": "Origen" }, @@ -1201,9 +1189,6 @@ "readdToken": { "message": "Puedes volver a agregar este token en el futuro pinchando sobre 'Agregar token' en el menú de opciones de tu cuenta" }, - "readyToConnect": { - "message": "¿Listo/a para conectar?" - }, "receive": { "message": "Recibir" }, @@ -1504,24 +1489,6 @@ "statusNotConnected": { "message": "No conectado" }, - "step1HardwareWallet": { - "message": "1. Conectar monedero físico." - }, - "step1HardwareWalletMsg": { - "message": "Conéctate el monedero físico directamente al ordenador." - }, - "step2HardwareWallet": { - "message": "2. Seleccionar una cuenta" - }, - "step2HardwareWalletMsg": { - "message": "Seleccione la cuenta que quieres ver. Sólo se puede eligir una a la vez." - }, - "step3HardwareWallet": { - "message": "3. Empezar a usar dApps ¡y más!" - }, - "step3HardwareWalletMsg": { - "message": "Usa tu cuenta física igual que harías con cualquier cuenta de Ethereum. Regístrate con dApps, manda Eth, compra y almacena tokens de ERC20 y otros tokens no-fungibles, como CryptoKitties." - }, "storePhrase": { "message": "Guarde esta frase en un administrador de contraseñas como 1Password." }, @@ -1609,9 +1576,6 @@ "swapFinalizing": { "message": "Finalizando..." }, - "swapHighSlippageWarning": { - "message": "La cantidad de deslizamiento es muy alta. ¡Asegúrate de saber lo que estás haciendo!" - }, "swapLowSlippageError": { "message": "La transacción puede fallar, el deslizamiento máximo es demasiado bajo." }, @@ -1723,9 +1687,6 @@ "swapSelectQuotePopoverDescription": { "message": "A continuación se muestran todas las cotizaciones recopiladas de múltiples fuentes de liquidez." }, - "swapSlippageTooLow": { - "message": "El deslizamiento debe ser mayor que cero" - }, "swapSource": { "message": "Fuente de liquidez" }, diff --git a/app/_locales/es_419/messages.json b/app/_locales/es_419/messages.json index 1711d2a05..706afa7be 100644 --- a/app/_locales/es_419/messages.json +++ b/app/_locales/es_419/messages.json @@ -500,9 +500,6 @@ "done": { "message": "Listo" }, - "dontHaveAHardwareWallet": { - "message": "¿No tienes una billetera de hardware?" - }, "dontShowThisAgain": { "message": "No mostrar esto de nuevo" }, @@ -727,9 +724,6 @@ "message": "Obtener Ether a partir de un grifo para $1", "description": "Displays network name for Ether faucet" }, - "getHelp": { - "message": "Obtén ayuda." - }, "getStarted": { "message": "Comenzar" }, @@ -751,9 +745,6 @@ "hardwareWalletsMsg": { "message": "Selecciona la billetera de hardware que te gustaría utilizar con MetaMask" }, - "havingTroubleConnecting": { - "message": "¿Problemas de conexión?" - }, "here": { "message": "Aquí", "description": "as in -click here- for more information (goes with troubleTokenBalances)" @@ -1117,9 +1108,6 @@ "optionalCurrencySymbol": { "message": "Símbolo (opcional)" }, - "orderOneHere": { - "message": "Pida una billetera Trezor o Ledger y mantenga sus fondos en un almacenamiento en frío" - }, "origin": { "message": "Origen" }, @@ -1201,9 +1189,6 @@ "readdToken": { "message": "Puedes volver a agregar este token a través de la opción \"Agregar token\" en el menú de opciones de tus cuentas." }, - "readyToConnect": { - "message": "¿Listo/a para conectarte?" - }, "receive": { "message": "Recibir" }, @@ -1504,24 +1489,6 @@ "statusNotConnected": { "message": "No conectado" }, - "step1HardwareWallet": { - "message": "1. Conecta la billetera de hardware" - }, - "step1HardwareWalletMsg": { - "message": "Conecta tu billetera de hardware directamente a tu computadora." - }, - "step2HardwareWallet": { - "message": "2. Selecciona una cuenta" - }, - "step2HardwareWalletMsg": { - "message": "Selecciona la cuenta que deseas ver. Solo puedes seleccionar una a la vez." - }, - "step3HardwareWallet": { - "message": "3. ¡Comienza a utilizar dApps y más!" - }, - "step3HardwareWalletMsg": { - "message": "Utiliza tu cuenta de hardware como si fuera una cuenta de Ethereum. Inicia sesión en dApps, envía ETH, compra y almacena tokens ERC20 y tokens no fungibles como CryptoKitties." - }, "storePhrase": { "message": "Almacena esta frase en un administrador de contraseñas como 1Password." }, @@ -1609,9 +1576,6 @@ "swapFinalizing": { "message": "Finalizando..." }, - "swapHighSlippageWarning": { - "message": "La cantidad de deslizamiento es muy alta. ¡Asegúrate de saber lo que estás haciendo!" - }, "swapLowSlippageError": { "message": "La transacción puede fallar, el deslizamiento máximo es demasiado bajo." }, @@ -1723,9 +1687,6 @@ "swapSelectQuotePopoverDescription": { "message": "A continuación se muestran todas las cotizaciones recopiladas de múltiples fuentes de liquidez." }, - "swapSlippageTooLow": { - "message": "El deslizamiento debe ser mayor que cero" - }, "swapSource": { "message": "Fuente de liquidez" }, diff --git a/app/_locales/et/messages.json b/app/_locales/et/messages.json index 81e7154f1..4139c4a92 100644 --- a/app/_locales/et/messages.json +++ b/app/_locales/et/messages.json @@ -308,9 +308,6 @@ "done": { "message": "Valmis" }, - "dontHaveAHardwareWallet": { - "message": "Teil ei ole riistvara rahakotti?" - }, "downloadGoogleChrome": { "message": "Laadige alla Google Chrome" }, @@ -439,9 +436,6 @@ "message": "Hankige kraanist eetrit $1eest", "description": "Displays network name for Ether faucet" }, - "getHelp": { - "message": "Küsige abi." - }, "getStarted": { "message": "Alustamine" }, @@ -463,9 +457,6 @@ "hardwareWalletsMsg": { "message": "Valige riistvara rahakott, mida soovite MetaMaskis kasutada" }, - "havingTroubleConnecting": { - "message": "Kas ühendamisel esineb probleeme?" - }, "here": { "message": "siin", "description": "as in -click here- for more information (goes with troubleTokenBalances)" @@ -691,9 +682,6 @@ "optionalCurrencySymbol": { "message": "Sümbol (valikuline)" }, - "orderOneHere": { - "message": "Tellige Trezor või Ledger ja hoidke oma varasid külmruumis" - }, "origin": { "message": "Päritolu" }, @@ -753,9 +741,6 @@ "readdToken": { "message": "Saate selle loa tulevikus tagasi lisada, kui lähete oma kontovalikute menüüs vahelehele „Lisa luba“." }, - "readyToConnect": { - "message": "Kas olete ühenduseks valmis?" - }, "recents": { "message": "Hiljutised" }, @@ -978,24 +963,6 @@ "stateLogsDescription": { "message": "Olekulogid sisaldavad teie avalikke konto aadresse ja saadetud tehinguid." }, - "step1HardwareWallet": { - "message": "1. Ühendage riistvara rahakott" - }, - "step1HardwareWalletMsg": { - "message": "Ühendage oma riistvara rahakott otse oma arvutiga." - }, - "step2HardwareWallet": { - "message": "2. Valige konto" - }, - "step2HardwareWalletMsg": { - "message": "Valige konto, mida soovite vaadata. Korraga saab valida ühe." - }, - "step3HardwareWallet": { - "message": "3. Hakake kasutama dAppse ja muud!" - }, - "step3HardwareWalletMsg": { - "message": "Kasutage oma riistvarakontot nagu mis tahes teist Ethereumi kontot. Logige dAppsi, saatke Eth-d, ostke ja hoiustage ERC20 lube ning asendamatuid lube nagu CryptoKitties." - }, "storePhrase": { "message": "Salvestage see fraas paroolihaldurisse, nagu 1Password." }, diff --git a/app/_locales/fa/messages.json b/app/_locales/fa/messages.json index 54e0a6e90..a60b658cf 100644 --- a/app/_locales/fa/messages.json +++ b/app/_locales/fa/messages.json @@ -308,9 +308,6 @@ "done": { "message": "تمام" }, - "dontHaveAHardwareWallet": { - "message": "آیا کیف سخت افزار ندارید؟" - }, "downloadGoogleChrome": { "message": "دانلود گوگل کروم" }, @@ -443,9 +440,6 @@ "message": "اخذ ایتر از یک فاست برای 1$1", "description": "Displays network name for Ether faucet" }, - "getHelp": { - "message": "دریافت کمک" - }, "getStarted": { "message": "شروع به کار" }, @@ -467,9 +461,6 @@ "hardwareWalletsMsg": { "message": "یک کیف سخت افزار را که میخواهید با MetaMast استفاده نمایید، انتخاب کنید" }, - "havingTroubleConnecting": { - "message": "آیا در اتصال مشکلی دارید؟" - }, "here": { "message": "اینجا", "description": "as in -click here- for more information (goes with troubleTokenBalances)" @@ -701,9 +692,6 @@ "optionalCurrencySymbol": { "message": "سمبول (انتخابی)" }, - "orderOneHere": { - "message": "یک Trezor یا Ledger را سفارش داده و پول های تان را در ذخیره سرد نگهدارید" - }, "origin": { "message": "مبدأ" }, @@ -763,9 +751,6 @@ "readdToken": { "message": "شما میتوانید این رمزیاب را دوباره برای آینده با رفتن به گزینه \"Add token\" در مینوی تنظیمات حساب ها، اضافه نمایید." }, - "readyToConnect": { - "message": "آماده برای اتصال هستید؟" - }, "recents": { "message": "واپسین" }, @@ -988,24 +973,6 @@ "stateLogsDescription": { "message": "دفترچه وضعیت شامل آدرس های حساب عمومی و معاملات فرستاده شده تان میباشد." }, - "step1HardwareWallet": { - "message": "1. اتصال کیف سخت افزار" - }, - "step1HardwareWalletMsg": { - "message": "کیف سخت افزار تان را مستقیمًا به کمپیوتر وصل نمایید." - }, - "step2HardwareWallet": { - "message": "2. انتخاب یک حساب" - }, - "step2HardwareWalletMsg": { - "message": "حسابی را که میخواهید مشاهده نمایید انتخاب کنید. شما میتوانید یک حساب را در یک زمان انتخاب نمایید." - }, - "step3HardwareWallet": { - "message": "3. آغاز استفاده از dApps و بیشتر!" - }, - "step3HardwareWalletMsg": { - "message": "حساب سخت افزار تان را همچنانکه در حساب ایتریم استفاده میکنید، استفاده نمایید. وارد dApps شده، Eth را ارسال نموده، رمزیاب های ERC20 و غیر-قابل تبدیل به پول مانند CryptoKitties را خریداری و ذخیره نمایید." - }, "storePhrase": { "message": "این عبارت را در یک نرم افزار مدیریت رمز عبور مانند 1Password ذخیره نمایید." }, diff --git a/app/_locales/fi/messages.json b/app/_locales/fi/messages.json index e9f2ede88..79b779fbb 100644 --- a/app/_locales/fi/messages.json +++ b/app/_locales/fi/messages.json @@ -308,9 +308,6 @@ "done": { "message": "Valmis" }, - "dontHaveAHardwareWallet": { - "message": "Eikö sinulla ole laitteistokukkaroa?" - }, "downloadGoogleChrome": { "message": "Lataa Google Chrome" }, @@ -443,9 +440,6 @@ "message": "Hanki etheriä faucetista kohteelle $1", "description": "Displays network name for Ether faucet" }, - "getHelp": { - "message": "Pyydä apua." - }, "getStarted": { "message": "Aloitusopas" }, @@ -467,9 +461,6 @@ "hardwareWalletsMsg": { "message": "Valitse laitteistokukkaro, jota haluaisit käyttää MetaMaskilla" }, - "havingTroubleConnecting": { - "message": "Onko sinulla yhdistämisvaikeuksia?" - }, "here": { "message": "tässä", "description": "as in -click here- for more information (goes with troubleTokenBalances)" @@ -698,9 +689,6 @@ "optionalCurrencySymbol": { "message": "Symboli (valinnainen)" }, - "orderOneHere": { - "message": "Tilaa Trezor tai Ledger ja pidä varasi vakaassa tallennustilassa" - }, "origin": { "message": "Alkuperä" }, @@ -760,9 +748,6 @@ "readdToken": { "message": "Voit lisätä tämän tietueen myöhemmin takaisin siirtymällä tilisi vaihtoehtovalikon kohtaan ”Lisää tietue”." }, - "readyToConnect": { - "message": "Valmiina yhdistämään?" - }, "recents": { "message": "Viimeaikaiset" }, @@ -985,24 +970,6 @@ "stateLogsDescription": { "message": "Tilalokeista löydät julkiset tiliosoitteesi sekä lähetetyt maksusiirtosi." }, - "step1HardwareWallet": { - "message": "1. Yhdistä laitteistokukkaro" - }, - "step1HardwareWalletMsg": { - "message": "Yhdistä hardware-lompakkosi suoraan tietokoneeseesi." - }, - "step2HardwareWallet": { - "message": "2. Valitse tili" - }, - "step2HardwareWalletMsg": { - "message": "Valitse tarkasteltava tili. Voit valita vain yhden kerrallaan." - }, - "step3HardwareWallet": { - "message": "3. Ota käyttöön dApps ja paljon muuta!" - }, - "step3HardwareWalletMsg": { - "message": "Käytä laitteistosi tiliä minkä tahansa Ethereum-tilin tavoin. Kirjaudu dAppsiin, lähettää ethereumeja, ostaa ja tallentaa ERC20-tunnuksia sekä CryptoKittiesin kaltaisia ei-korvattavia tunnuksia." - }, "storePhrase": { "message": "Tallenna tämä teksti johonkin salasanojen hallintaohjelmaan (esim. 1Password)." }, diff --git a/app/_locales/fil/messages.json b/app/_locales/fil/messages.json index 81ad47621..be0fef29c 100644 --- a/app/_locales/fil/messages.json +++ b/app/_locales/fil/messages.json @@ -284,9 +284,6 @@ "done": { "message": "Tapos na" }, - "dontHaveAHardwareWallet": { - "message": "Wala ka bang hardware wallet?" - }, "downloadGoogleChrome": { "message": "I-download ang Google Chrome" }, @@ -412,9 +409,6 @@ "message": "Kumuha ng Ether mula sa isang faucet para sa $1", "description": "Displays network name for Ether faucet" }, - "getHelp": { - "message": "Humingi ng Tulong." - }, "getStarted": { "message": "Magsimula" }, @@ -430,9 +424,6 @@ "hardwareWalletsMsg": { "message": "Pumili ng hardware wallet na gusto mong gamitin sa MetaMask" }, - "havingTroubleConnecting": { - "message": "May problema ka ba sa pagkonekta?" - }, "here": { "message": "dito", "description": "as in -click here- for more information (goes with troubleTokenBalances)" @@ -632,9 +623,6 @@ "optionalCurrencySymbol": { "message": "Simbolo (opsyonal)" }, - "orderOneHere": { - "message": "Mag-order ng Trezor o Ledger para itago sa cold storage ang iyong pondo" - }, "origin": { "message": "Pinanggalingan" }, @@ -687,9 +675,6 @@ "readdToken": { "message": "Puwede mong idagdag ulit ang token na ito sa hinaharap sa pamamagitan ng pagpunta sa “Magdagdag ng token” sa menu ng mga opsyon ng iyong mga accounts." }, - "readyToConnect": { - "message": "Handa ka nang Kumonekta?" - }, "recents": { "message": "Kamakailan" }, @@ -894,24 +879,6 @@ "stateLogsDescription": { "message": "Ang mga state log ay naglalaman ng iyong mga pampublikong account address at mga ipinadalang transaksyon." }, - "step1HardwareWallet": { - "message": "1. Magkonekta ng Hardware Wallet" - }, - "step1HardwareWalletMsg": { - "message": "Ikonekta ang iyong hardware wallet nang direkta sa computer." - }, - "step2HardwareWallet": { - "message": "2. Pumili ng Account" - }, - "step2HardwareWalletMsg": { - "message": "Piliin ang halagang gusto mong tingnan. Maaari ka lang pumili nang paisa-isa." - }, - "step3HardwareWallet": { - "message": "3. Magsimula gamit ang dApps at higit pa!" - }, - "step3HardwareWalletMsg": { - "message": "Gamitin ang iyong hardware account tulad ng anumang Ethereum account. Mag-log in sa dApps, magpadala ng Eth, bumili at mag-store ng mga ERC20 token at mga Non-Fungible token tulad ng CryptoKitties." - }, "storePhrase": { "message": "I-store ang pariralang ito sa isang password manager tulad ng 1Password." }, diff --git a/app/_locales/fr/messages.json b/app/_locales/fr/messages.json index fcfc5869c..77207d133 100644 --- a/app/_locales/fr/messages.json +++ b/app/_locales/fr/messages.json @@ -299,9 +299,6 @@ "done": { "message": "Terminé" }, - "dontHaveAHardwareWallet": { - "message": "Vous n'avez pas de portefeuille hardware ?" - }, "downloadGoogleChrome": { "message": "Télécharger Google Chrome" }, @@ -437,9 +434,6 @@ "message": "Obtenir de l'Ether d'une faucet pour $1", "description": "Displays network name for Ether faucet" }, - "getHelp": { - "message": "Obtenir de l'aide." - }, "getStarted": { "message": "Démarrer" }, @@ -458,9 +452,6 @@ "hardwareWalletsMsg": { "message": "Selectionnez le portefeuille hardware que vous voulez utiliser avec MetaMask" }, - "havingTroubleConnecting": { - "message": "Un problème de connection ?" - }, "here": { "message": "ici", "description": "as in -click here- for more information (goes with troubleTokenBalances)" @@ -683,9 +674,6 @@ "optionalCurrencySymbol": { "message": "Symbole (facultatif)" }, - "orderOneHere": { - "message": "Commander un Trezor ou un Ledger et conserver vos fonds en \"cold storage\"" - }, "origin": { "message": "Origine" }, @@ -745,9 +733,6 @@ "readdToken": { "message": "Vous pourrez ajouter à nouveau ce jeton en allant sur “Ajouter un jeton” dans le menu des options de votre compte." }, - "readyToConnect": { - "message": "Prêt à se connecter ?" - }, "recents": { "message": "Récents" }, @@ -970,24 +955,6 @@ "stateLogsDescription": { "message": "Les logs d'Etat contiennent les adresses publiques de vos comptes et vos transactions envoyées." }, - "step1HardwareWallet": { - "message": "1. Connecter le portefeuille hardware" - }, - "step1HardwareWalletMsg": { - "message": "Connectez votre portefeuille hardware directement à votre ordinateur." - }, - "step2HardwareWallet": { - "message": "2. Selectionnez un compte" - }, - "step2HardwareWalletMsg": { - "message": "Selectionnez le compte que vous voulez afficher. Vous ne pouvez en afficher qu'un seul à la fois." - }, - "step3HardwareWallet": { - "message": "3. Vous pouvez maintenant utiliser des dApps et autres... !" - }, - "step3HardwareWalletMsg": { - "message": "Utilisez ce compte de votre portefeuille hardware comme n'importe quel compte Ethereum. Connectez vous à des dApps, envoyez de l'Eth, achetez et conservez des jetons ERC20 et Non-Fungible comme CryptoKitties." - }, "storePhrase": { "message": "Stockez cette phrase dans un gestionnaire de mots de passe comme 1Password." }, diff --git a/app/_locales/he/messages.json b/app/_locales/he/messages.json index 8bb39ef27..72123870b 100644 --- a/app/_locales/he/messages.json +++ b/app/_locales/he/messages.json @@ -308,9 +308,6 @@ "done": { "message": "סיום" }, - "dontHaveAHardwareWallet": { - "message": "אין לך ארנק חומרה?" - }, "downloadGoogleChrome": { "message": "הורד/י את גוגל כרום" }, @@ -443,9 +440,6 @@ "message": "השג/י את'ר מברז (faucet) עבור ה-$1", "description": "Displays network name for Ether faucet" }, - "getHelp": { - "message": "בקש/י עזרה." - }, "getStarted": { "message": "תחילת העבודה" }, @@ -467,9 +461,6 @@ "hardwareWalletsMsg": { "message": "בחר/י ארנק חומרה שבו תרצה להשתמש עם MetaMask" }, - "havingTroubleConnecting": { - "message": "חווה קשיים בהתחברות?" - }, "here": { "message": "כאן", "description": "as in -click here- for more information (goes with troubleTokenBalances)" @@ -698,9 +689,6 @@ "optionalCurrencySymbol": { "message": "סמל (אופציונלי)" }, - "orderOneHere": { - "message": "הזמנ/י Trezor או Ledger ושמר/י את הכספים שלך באחסון קר" - }, "origin": { "message": "מקור" }, @@ -760,9 +748,6 @@ "readdToken": { "message": "באפשרותך להוסיף טוקן זה בחזרה בעתיד על ידי מעבר אל \"הוסף טוקן\" בתפריט אפשרויות החשבונות שלך." }, - "readyToConnect": { - "message": "מוכנ/ה להתחבר?" - }, "recents": { "message": "אחרונים" }, @@ -982,24 +967,6 @@ "stateLogsDescription": { "message": "יומני המצב מכילים את כתובות החשבון הציבוריות שלך ועסקאות שנשלחו." }, - "step1HardwareWallet": { - "message": "1. חבר/י ארנק חומרה" - }, - "step1HardwareWalletMsg": { - "message": "חבר/י את ארנק החומרה שלך ישירות למחשב שלך." - }, - "step2HardwareWallet": { - "message": "2. בחר/י חשבון" - }, - "step2HardwareWalletMsg": { - "message": "בחר/י את החשבון שברצונך להציג. באפשרותך לבחור רק אחד בכל פעם." - }, - "step3HardwareWallet": { - "message": "3. התחל/י להשתמש ב- dApps ועוד!" - }, - "step3HardwareWalletMsg": { - "message": "השתמש/י בחשבון החומרה שלך כי שהיית משתמש/ת בכל חשבון אתריום" - }, "storePhrase": { "message": "אחסנ/י צירוף זה במנהל ססמאות כמו 1Password." }, diff --git a/app/_locales/hi/messages.json b/app/_locales/hi/messages.json index 4ece9cce8..262ef82d0 100644 --- a/app/_locales/hi/messages.json +++ b/app/_locales/hi/messages.json @@ -491,9 +491,6 @@ "done": { "message": "संपन्न" }, - "dontHaveAHardwareWallet": { - "message": "हार्डवेयर वॉलेट नहीं है?" - }, "dontShowThisAgain": { "message": "इसे दोबारा न दिखाएँ" }, @@ -718,9 +715,6 @@ "message": "$1 के लिए एक फ़ॉसेट से Ether प्राप्त करें", "description": "Displays network name for Ether faucet" }, - "getHelp": { - "message": "मदद प्राप्त करें।" - }, "getStarted": { "message": "प्रारंभ करें" }, @@ -742,9 +736,6 @@ "hardwareWalletsMsg": { "message": "किसी हार्डवेयर वॉलेट का चयन करें, जिसे आप MetaMask के साथ उपयोग करना चाहते हैं" }, - "havingTroubleConnecting": { - "message": "कनेक्ट करने में समस्या हो रही है?" - }, "here": { "message": "यहाँ", "description": "as in -click here- for more information (goes with troubleTokenBalances)" @@ -1108,9 +1099,6 @@ "optionalCurrencySymbol": { "message": "मुद्रा प्रतीक (वैकल्पिक)" }, - "orderOneHere": { - "message": "Trezor या लेजर ऑर्डर करें और अपने धन को कोल्ड स्टोरेज में रखें" - }, "origin": { "message": "उत्पत्ति" }, @@ -1192,9 +1180,6 @@ "readdToken": { "message": "आप अपने खातों के विकल्प मेनू में \"टोकन जोड़ें\" पर जाकर भविष्य में इस टोकन को वापस जोड़ सकते हैं।" }, - "readyToConnect": { - "message": "कनेक्ट करने के लिए तैयार हैं?" - }, "receive": { "message": "प्राप्त करें" }, @@ -1495,24 +1480,6 @@ "statusNotConnected": { "message": "कनेक्ट नहीं है" }, - "step1HardwareWallet": { - "message": "1. हार्डवेयर वॉलेट कनेक्ट करें" - }, - "step1HardwareWalletMsg": { - "message": "अपने हार्डवेयर वॉलेट को सीधे अपने कंप्यूटर से कनेक्ट करें।" - }, - "step2HardwareWallet": { - "message": "2. किसी खाते का चयन करें" - }, - "step2HardwareWalletMsg": { - "message": "उस खाते का चयन करें, जिसे आप देखना चाहते हैं। आप एक समय में केवल एक ही चुन सकते हैं।" - }, - "step3HardwareWallet": { - "message": "3. web3 साइटों और अधिक का उपयोग करना प्रारंभ करें!" - }, - "step3HardwareWalletMsg": { - "message": "अपने हार्डवेयर खाते का उसी तरह से उपयोग करें, जैसे आप किसी भी Ethereum खाते को करेंगे। web3 साइटों से कनेक्ट करें, ETH भेजें, ERC20 और CryptoKitties जैसे गैर-प्रतिमोचन वाले टोकन जैसे टोकन खरीदें और संग्रहीत करें।" - }, "storePhrase": { "message": "इस वाक्यांश को 1Password जैसे किसी पासवर्ड मैनेजर में संग्रहीत करें।" }, @@ -1597,9 +1564,6 @@ "swapFinalizing": { "message": "अंतिम रूप दिया जा रहा है..." }, - "swapHighSlippageWarning": { - "message": "स्लिपेज राशि बहुत अधिक है। सुनिश्चित करें कि आप जानते हैं कि आप क्या कर रहे हैं!" - }, "swapLowSlippageError": { "message": "लेनदेन विफल हो सकता है, अधिकतम स्लिपेज बहुत कम हो सकता है।" }, @@ -1693,9 +1657,6 @@ "swapSelectQuotePopoverDescription": { "message": "नीचे दिए गए सभी उद्धरण कई चलनिधि स्रोतों से एकत्र किए गए हैं।" }, - "swapSlippageTooLow": { - "message": "स्लिपेज शून्य से अधिक होना चाहिए" - }, "swapSource": { "message": "चलनिधि का स्रोत" }, diff --git a/app/_locales/hr/messages.json b/app/_locales/hr/messages.json index aacdd52d9..bf02b3939 100644 --- a/app/_locales/hr/messages.json +++ b/app/_locales/hr/messages.json @@ -308,9 +308,6 @@ "done": { "message": "Gotovo" }, - "dontHaveAHardwareWallet": { - "message": "Nemate hardverski novčanik?" - }, "downloadGoogleChrome": { "message": "Preuzmi preglednik Google Chrome" }, @@ -439,9 +436,6 @@ "message": "Dohvati Ether iz svežnja za $1", "description": "Displays network name for Ether faucet" }, - "getHelp": { - "message": "Potražite pomoć." - }, "getStarted": { "message": "Početak upotrebe" }, @@ -463,9 +457,6 @@ "hardwareWalletsMsg": { "message": "Odaberite hardverski novčanik koji biste željeli upotrebljavati s uslugom MetaMask" }, - "havingTroubleConnecting": { - "message": "Imate poteškoća s povezivanjem?" - }, "here": { "message": "ovdje", "description": "as in -click here- for more information (goes with troubleTokenBalances)" @@ -694,9 +685,6 @@ "optionalCurrencySymbol": { "message": "Simbol (neobavezno)" }, - "orderOneHere": { - "message": "Naručite Trezor ili Ledger te čuvajte svoja sredstva u hladnoj pohrani" - }, "origin": { "message": "Podrijetlo" }, @@ -756,9 +744,6 @@ "readdToken": { "message": "Ovaj token možete dodati kasnije odlaskom pod stavku „Dodaj token” u izborniku mogućnosti računa. " }, - "readyToConnect": { - "message": "Sve je spremno za povezivanje?" - }, "recents": { "message": "Nedavno" }, @@ -981,24 +966,6 @@ "stateLogsDescription": { "message": "U zapisnicima se stanja nalaze javne adrese računa i poslane transakcije." }, - "step1HardwareWallet": { - "message": "1. Povežite se na svoj hardverski novčanik" - }, - "step1HardwareWalletMsg": { - "message": "Povežite svoj hardverski novčanik izravno na svoje računalo." - }, - "step2HardwareWallet": { - "message": "2. Odaberite račun" - }, - "step2HardwareWalletMsg": { - "message": "Odaberite račun koji želite pregledati. Istovremeno možete odabrati samo jedan račun za pregled." - }, - "step3HardwareWallet": { - "message": "3. Započnite upotrebljavati dApps i više!" - }, - "step3HardwareWalletMsg": { - "message": "Upotrebljavajte svoj hardverski račun kako biste upotrebljavali bilo koji drugi račun Ethereum. Prijavite se u dApps, šaljite Eth, kupujte i pohranjujte ERC20 tokene i nezamjenske tokene kao CryptoKitties." - }, "storePhrase": { "message": "Spremite ovu rečenicu u upravitelj lozinkama poput aplikacije 1Password." }, diff --git a/app/_locales/ht/messages.json b/app/_locales/ht/messages.json index 327c534b9..2f750cd7d 100644 --- a/app/_locales/ht/messages.json +++ b/app/_locales/ht/messages.json @@ -172,9 +172,6 @@ "done": { "message": "Fini" }, - "dontHaveAHardwareWallet": { - "message": "Pa gen yon materyèl bous?" - }, "downloadGoogleChrome": { "message": "Telechaje Google Chrome" }, @@ -241,9 +238,6 @@ "message": "Jwenn Ether nan yon tiyo pou $1 la", "description": "Displays network name for Ether faucet" }, - "getHelp": { - "message": "Jwenn èd." - }, "hardware": { "message": "materyèl" }, @@ -256,9 +250,6 @@ "hardwareWalletsMsg": { "message": "Chwazi yon Materyèl Wallet ou ta renmen itilize ak MetaMask" }, - "havingTroubleConnecting": { - "message": "Èske w gen pwoblèm pou konekte?" - }, "here": { "message": "isit la", "description": "as in -click here- for more information (goes with troubleTokenBalances)" @@ -409,9 +400,6 @@ "ok": { "message": "Oke" }, - "orderOneHere": { - "message": "Mete nan lòd on Trezor oswa Ledger epi kenbe lajan ou nan yon stòk frèt." - }, "origin": { "message": "Orijin" }, @@ -462,9 +450,6 @@ "readdToken": { "message": "Ou ka ajoute token sa aprè sa ankò ou prale nan \"Ajoute token\" nan opsyon meni kont ou an." }, - "readyToConnect": { - "message": "Pare pou konekte?" - }, "recipientAddress": { "message": "Adrès pou resevwa" }, @@ -618,24 +603,6 @@ "stateLogsDescription": { "message": "State logs gen adrès kont piblik ou yo epi tranzaksyon ou te voye yo." }, - "step1HardwareWallet": { - "message": "1. Konekte Materyèl bous" - }, - "step1HardwareWalletMsg": { - "message": "Konekte materyèl bous ou dirèkteman nan òdinatè ou." - }, - "step2HardwareWallet": { - "message": "2. Chwazi yon kont" - }, - "step2HardwareWalletMsg": { - "message": "Chwazi kont ou vle wè a. Ou ka chwazi youn sèlman nan yon moman." - }, - "step3HardwareWallet": { - "message": "3. Kòmanse itilize dApps ak plis ankò!" - }, - "step3HardwareWalletMsg": { - "message": "Sèvi ak kont materyèl ou menm jan ou t ap fè pou kont Etherum. Ouvri sesyon an nan dApps, voye Eth, achte ak stòke ERC20 tokens ak e ki pake chanje tokens tankou CryptoKitties." - }, "submitted": { "message": "Te Soumèt" }, diff --git a/app/_locales/hu/messages.json b/app/_locales/hu/messages.json index 5a6d334e2..cb397cd69 100644 --- a/app/_locales/hu/messages.json +++ b/app/_locales/hu/messages.json @@ -308,9 +308,6 @@ "done": { "message": "Kész" }, - "dontHaveAHardwareWallet": { - "message": "Nincs hardveres tárcája? " - }, "downloadGoogleChrome": { "message": "Google Chrome letöltése" }, @@ -439,9 +436,6 @@ "message": "Szerezzen Ethert pénzcsapból a(z) $1-ért", "description": "Displays network name for Ether faucet" }, - "getHelp": { - "message": "Segítség kérése" - }, "getStarted": { "message": "Első lépések" }, @@ -463,9 +457,6 @@ "hardwareWalletsMsg": { "message": "Válassza ki a MetaMask-kal használni kívánt hardveres pénztárcát" }, - "havingTroubleConnecting": { - "message": "Gond van a csatlakozással?" - }, "here": { "message": "itt", "description": "as in -click here- for more information (goes with troubleTokenBalances)" @@ -694,9 +685,6 @@ "optionalCurrencySymbol": { "message": "Szimbólum (opcionális)" }, - "orderOneHere": { - "message": "Rendeljen trezort vagy főkönyvet, és tárolja pénzeszközeit hideg tárcában" - }, "origin": { "message": "Eredet" }, @@ -756,9 +744,6 @@ "readdToken": { "message": "Ezt a tokent a jövőben is hozzáadhatja, ha a fiókbeállítások menü „Token hozzáadása” elemére lép." }, - "readyToConnect": { - "message": "Készen áll a csatlakozásra?" - }, "recents": { "message": "Legutóbbiak" }, @@ -981,24 +966,6 @@ "stateLogsDescription": { "message": "Az állapotnaplóban megtalálhatók nyilvános fiókcímeid és elküldött tranzakcióid." }, - "step1HardwareWallet": { - "message": "1. Csatlakoztassa a hardveres pénztárcát" - }, - "step1HardwareWalletMsg": { - "message": "Csatlakoztassa hardveres tárcáját közvetlenül a számítógéphez." - }, - "step2HardwareWallet": { - "message": "2. Válassz egy fiókot" - }, - "step2HardwareWalletMsg": { - "message": "Válassza ki a megtekinteni kívánt fiókot. Egyszerre csak egyet választhat." - }, - "step3HardwareWallet": { - "message": "3. Kezdje el használni a dApps-t és másokat!" - }, - "step3HardwareWalletMsg": { - "message": "Használja hardveres fiókját úgy, mint bármilyen Ethereum fiókot. Jelentkezzen be a dAppsba, küldjön Ethet, vásároljon és tároljon ERC20 tokeneket és nem helyettesíthető tokeneket, például CryptoKitties-t." - }, "storePhrase": { "message": "Tárolja a mondatot jelszókezelőben, például az 1Passwordben." }, diff --git a/app/_locales/id/messages.json b/app/_locales/id/messages.json index 299c590c0..69e3de46a 100644 --- a/app/_locales/id/messages.json +++ b/app/_locales/id/messages.json @@ -491,9 +491,6 @@ "done": { "message": "Selesai" }, - "dontHaveAHardwareWallet": { - "message": "Tidak punya dompet perangkat keras?" - }, "dontShowThisAgain": { "message": "Jangan tampilkan ini lagi" }, @@ -718,9 +715,6 @@ "message": "Dapatkan Ether dari keran untuk $1", "description": "Displays network name for Ether faucet" }, - "getHelp": { - "message": "Dapatkan Bantuan." - }, "getStarted": { "message": "Persiapan." }, @@ -742,9 +736,6 @@ "hardwareWalletsMsg": { "message": "Pilih dompet perangkat keras yang ingin Anda gunakan dengan MetaMask" }, - "havingTroubleConnecting": { - "message": "Ada masalah saat menghubungkan?" - }, "here": { "message": "di sini", "description": "as in -click here- for more information (goes with troubleTokenBalances)" @@ -1108,9 +1099,6 @@ "optionalCurrencySymbol": { "message": "Simbol Mata Uang (opsional)" }, - "orderOneHere": { - "message": "Pesan Trezor atau Ledger dan simpan dana Anda di penyimpanan dingin" - }, "origin": { "message": "Asal" }, @@ -1192,9 +1180,6 @@ "readdToken": { "message": "Anda dapat menambahkan token ini kembali di masa mendatang dengan membuka “Tambahkan token” di menu opsi akun Anda." }, - "readyToConnect": { - "message": "Siap untuk Terhubung?" - }, "receive": { "message": "Terima" }, @@ -1495,24 +1480,6 @@ "statusNotConnected": { "message": "Tidak terhubung" }, - "step1HardwareWallet": { - "message": "1. Hubungkan Dompet Perangkat Keras" - }, - "step1HardwareWalletMsg": { - "message": "Hubungkan dompet perangkat keras Anda langsung ke komputer." - }, - "step2HardwareWallet": { - "message": "2. Pilih Akun" - }, - "step2HardwareWalletMsg": { - "message": "Pilih akun yang ingin Anda lihat. Anda hanya dapat memilih satu pada satu waktu." - }, - "step3HardwareWallet": { - "message": "3. Mulai menggunakan situs web3 dan lainnya!" - }, - "step3HardwareWalletMsg": { - "message": "Gunakan akun perangkat keras Anda seperti yang akan Anda lakukan dengan akun Ethereum lainnya. Hubungkan ke situs web3, kirim ETH, beli dan simpan token ERC20 dan token yang tidak dapat dipertukarkan seperti CryptoKitties." - }, "storePhrase": { "message": "Simpan frasa ini dalam pengelola kata sandi seperti 1Password." }, @@ -1597,9 +1564,6 @@ "swapFinalizing": { "message": "Menyelesaikan..." }, - "swapHighSlippageWarning": { - "message": "Jumlah slippage sangat tinggi. Pastikan Anda mengetahui yang Anda kerjakan!" - }, "swapLowSlippageError": { "message": "Transaksi bisa gagal, slippage maks. terlalu rendah." }, @@ -1693,9 +1657,6 @@ "swapSelectQuotePopoverDescription": { "message": "Di bawah ini adalah semua kuota yang dikumpulkan dari beberapa sumber likuiditas." }, - "swapSlippageTooLow": { - "message": "Slippage harus lebih besar dari nol" - }, "swapSource": { "message": "Sumber likuiditas" }, diff --git a/app/_locales/it/messages.json b/app/_locales/it/messages.json index 610583c2b..36212c4f6 100644 --- a/app/_locales/it/messages.json +++ b/app/_locales/it/messages.json @@ -503,9 +503,6 @@ "done": { "message": "Finito" }, - "dontHaveAHardwareWallet": { - "message": "Non hai un portafoglio hardware?" - }, "dontShowThisAgain": { "message": "Non mostrare di nuovo" }, @@ -730,9 +727,6 @@ "message": "Ottieni Get Ether da un faucet per $1", "description": "Displays network name for Ether faucet" }, - "getHelp": { - "message": "Aiuto." - }, "getStarted": { "message": "Inizia" }, @@ -754,9 +748,6 @@ "hardwareWalletsMsg": { "message": "Selezione un portafoglio hardware che vuoi utilizzare con MetaMask" }, - "havingTroubleConnecting": { - "message": "Problemi di connessione?" - }, "here": { "message": "qui", "description": "as in -click here- for more information (goes with troubleTokenBalances)" @@ -1123,9 +1114,6 @@ "optionalCurrencySymbol": { "message": "Simbolo (opzionale)" }, - "orderOneHere": { - "message": "Compra un Trezor o un Ledger e tieni i tuoi soldi al sicuro" - }, "origin": { "message": "Origine" }, @@ -1207,9 +1195,6 @@ "readdToken": { "message": "Puoi aggiungere nuovamente questo token in futuro andando in “Aggiungi token” nel menu delle opzioni del tuo account." }, - "readyToConnect": { - "message": "Pronto a Connetterti?" - }, "receive": { "message": "Ricevi" }, @@ -1510,24 +1495,6 @@ "statusNotConnected": { "message": "Non connesso" }, - "step1HardwareWallet": { - "message": "1. Connetti Portafoglio Hardware" - }, - "step1HardwareWalletMsg": { - "message": "Connetti il tuo portafoglio hardware al tuo computer." - }, - "step2HardwareWallet": { - "message": "2. Seleziona un Account" - }, - "step2HardwareWalletMsg": { - "message": "Selezione l'account che vuoi vedere. Puoi selezionarne solo uno alla volta." - }, - "step3HardwareWallet": { - "message": "3. Inizia a usare dApps e molto altro ancora!" - }, - "step3HardwareWalletMsg": { - "message": "Usa il tuo account hardware come utilizzeresti qualsiasi account Ethereum. Accedi alle dApps, invia Eth, compra e conserva token ERC20 e token non fungibili come CryptoKitties" - }, "storePhrase": { "message": "Conserva questa frase in un gestore di password come 1Password." }, @@ -1615,9 +1582,6 @@ "swapFinalizing": { "message": "Finalizzando..." }, - "swapHighSlippageWarning": { - "message": "L'importo di slippage è molto alto. Assicurati di sapere cosa stai facendo!" - }, "swapLowSlippageError": { "message": "La transazione può fallire, il massimo slippage è troppo basso." }, @@ -1735,9 +1699,6 @@ "swapSelectQuotePopoverDescription": { "message": "Sotto trovi tutte le quotazioni raccolte da multiple sorgenti di liquidità." }, - "swapSlippageTooLow": { - "message": "Lo slippage deve essere maggiore di zero" - }, "swapSource": { "message": "Sorgente di liquidità" }, diff --git a/app/_locales/ja/messages.json b/app/_locales/ja/messages.json index 253588c73..3c878c477 100644 --- a/app/_locales/ja/messages.json +++ b/app/_locales/ja/messages.json @@ -500,9 +500,6 @@ "done": { "message": "完了" }, - "dontHaveAHardwareWallet": { - "message": "ハードウェアウォレットをお持ちではありませんか?" - }, "dontShowThisAgain": { "message": "再度表示しない" }, @@ -727,9 +724,6 @@ "message": "$1 のFaucetでEtherを得ることができます。", "description": "Displays network name for Ether faucet" }, - "getHelp": { - "message": "サポートを受ける。" - }, "getStarted": { "message": "はじめる" }, @@ -751,9 +745,6 @@ "hardwareWalletsMsg": { "message": "MetaMaskに接続するハードウェアウォレットを選択してください" }, - "havingTroubleConnecting": { - "message": "接続に問題がありますか?" - }, "here": { "message": "こちら", "description": "as in -click here- for more information (goes with troubleTokenBalances)" @@ -1117,9 +1108,6 @@ "optionalCurrencySymbol": { "message": "通貨シンボル(オプション)" }, - "orderOneHere": { - "message": "Trezor又はLedgerを注文して資金をコールドストレージに保管できます" - }, "origin": { "message": "要求元" }, @@ -1201,9 +1189,6 @@ "readdToken": { "message": "アカウントオプションのメニューで\"トークンの追加\"を選択すると、後でこのトークンを戻すことができます。" }, - "readyToConnect": { - "message": "接続準備はよろしいですか?" - }, "receive": { "message": "受け取る" }, @@ -1504,24 +1489,6 @@ "statusNotConnected": { "message": "未接続" }, - "step1HardwareWallet": { - "message": "1.ハードウェア ウォレットの接続" - }, - "step1HardwareWalletMsg": { - "message": "コンピューターに直接ハードウェアウォレットを接続してください。" - }, - "step2HardwareWallet": { - "message": "2.アカウントを選択" - }, - "step2HardwareWalletMsg": { - "message": "読取るアカウントを1つ選択します。" - }, - "step3HardwareWallet": { - "message": "3.web3を使用してサイトに接続しましょう!" - }, - "step3HardwareWalletMsg": { - "message": "Ethereumアカウントと同じように、ハードウェアアカウントを使用します。web3サイトに接続してETH を送金し、ERC20トークンやCryptoKittiesのようなトークンを購入して保管できます。" - }, "storePhrase": { "message": "このフレーズを1Passwordのようなパスワードマネージャーに保管てください。" }, @@ -1609,9 +1576,6 @@ "swapFinalizing": { "message": "終了中..." }, - "swapHighSlippageWarning": { - "message": "非常に大きいスリッページ額です。本当に実行するか確認してください。" - }, "swapLowSlippageError": { "message": "トランザクションが失敗する可能性があります。最大スリッページが少なすぎます。" }, @@ -1723,9 +1687,6 @@ "swapSelectQuotePopoverDescription": { "message": "以下は複数の流動性ソースから収集したすべての見積です。" }, - "swapSlippageTooLow": { - "message": "スリッページは 0 より多くする必要があります。" - }, "swapSource": { "message": "流動性ソース" }, diff --git a/app/_locales/kn/messages.json b/app/_locales/kn/messages.json index 1dba0cbc9..cbe33d70e 100644 --- a/app/_locales/kn/messages.json +++ b/app/_locales/kn/messages.json @@ -308,9 +308,6 @@ "done": { "message": "ಮುಗಿದಿದೆ" }, - "dontHaveAHardwareWallet": { - "message": "ಹಾರ್ಡ್‌ವೇರ್ ವ್ಯಾಲೆಟ್‌ ಅನ್ನು ಹೊಂದಿಲ್ಲವೇ?" - }, "downloadGoogleChrome": { "message": "Google Chrome ಡೌನ್‌ಲೋಡ್ ಮಾಡಿ" }, @@ -443,9 +440,6 @@ "message": "$1 ಗಾಗಿ ಫಾಸೆಟ್‌ನಿಂದ ಎಥರ್ ಅನ್ನು ಪಡೆಯಿರಿ", "description": "Displays network name for Ether faucet" }, - "getHelp": { - "message": "ಸಹಾಯವನ್ನು ಪಡೆಯಿರಿ." - }, "getStarted": { "message": "ಪ್ರಾರಂಭಗೊಂಡಿದೆ" }, @@ -467,9 +461,6 @@ "hardwareWalletsMsg": { "message": "MetaMask ನೊಂದಿಗೆ ಬಳಸಲು ನೀವು ಇಷ್ಟಪಡುವ ಹಾರ್ಡ‌ವೇರ್ ವ್ಯಾಲೆಟ್ ಅನ್ನು ಆಯ್ಕೆಮಾಡಿ" }, - "havingTroubleConnecting": { - "message": "ಸಂಪರ್ಕಿಸುವಲ್ಲಿ ತೊಂದರೆ ಇದೆಯೇ?" - }, "here": { "message": "ಇಲ್ಲಿ", "description": "as in -click here- for more information (goes with troubleTokenBalances)" @@ -701,9 +692,6 @@ "optionalCurrencySymbol": { "message": "ಚಿಹ್ನೆ (ಐಚ್ಛಿಕ)" }, - "orderOneHere": { - "message": "ಟ್ರೆಜರ್ ಅಥವಾ ಲೆಡ್ಜರ್ ಅನ್ನು ಆರ್ಡರ್ ಮಾಡಿ ಮತ್ತು ನಿಮ್ಮ ನಿಧಿಗಳನ್ನು ಕೋಲ್ಡ್ ಸ್ಟೋರೇಜ್‌ನಲ್ಲಿರಿಸಿ" - }, "origin": { "message": "ಮೂಲ" }, @@ -763,9 +751,6 @@ "readdToken": { "message": "ನಿಮ್ಮ ಖಾತೆಗಳ ಆಯ್ಕೆಗಳ ಮೆನುವಿನಲ್ಲಿ \"ಟೋಕನ್ ಸೇರಿಸು\" ಗೆ ಹೋಗುವ ಮೂಲಕ ನೀವು ಈ ಟೋಕನ್ ಅನ್ನು ಭವಿಷ್ಯದಲ್ಲಿ ಮರಳಿ ಸೇರಿಸಬಹುದು." }, - "readyToConnect": { - "message": "ಸಂಪರ್ಕಿಸಲು ಸಿದ್ಧವೇ?" - }, "recents": { "message": "ಇತ್ತೀಚಿನವುಗಳು" }, @@ -988,24 +973,6 @@ "stateLogsDescription": { "message": "ರಾಜ್ಯದ ಲಾಗ್‌ಗಳು ನಿಮ್ಮ ಸಾರ್ವಜನಿಕ ಖಾತೆಯ ವಿಳಾಸಗಳು ಮತ್ತು ಕಳುಹಿಸಲಾದ ವಹಿವಾಟುಗಳನ್ನು ಹೊಂದಿರುತ್ತವೆ." }, - "step1HardwareWallet": { - "message": "1. ಹಾರ್ಡ್‌ವೆರ್ ವ್ಯಾಲೆಟ್ ಸಂಪರ್ಕಪಡಿಸಿ" - }, - "step1HardwareWalletMsg": { - "message": "ನಿಮ್ಮ ಹಾರ್ಡ್‌ವೇರ್ ವ್ಯಾಲೆಟ್ ಅನ್ನು ನೇರವಾಗಿ ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್‌ಗೆ ಸಂಪರ್ಕಿಸಿ." - }, - "step2HardwareWallet": { - "message": "2. ಖಾತೆಯನ್ನು ಆಯ್ಕೆಮಾಡಿ" - }, - "step2HardwareWalletMsg": { - "message": "ನೀವು ವೀಕ್ಷಿಸಲು ಬಯಸುವ ಖಾತೆಯನ್ನು ಆಯ್ಕೆಮಾಡಿ. ನೀವು ಒಮ್ಮೆಗೆ ಒಂದನ್ನು ಮಾತ್ರ ಆಯ್ಕೆಮಾಡಬಹುದು." - }, - "step3HardwareWallet": { - "message": "3. dApps ಮತ್ತು ಹೆಚ್ಚಿನದನ್ನು ಬಳಸಲು ಪ್ರಾರಂಭಿಸಿ!" - }, - "step3HardwareWalletMsg": { - "message": "ಯಾವುದೇ ಎಥೆರಿಯಮ್ ಖಾತೆಯೊಂದಿಗೆ ನಿಮ್ಮ ಹಾರ್ಡ್‌ವೇರ್ ಖಾತೆಯನ್ನು ಬಳಸಿ. dApps ಗೆ ಲಾಗಿನ್ ಮಾಡಿ, Eth ಕಳುಹಿಸಿ, ERC20 ಟೋಕನ್‌ಗಳನ್ನು ಮತ್ತು ಕ್ರಿಪ್ಟೋಕಿಟ್ಟೀಸ್‌ನಂತಹ ಫಂಗಿಬಲ್ ಟೋಕನ್‌ಗಳನ್ನು ಖರೀದಿಸಿ ಮತ್ತು ಸಂಗ್ರಹಿಸಿ." - }, "storePhrase": { "message": "ಈ ಫ್ರೇಸ್ ಅನ್ನು ಪಾಸ್‌ವರ್ಡ್ ನಿರ್ವಾಹಕದಲ್ಲಿ 1Password ರೂಪದಲ್ಲಿ ಸಂಗ್ರಹಿಸಿ." }, diff --git a/app/_locales/ko/messages.json b/app/_locales/ko/messages.json index 055ccc767..3aed947d8 100644 --- a/app/_locales/ko/messages.json +++ b/app/_locales/ko/messages.json @@ -491,9 +491,6 @@ "done": { "message": "완료" }, - "dontHaveAHardwareWallet": { - "message": "하드웨어 지갑이 없으신가요?" - }, "dontShowThisAgain": { "message": "이 메시지를 다시 표시하지 않음" }, @@ -718,9 +715,6 @@ "message": "$1용 포시트에서 Ether 얻기", "description": "Displays network name for Ether faucet" }, - "getHelp": { - "message": "도움을 받으세요." - }, "getStarted": { "message": "시작하기" }, @@ -742,9 +736,6 @@ "hardwareWalletsMsg": { "message": "MetaMask와 함께 사용할 하드웨어 지갑 선택" }, - "havingTroubleConnecting": { - "message": "연결에 문제가 있으신가요?" - }, "here": { "message": "여기", "description": "as in -click here- for more information (goes with troubleTokenBalances)" @@ -1108,9 +1099,6 @@ "optionalCurrencySymbol": { "message": "통화 기호(선택 사항)" }, - "orderOneHere": { - "message": "Trezor나 Ledger를 주문하고 자금을 냉동 창고에 보관하세요." - }, "origin": { "message": "원본" }, @@ -1192,9 +1180,6 @@ "readdToken": { "message": "나중에 계정 옵션 메뉴의 “토큰 추가”로 이동하면 이 토큰을 다시 추가할 수 있습니다." }, - "readyToConnect": { - "message": "연결할 준비가 되셨나요?" - }, "receive": { "message": "받기" }, @@ -1495,24 +1480,6 @@ "statusNotConnected": { "message": "연결되지 않음" }, - "step1HardwareWallet": { - "message": "1. 하드웨어 지갑 연결" - }, - "step1HardwareWalletMsg": { - "message": "하드웨어 지갑을 컴퓨터에 바로 연결합니다." - }, - "step2HardwareWallet": { - "message": "2. 계정 선택" - }, - "step2HardwareWalletMsg": { - "message": "확인할 계정을 선택하세요. 한 번에 하나만 선택할 수 있습니다." - }, - "step3HardwareWallet": { - "message": "3. web3 사이트 등을 사용해 시작하세요!" - }, - "step3HardwareWalletMsg": { - "message": "하드웨어 계정을 이더리움 계정에서처럼 사용하세요. web3 사이트에 연결하고, ETH를 보내고, ERC20 토큰 및 CryptoKitties 같은 대체 불가능 토큰을 구매하고 저장하세요." - }, "storePhrase": { "message": "이 구문을 1Password 같은 암호 관리자에 저장하세요." }, @@ -1597,9 +1564,6 @@ "swapFinalizing": { "message": "마무리 중..." }, - "swapHighSlippageWarning": { - "message": "슬리패지 금액이 아주 큽니다. 현재 어떤 작업을 하고 있는지 확인하세요!" - }, "swapLowSlippageError": { "message": "거래가 실패할 수도 있습니다. 최대 슬리패지가 너무 낮습니다." }, @@ -1693,9 +1657,6 @@ "swapSelectQuotePopoverDescription": { "message": "다음은 여러 유동성 소스에서 수집한 전체 견적입니다." }, - "swapSlippageTooLow": { - "message": "슬리패지는 0보다 커야 합니다." - }, "swapSource": { "message": "유동성 소스" }, diff --git a/app/_locales/lt/messages.json b/app/_locales/lt/messages.json index e4ca2146c..f18067844 100644 --- a/app/_locales/lt/messages.json +++ b/app/_locales/lt/messages.json @@ -308,9 +308,6 @@ "done": { "message": "Atlikta" }, - "dontHaveAHardwareWallet": { - "message": "Nėra aparatinės įrangos slaptažodinės?" - }, "downloadGoogleChrome": { "message": "Atsiunčiama „Google Chrome“" }, @@ -443,9 +440,6 @@ "message": "Gaukite eterių iš čiaupo $1", "description": "Displays network name for Ether faucet" }, - "getHelp": { - "message": "Gaukite pagalbos." - }, "getStarted": { "message": "Darbo pradžia" }, @@ -467,9 +461,6 @@ "hardwareWalletsMsg": { "message": "Pasirinkite aparatinės įrangos slaptažodinę, kurią pageidaujate naudoti su „MetaTask“" }, - "havingTroubleConnecting": { - "message": "Kyla problemų susiejant?" - }, "here": { "message": "čia", "description": "as in -click here- for more information (goes with troubleTokenBalances)" @@ -701,9 +692,6 @@ "optionalCurrencySymbol": { "message": "Simbolis (nebūtinas)" }, - "orderOneHere": { - "message": "Užsisakykite „Trezor“ arba „Ledger“ ir laikykite savo lėšas šaltojoje saugykloje" - }, "origin": { "message": "Kilmė" }, @@ -763,9 +751,6 @@ "readdToken": { "message": "Šį žetoną galite bet kada galite įtraukti ir vėl, tiesiog savo paskyros parinkčių meniu nueikite į „Įtraukti žetoną“." }, - "readyToConnect": { - "message": "Pasirengę prisijungti?" - }, "recents": { "message": "Naujausi" }, @@ -988,24 +973,6 @@ "stateLogsDescription": { "message": "Būsenos žurnaluose yra jūsų viešos paskyros adresų ir išsiųstų operacijų." }, - "step1HardwareWallet": { - "message": "1. Prijunkite aparatinės įrangos slaptažodinę" - }, - "step1HardwareWalletMsg": { - "message": "Prijunkite savo aparatinės įrangos slaptažodinę tiesiogiai prie savo kompiuterio." - }, - "step2HardwareWallet": { - "message": "2. Pasirinkite paskyrą" - }, - "step2HardwareWalletMsg": { - "message": "Pasirinkite norimą peržiūrėti sąskaitą. Vienu metu galima rinktis tik vieną." - }, - "step3HardwareWallet": { - "message": "3. Pradėkite naudoti decentralizuotas programas ir daugiau!" - }, - "step3HardwareWalletMsg": { - "message": "Naudokitės savo aparatinės įrangos paskyra kaip „Ethereum“ paskyra. Junkitės prie decentralizuotų programų, siųskite eterius, pirkite ir laikykite ERC20 žetonus ir nekeičiamus žetonus, tokius kaip „CryptoKitties“." - }, "storePhrase": { "message": "Laikykite šią frazę slaptažodžių tvarkyklėje kaip 1 slaptažodį." }, diff --git a/app/_locales/lv/messages.json b/app/_locales/lv/messages.json index 2a6e1dd8d..85848338a 100644 --- a/app/_locales/lv/messages.json +++ b/app/_locales/lv/messages.json @@ -308,9 +308,6 @@ "done": { "message": "Pabeigts" }, - "dontHaveAHardwareWallet": { - "message": "Nav aparatūras maka?" - }, "downloadGoogleChrome": { "message": "Lejupielādēt ar Google Chrome" }, @@ -439,9 +436,6 @@ "message": "Vai vēlaties $1 iegūt Ether no krāna?", "description": "Displays network name for Ether faucet" }, - "getHelp": { - "message": "Saņemt palīdzību." - }, "getStarted": { "message": "Sākt darbu" }, @@ -463,9 +457,6 @@ "hardwareWalletsMsg": { "message": "Atlasiet aparatūras maku lietošanai ar MetaMask" }, - "havingTroubleConnecting": { - "message": "Neizdodas pieslēgties?" - }, "here": { "message": "šeit", "description": "as in -click here- for more information (goes with troubleTokenBalances)" @@ -697,9 +688,6 @@ "optionalCurrencySymbol": { "message": "Simbols (neobligāti)" }, - "orderOneHere": { - "message": "Pasūtiet Trezor vai Ledger un glabājiet savus līdzekļus aukstajā krātuvē" - }, "origin": { "message": "Avots" }, @@ -759,9 +747,6 @@ "readdToken": { "message": "Jūs varat šo marķieri iestatīt atpakaļ nākotnē, konta opciju izvēlnē atverot \"Pievienot marķieri\"." }, - "readyToConnect": { - "message": "Vai esat gatavi izveidot savienojumu?" - }, "recents": { "message": "Nesenie" }, @@ -984,24 +969,6 @@ "stateLogsDescription": { "message": "Statusa žurnāli ietver publisko kontu adreses un nosūtītos darījumus." }, - "step1HardwareWallet": { - "message": "1. Pieslēgt aparatūras maku" - }, - "step1HardwareWalletMsg": { - "message": "Savienojiet aparatūras maku tieši ar datoru." - }, - "step2HardwareWallet": { - "message": "2. Atlasiet kontu" - }, - "step2HardwareWalletMsg": { - "message": "Atlasiet kontu, kuru vēlaties skatīt. Vienlaicīgi varat izvēlēties tikai vienu kontu." - }, - "step3HardwareWallet": { - "message": "3. Sāciet izmantot dApps un citas funkcijas!" - }, - "step3HardwareWalletMsg": { - "message": "Lietojiet aparatūras kontu līdzīgi citiem Ethereum kontiem. Pierakstieties dApps, sūtiet Eth, pērciet un glabājiet ERC20 žetonus un neatvietojamos žetonus, piemēram, CryptoKitties." - }, "storePhrase": { "message": "Saglabājiet šo frāzi paroļu pārvaldniekā, piemēram, 1Password." }, diff --git a/app/_locales/ms/messages.json b/app/_locales/ms/messages.json index 017b30211..483925f9c 100644 --- a/app/_locales/ms/messages.json +++ b/app/_locales/ms/messages.json @@ -305,9 +305,6 @@ "done": { "message": "Selesai" }, - "dontHaveAHardwareWallet": { - "message": "Tiada dompet perkakasan?" - }, "downloadGoogleChrome": { "message": "Muat Turun Google Chrome" }, @@ -433,9 +430,6 @@ "message": "Dapatkan Ether daripada pili untuk $1", "description": "Displays network name for Ether faucet" }, - "getHelp": { - "message": "Dapatkan Bantuan." - }, "getStarted": { "message": "Bermula" }, @@ -457,9 +451,6 @@ "hardwareWalletsMsg": { "message": "Pilih dompet perkakasan yang anda ingin gunakan dengan MetaMask" }, - "havingTroubleConnecting": { - "message": "Mengalami masalah untuk menyambungkan?" - }, "here": { "message": "di sini", "description": "as in -click here- for more information (goes with troubleTokenBalances)" @@ -678,9 +669,6 @@ "optionalCurrencySymbol": { "message": "Simbol (pilihan)" }, - "orderOneHere": { - "message": "Pesan Trezor atau Ledger dan simpan dana anda di dalam storan sejuk" - }, "origin": { "message": "Asal" }, @@ -740,9 +728,6 @@ "readdToken": { "message": "Anda boleh tambah token ini kembali pada masa depan dengan pergi ke \"Tambah token\" di dalam menu pilihan akaun anda." }, - "readyToConnect": { - "message": "Bersedia Menyambung?" - }, "recents": { "message": "Baru-baru ini" }, @@ -965,24 +950,6 @@ "stateLogsDescription": { "message": "Log keadaan mengandungi alamat akaun awam anda dan transaksi dihantar." }, - "step1HardwareWallet": { - "message": "1. Sambungkan Dompet Perkakasan" - }, - "step1HardwareWalletMsg": { - "message": "Sambungkan dompet perkakasan anda terus kepada komputer anda." - }, - "step2HardwareWallet": { - "message": "2. Pilih Akaun" - }, - "step2HardwareWalletMsg": { - "message": "Pilih akaun yang anda mahu lihat. Anda hanya boleh memilih satu pada suatu masa." - }, - "step3HardwareWallet": { - "message": "3. Mula menggunakan dApps dan banyak lagi!" - }, - "step3HardwareWalletMsg": { - "message": "Gunakan akaun perkakasan anda sepertimana anda menggunakan akaun Ethereum. Log masuk ke dalam dApps, hantar Eth, beli dan simpan token ERC20 serta token Tidak Mudah Tukar seperti CryptoKitties." - }, "storePhrase": { "message": "Simpan ungkapan ini di dalam pengurus kata laluan seperti 1Password." }, diff --git a/app/_locales/no/messages.json b/app/_locales/no/messages.json index 93055032a..a6bba8253 100644 --- a/app/_locales/no/messages.json +++ b/app/_locales/no/messages.json @@ -305,9 +305,6 @@ "done": { "message": "Ferdig" }, - "dontHaveAHardwareWallet": { - "message": "Har du ikke en hardware-lommebok?" - }, "downloadGoogleChrome": { "message": "Last ned Google Chrome " }, @@ -436,9 +433,6 @@ "message": "Få Ether fra en kran for $1", "description": "Displays network name for Ether faucet" }, - "getHelp": { - "message": "Få hjelp." - }, "getStarted": { "message": "Kom i gang" }, @@ -457,9 +451,6 @@ "hardwareWalletsMsg": { "message": "Velg maskinvarelommeboken som du vil bruke med MetaMask" }, - "havingTroubleConnecting": { - "message": "Har du problemer med å koble til?" - }, "here": { "message": "her", "description": "as in -click here- for more information (goes with troubleTokenBalances)" @@ -688,9 +679,6 @@ "optionalCurrencySymbol": { "message": "Symbol (valgfritt)" }, - "orderOneHere": { - "message": "Bestill en Trezor eller Ledger og oppbevar midlene dine i kjølerom" - }, "origin": { "message": "Opprinnelse" }, @@ -750,9 +738,6 @@ "readdToken": { "message": "Du kan legge til dette tokenet igjen i fremtiden ved å gå til \"Legg til token\" i menyen for kontoalternativer." }, - "readyToConnect": { - "message": "Klar til å koble til?" - }, "recents": { "message": "Nylige" }, @@ -969,24 +954,6 @@ "stateLogsDescription": { "message": "Tilstandslogger inneholder de offentlige kontoadressene og sendte transaksjoner." }, - "step1HardwareWallet": { - "message": "1. Koble til maskinvarelommebok" - }, - "step1HardwareWalletMsg": { - "message": "Koble hardware-lommebok din direkte til datamaskinen din." - }, - "step2HardwareWallet": { - "message": "2. Velg en konto" - }, - "step2HardwareWalletMsg": { - "message": "Velg den kontoen du ønsker å se. Du kan bare velge en av gangen." - }, - "step3HardwareWallet": { - "message": "3. Begynn å bruke dApps mer! " - }, - "step3HardwareWalletMsg": { - "message": "Bruk hardware-kontoen din slik du ville gjort med enhver Ethereumkonto. Logg på dApps, send Eth, kjøp og lagre ERC20-tokener og ikke-fungible tokener som CryptoKitties." - }, "storePhrase": { "message": "Lagre denne frasen i en passordbehandler slik som 1Password." }, diff --git a/app/_locales/pl/messages.json b/app/_locales/pl/messages.json index 6e6f4fbe7..e2f4db68c 100644 --- a/app/_locales/pl/messages.json +++ b/app/_locales/pl/messages.json @@ -308,9 +308,6 @@ "done": { "message": "Gotowe" }, - "dontHaveAHardwareWallet": { - "message": "Nie masz portfela sprzętowego?" - }, "downloadGoogleChrome": { "message": "Ściągnij Google Chrome" }, @@ -443,9 +440,6 @@ "message": "Zdobądź Eter ze źródła za $1", "description": "Displays network name for Ether faucet" }, - "getHelp": { - "message": "Po pomoc." - }, "getStarted": { "message": "Rozpocznij" }, @@ -467,9 +461,6 @@ "hardwareWalletsMsg": { "message": "Wybierz portfel sprzętowy, którego chcesz użyć z MetaMaskiem" }, - "havingTroubleConnecting": { - "message": "Problem z połączeniem?" - }, "here": { "message": "tutaj", "description": "as in -click here- for more information (goes with troubleTokenBalances)" @@ -695,9 +686,6 @@ "optionalCurrencySymbol": { "message": "Symbol (opcjonalnie)" }, - "orderOneHere": { - "message": "Zamów Trezor lub Ledger i trzymaj swoje środki w portfelu sprzętowym." - }, "origin": { "message": "Pochodzenie" }, @@ -757,9 +745,6 @@ "readdToken": { "message": "Możesz później ponownie dodać ten token poprzez \"Dodaj token\" w opcjach menu swojego konta." }, - "readyToConnect": { - "message": "Gotowy na połączenie?" - }, "recents": { "message": "Ostatnie" }, @@ -982,24 +967,6 @@ "stateLogsDescription": { "message": "Logi stanów zawierają Twoje publiczne adresy kont i wykonanych transakcji." }, - "step1HardwareWallet": { - "message": "1. Podłącz portfel sprzętowy" - }, - "step1HardwareWalletMsg": { - "message": "Połącz swój portfel sprzętowy z komputerem." - }, - "step2HardwareWallet": { - "message": "2. Wybierz konto" - }, - "step2HardwareWalletMsg": { - "message": "Wybierz konto, które chcesz przeglądać. Możesz wybrać tylko jedno konto w danym momencie." - }, - "step3HardwareWallet": { - "message": "3. Zacznij używać dystrybuowanych aplikacji (dApps) i wiele więcej!" - }, - "step3HardwareWalletMsg": { - "message": "Używaj swojego konta sprzętowego tak, jak używasz jakiegokolwiek konta z Ethereum. Loguj się do dystrybuowanych aplikacji (dApps), wysyłaj Eth, kupuj i przechowaj tokeny ERC20 i niewymienne tokeny, jak np. CryptoKitties." - }, "storePhrase": { "message": "Przechowuj tę frazę w menedżerze haseł, takim jak 1Password." }, diff --git a/app/_locales/pt_BR/messages.json b/app/_locales/pt_BR/messages.json index fe3bb1fa2..f5c307e86 100644 --- a/app/_locales/pt_BR/messages.json +++ b/app/_locales/pt_BR/messages.json @@ -302,9 +302,6 @@ "done": { "message": "Concluído" }, - "dontHaveAHardwareWallet": { - "message": "Não tem uma carteira física?" - }, "downloadGoogleChrome": { "message": "Baixar Google Chrome" }, @@ -437,9 +434,6 @@ "message": "Obtenha Ether em uma torneira para $1", "description": "Displays network name for Ether faucet" }, - "getHelp": { - "message": "Obtenha Ajuda." - }, "getStarted": { "message": "Primeiros passos" }, @@ -461,9 +455,6 @@ "hardwareWalletsMsg": { "message": "Selecione um hardware que gostaria de utilizar com o MetaMask" }, - "havingTroubleConnecting": { - "message": "Está tendo dificuldade para se conectar?" - }, "here": { "message": "aqui", "description": "as in -click here- for more information (goes with troubleTokenBalances)" @@ -689,9 +680,6 @@ "optionalCurrencySymbol": { "message": "Símbolo (opcional)" }, - "orderOneHere": { - "message": "Peça uma Trezor ou Ledger e guarde seus fundos off-line" - }, "origin": { "message": "Origem" }, @@ -751,9 +739,6 @@ "readdToken": { "message": "Você pode adicionar esse token novamente no futuro acessando \"Adicionar token\" no menu de opções da sua conta." }, - "readyToConnect": { - "message": "Pronto para Conectar?" - }, "recents": { "message": "Recentes" }, @@ -976,24 +961,6 @@ "stateLogsDescription": { "message": "Os registros de estado contêm seus endereços de conta pública e transações enviadas." }, - "step1HardwareWallet": { - "message": "1. Conectar Carteira Física" - }, - "step1HardwareWalletMsg": { - "message": "Conecte sua carteira de hardware diretamente ao seu computador." - }, - "step2HardwareWallet": { - "message": "2. Selecione uma Conta" - }, - "step2HardwareWalletMsg": { - "message": "Selecione a conta que você deseja ver. Você só pode escolher uma por vez." - }, - "step3HardwareWallet": { - "message": "3. Comece a usar dApps e muito mais!" - }, - "step3HardwareWalletMsg": { - "message": "Use sua conta física como faria com qualquer conta de Ethereum. Faça login em dApps, envie Eth, compre e guarde tokens ERC20 e Tokens Não Fungíveis, como CryptoKitties." - }, "storePhrase": { "message": "Guarde esta frase em um gerenciador de senhas como o 1Password." }, diff --git a/app/_locales/ro/messages.json b/app/_locales/ro/messages.json index f0e938835..444ba049f 100644 --- a/app/_locales/ro/messages.json +++ b/app/_locales/ro/messages.json @@ -308,9 +308,6 @@ "done": { "message": "Efectuat" }, - "dontHaveAHardwareWallet": { - "message": "Nu aveți portofel hardware?" - }, "downloadGoogleChrome": { "message": "Descărcare Google Chrome" }, @@ -436,9 +433,6 @@ "message": "Obțineți Ether de la un robinet pentru $1", "description": "Displays network name for Ether faucet" }, - "getHelp": { - "message": "Obțineți ajutor." - }, "getStarted": { "message": "Începe" }, @@ -457,9 +451,6 @@ "hardwareWalletsMsg": { "message": "Selectați un portofel hardware pe care doriți să îl folosiți cu MetaMask" }, - "havingTroubleConnecting": { - "message": "Aveți probleme cu conectarea?" - }, "here": { "message": "aici", "description": "as in -click here- for more information (goes with troubleTokenBalances)" @@ -688,9 +679,6 @@ "optionalCurrencySymbol": { "message": "Simbol (opțional)" }, - "orderOneHere": { - "message": "Comandați Trezor sau Ledger și țineți-vă fondurile la rece" - }, "origin": { "message": "Origine" }, @@ -750,9 +738,6 @@ "readdToken": { "message": "Puteți adăuga din nou acest indicativ în viitor accesând „Adăugați indicativ” din meniul de opțiuni al contului dvs." }, - "readyToConnect": { - "message": "Gata de conectare?" - }, "recents": { "message": "Recente" }, @@ -975,24 +960,6 @@ "stateLogsDescription": { "message": "Jurnalele de stare conțin adresele contului dvs. public și tranzacțiile trimise." }, - "step1HardwareWallet": { - "message": "1. Conectați portofel hardware" - }, - "step1HardwareWalletMsg": { - "message": "Conectați portofelul hardware direct la computer." - }, - "step2HardwareWallet": { - "message": "2. Selectați un cont" - }, - "step2HardwareWalletMsg": { - "message": "Selectați contul pe care vreți să îl vizualizați. Puteți alege doar câte unul odată." - }, - "step3HardwareWallet": { - "message": "3. Începeți să folosiți dApps și altele!" - }, - "step3HardwareWalletMsg": { - "message": "Folosiți-vă contul hardware la fel ca pe orice cont Ethereum. Conectați-vă la dApps, trimiteți Eth, cumpărați și stocați tokenuri ERC20 și tokenuri non-fungibile precum CryptoKitties." - }, "storePhrase": { "message": "Păstrați această expresie într-un program de gestionare a parolelor cum ar fi 1Password." }, diff --git a/app/_locales/ru/messages.json b/app/_locales/ru/messages.json index 5acbe608f..829cd5750 100644 --- a/app/_locales/ru/messages.json +++ b/app/_locales/ru/messages.json @@ -491,9 +491,6 @@ "done": { "message": "Выполнено" }, - "dontHaveAHardwareWallet": { - "message": "У вас нет аппаратного кошелька?" - }, "dontShowThisAgain": { "message": "Больше не показывать это сообщение" }, @@ -718,9 +715,6 @@ "message": "Получите Ether из крана для $1", "description": "Displays network name for Ether faucet" }, - "getHelp": { - "message": "Получить справку." - }, "getStarted": { "message": "Начать работу" }, @@ -742,9 +736,6 @@ "hardwareWalletsMsg": { "message": "Выберите аппаратный кошелек, который вы хотите использовать с MetaMask" }, - "havingTroubleConnecting": { - "message": "Проблемы с подключением?" - }, "here": { "message": "здесь", "description": "as in -click here- for more information (goes with troubleTokenBalances)" @@ -1108,9 +1099,6 @@ "optionalCurrencySymbol": { "message": "Символ валюты (необязательно)" }, - "orderOneHere": { - "message": "Закажите Trezor или Ledger и храните свои средства в холодном хранилище" - }, "origin": { "message": "Источник" }, @@ -1192,9 +1180,6 @@ "readdToken": { "message": "Вы можете снова добавить этот токен в будущем, выбрав «Добавить токен» в меню опций вашего счета." }, - "readyToConnect": { - "message": "Готовы подключиться?" - }, "receive": { "message": "Получить" }, @@ -1495,24 +1480,6 @@ "statusNotConnected": { "message": "Не подключен" }, - "step1HardwareWallet": { - "message": "1. Подключить аппаратный кошелек" - }, - "step1HardwareWalletMsg": { - "message": "Подключите свой аппаратный кошелек напрямую к компьютеру." - }, - "step2HardwareWallet": { - "message": "2. Выберите счет" - }, - "step2HardwareWalletMsg": { - "message": "Выберите желаемый счет для просмотра. Вы можете выбирать только по одному." - }, - "step3HardwareWallet": { - "message": "3. Начните использовать сайты web3 и другое!" - }, - "step3HardwareWalletMsg": { - "message": "Используйте свой аппаратный счет, как обычный счет Ethereum. Подключайтесь к сайтам web3, отправляйте ETH, покупайте и храните токены ERC20 и незаменяемые токены, такие как CryptoKitties." - }, "storePhrase": { "message": "Сохраните эту фразу в диспетчере паролей, например в 1Password." }, @@ -1597,9 +1564,6 @@ "swapFinalizing": { "message": "Завершение..." }, - "swapHighSlippageWarning": { - "message": "Величина проскальзывания очень велика. Убедитесь, что вы знаете, что делаете!" - }, "swapLowSlippageError": { "message": "Транзакции могут завершиться неудачей, максимальное проскальзывание слишком мало." }, @@ -1693,9 +1657,6 @@ "swapSelectQuotePopoverDescription": { "message": "Ниже приведены все котировки, собранные из нескольких источников ликвидности." }, - "swapSlippageTooLow": { - "message": "Проскальзывание должно быть больше нуля" - }, "swapSource": { "message": "Источник ликвидности" }, diff --git a/app/_locales/sk/messages.json b/app/_locales/sk/messages.json index 7f2e6718d..e23dfb73e 100644 --- a/app/_locales/sk/messages.json +++ b/app/_locales/sk/messages.json @@ -302,9 +302,6 @@ "done": { "message": "Hotovo" }, - "dontHaveAHardwareWallet": { - "message": "Nemáte hardvérovú peňaženku?" - }, "downloadGoogleChrome": { "message": "Stiahnuť Google Chrome" }, @@ -437,9 +434,6 @@ "message": "Získejte Ether z faucetu za $1.", "description": "Displays network name for Ether faucet" }, - "getHelp": { - "message": "Získajte pomoc." - }, "getStarted": { "message": "Začať" }, @@ -461,9 +455,6 @@ "hardwareWalletsMsg": { "message": "Vyberte hardvérovú peňaženku, ktorú chcete používať s MetaMask" }, - "havingTroubleConnecting": { - "message": "Máte problémy s pripojením?" - }, "here": { "message": "zde", "description": "as in -click here- for more information (goes with troubleTokenBalances)" @@ -670,9 +661,6 @@ "optionalCurrencySymbol": { "message": "Symbol (voliteľné)" }, - "orderOneHere": { - "message": "Objednajte si Trezor alebo Hlavnú knihu a uschovajte svoje prostriedky v sklade" - }, "origin": { "message": "Pôvod" }, @@ -732,9 +720,6 @@ "readdToken": { "message": "Tento token můžete v budoucnu přidat zpět s „Přidat token“ v nastavení účtu." }, - "readyToConnect": { - "message": "Pripravení na pripojenie?" - }, "recents": { "message": "Posledné" }, @@ -951,24 +936,6 @@ "stateLogsDescription": { "message": "Stavové protokoly obsahují vaše veřejné adresy účtů a odeslané transakce." }, - "step1HardwareWallet": { - "message": "1. Pripojiť hardvérovú peňaženku" - }, - "step1HardwareWalletMsg": { - "message": "Pripojte hardvérovú peňaženku priamo k počítaču." - }, - "step2HardwareWallet": { - "message": "2. Vybrať účet" - }, - "step2HardwareWalletMsg": { - "message": "Vyberte účet, ktorý chcete zobraziť. Naraz si môžete vybrať iba jeden." - }, - "step3HardwareWallet": { - "message": "3. Začať používať dApps a ďalšie!" - }, - "step3HardwareWalletMsg": { - "message": "Použite svoj hardvérový účet, ako keby ste použili akýkoľvek účet Ethereum. Prihláste sa do Dapps, pošlite Eth, nakupujte a ukladajte tokeny ERC20 a nezameniteľné tokeny ako CryptoKitties." - }, "storePhrase": { "message": "Túto frázu uložte do správcu hesiel ako 1Password." }, diff --git a/app/_locales/sl/messages.json b/app/_locales/sl/messages.json index ed36f5ff9..47a5a1737 100644 --- a/app/_locales/sl/messages.json +++ b/app/_locales/sl/messages.json @@ -308,9 +308,6 @@ "done": { "message": "Končano" }, - "dontHaveAHardwareWallet": { - "message": "Nimate strojne denarnice?" - }, "downloadGoogleChrome": { "message": "Prenesi Google Chrome" }, @@ -461,9 +458,6 @@ "hardwareWalletsMsg": { "message": "Izberite vrsto strojne denarnice" }, - "havingTroubleConnecting": { - "message": "Imate težave?" - }, "here": { "message": "tukaj", "description": "as in -click here- for more information (goes with troubleTokenBalances)" @@ -686,9 +680,6 @@ "optionalCurrencySymbol": { "message": "Simbol (nezahtevano)" }, - "orderOneHere": { - "message": "Naročite Trezor ali Ledger i n zavarujte svoje premoženje s strojno denarnico" - }, "origin": { "message": "Izvor" }, @@ -748,9 +739,6 @@ "readdToken": { "message": "Ta žeton lahko dodate tudi kasneje z uporabo gumba “Dodaj žeton” v možnostih vašega računa." }, - "readyToConnect": { - "message": "Pripravljeni na povezovanje?" - }, "recents": { "message": "Nedavno" }, @@ -970,24 +958,6 @@ "stateLogsDescription": { "message": "State vsebujejo vaš javni nasklov in zgodovino transakcij." }, - "step1HardwareWallet": { - "message": "1. Povežite strojno denarnico" - }, - "step1HardwareWalletMsg": { - "message": "Z računalnikom povežite strojno denarnico." - }, - "step2HardwareWallet": { - "message": "2. Izberite račun" - }, - "step2HardwareWalletMsg": { - "message": "Izberite račun, ki ga želute uporabiti. Trenutno lahko izberete le en račun na enkrat." - }, - "step3HardwareWallet": { - "message": "3. Začnite uporabljati dApps in več!" - }, - "step3HardwareWalletMsg": { - "message": "Uporabite strojno denarnico kot katerikoli drug Ethereum račun. Prijavite se v dApps, pošljite Ether in ERC20 žetone in žetone kot CryptoKitties." - }, "storePhrase": { "message": "To geslo shranite v upravitelja gesel, kot je 1Password." }, diff --git a/app/_locales/sr/messages.json b/app/_locales/sr/messages.json index 086783b38..7cbcdf175 100644 --- a/app/_locales/sr/messages.json +++ b/app/_locales/sr/messages.json @@ -305,9 +305,6 @@ "done": { "message": "Gotovo" }, - "dontHaveAHardwareWallet": { - "message": "Nemate hardverski novčanik?" - }, "downloadGoogleChrome": { "message": "Preuzmi Google Chrome" }, @@ -440,9 +437,6 @@ "message": "Preuzmite Ether sa slavine za $1", "description": "Displays network name for Ether faucet" }, - "getHelp": { - "message": "Potražite pomoć." - }, "getStarted": { "message": "Започнимо" }, @@ -464,9 +458,6 @@ "hardwareWalletsMsg": { "message": "Izaberite hardverski novčanik koji biste voleli da koristite sa MetaMask-om" }, - "havingTroubleConnecting": { - "message": "Da li imate problem sa povezivanjem?" - }, "here": { "message": "ovde", "description": "as in -click here- for more information (goes with troubleTokenBalances)" @@ -692,9 +683,6 @@ "optionalCurrencySymbol": { "message": "Simbol (opciono)" }, - "orderOneHere": { - "message": "Naručite Trezor ili Ledger i čuvajte svoja sredstva u hladnom skladištu" - }, "origin": { "message": "Извор" }, @@ -754,9 +742,6 @@ "readdToken": { "message": "U budućnosti možete vratiti ovaj token tako što ćete otvoriti „Dodaj token“ u meniju opcija vašeg naloga." }, - "readyToConnect": { - "message": "Spremni za povezivanje?" - }, "recents": { "message": "Skorašnje" }, @@ -979,24 +964,6 @@ "stateLogsDescription": { "message": "Dnevnici stanja sadrže adrese vaših javnih naloga i poslatih transakcija." }, - "step1HardwareWallet": { - "message": "1. Poveži hardverski novčanik" - }, - "step1HardwareWalletMsg": { - "message": "Povežite svoj hardverski novčanik direktno sa kompjuterom." - }, - "step2HardwareWallet": { - "message": "2. Izaberite nalog" - }, - "step2HardwareWalletMsg": { - "message": "Izaberite nalog koji želite da pogledatee. Možete izabrati samo po jedan nalog." - }, - "step3HardwareWallet": { - "message": "3. Počnite da koristite dApps i još mnogo toga!" - }, - "step3HardwareWalletMsg": { - "message": "Koristite nalog na vašem hardveru isto onako kako biste koristili bilo koji Ethereum nalog. Prijavite se na dApps, šaljite Eth, kupujte i skladištite ERC20 tokene i nezamenljive tokene poput CryptoKitties." - }, "storePhrase": { "message": "Čuvajte ovaj izraz u menadžeru šifri kao što je 1Password." }, diff --git a/app/_locales/sv/messages.json b/app/_locales/sv/messages.json index 9a8c4fac2..bfa2e92f6 100644 --- a/app/_locales/sv/messages.json +++ b/app/_locales/sv/messages.json @@ -302,9 +302,6 @@ "done": { "message": "Klart" }, - "dontHaveAHardwareWallet": { - "message": "Har du inte en hårdvaruplånbok?" - }, "downloadGoogleChrome": { "message": "Ladda ner Google Chrome" }, @@ -433,9 +430,6 @@ "message": "Få Ether från en kran för $1", "description": "Displays network name for Ether faucet" }, - "getHelp": { - "message": "Få hjälp." - }, "getStarted": { "message": "Komma igång" }, @@ -457,9 +451,6 @@ "hardwareWalletsMsg": { "message": "Välj en hårdvaruplånbok som du vill använda med MetaMask" }, - "havingTroubleConnecting": { - "message": "Har du problem att ansluta?" - }, "here": { "message": "här", "description": "as in -click here- for more information (goes with troubleTokenBalances)" @@ -685,9 +676,6 @@ "optionalCurrencySymbol": { "message": "Symbol (frivillig)" }, - "orderOneHere": { - "message": "Beställ en Trezor eller Ledger och håll dina medel på is" - }, "origin": { "message": "Ursprung" }, @@ -747,9 +735,6 @@ "readdToken": { "message": "Du kan lägga till denna token i framtiden genom att välja \"Lägg till token\" i kontots alternativmeny." }, - "readyToConnect": { - "message": "Redo att ansluta?" - }, "recents": { "message": "Senaste" }, @@ -972,24 +957,6 @@ "stateLogsDescription": { "message": "Statusloggar innehåller dina publika kontoadresser och skickade transaktioner." }, - "step1HardwareWallet": { - "message": "1. Anslut hårdvaruplånbok" - }, - "step1HardwareWalletMsg": { - "message": "Koppla din hårdvaruplånbok direkt till din dator" - }, - "step2HardwareWallet": { - "message": "2. Välj ett konto" - }, - "step2HardwareWalletMsg": { - "message": "Välj det konto du vill visa. Du kan bara välja ett åt gången." - }, - "step3HardwareWallet": { - "message": "3. Börja använda dApps och mer!" - }, - "step3HardwareWalletMsg": { - "message": "Använd ditt hårdvarukonto som du skulle använda andra Ethereum-konton. Logga in i dAppar, skicka ETH, köp och förvara ERC20-tokens och Non-Fungible tokens som CryptoKitties." - }, "storePhrase": { "message": "Lagra denna fras i en lösenordshanterare såsom 1Password." }, diff --git a/app/_locales/sw/messages.json b/app/_locales/sw/messages.json index 588071d29..f4d9acc5b 100644 --- a/app/_locales/sw/messages.json +++ b/app/_locales/sw/messages.json @@ -302,9 +302,6 @@ "done": { "message": "Imekamilika" }, - "dontHaveAHardwareWallet": { - "message": "Huna waleti ya programu maunzi?" - }, "downloadGoogleChrome": { "message": "Pakua Google chrome" }, @@ -433,9 +430,6 @@ "message": "Pata Ether kutoka kwenye mfereji $1", "description": "Displays network name for Ether faucet" }, - "getHelp": { - "message": "Pata Msaada" - }, "getStarted": { "message": "Anza" }, @@ -457,9 +451,6 @@ "hardwareWalletsMsg": { "message": "Chagua waleti ya programu maunzi ambayo ungependa kutumia kwenye MetaMask" }, - "havingTroubleConnecting": { - "message": "Je, unapata shida kuunganisha?" - }, "here": { "message": "hapa", "description": "as in -click here- for more information (goes with troubleTokenBalances)" @@ -679,9 +670,6 @@ "optionalCurrencySymbol": { "message": "Ishara (hiari)" }, - "orderOneHere": { - "message": "Agiza Trezor au Leja na weka fedha zako kwenye ifadhi ya baridi" - }, "origin": { "message": "Asili" }, @@ -741,9 +729,6 @@ "readdToken": { "message": "Unaweza kuongeza tena kianzio hiki hapo baadaye kwa kwenda kwenye \"Ongeza kianzio\" kwenye machaguo yako ya menyu ya akaunti." }, - "readyToConnect": { - "message": "Uko tayari Kuunganisha?" - }, "recents": { "message": "Za hivi karibuni" }, @@ -966,24 +951,6 @@ "stateLogsDescription": { "message": "Kumbukumbu za hali zinajumusiha anwani zako za akaunti za umma na miamala iliyotumwa." }, - "step1HardwareWallet": { - "message": "1. Unganisha Programu Maunzi ya Waleti" - }, - "step1HardwareWalletMsg": { - "message": "Unganisha programu maunzi yako ya waleti moja kwa moja kwenye kompyuta yako." - }, - "step2HardwareWallet": { - "message": "2. Chagua Akaunto" - }, - "step2HardwareWalletMsg": { - "message": "Chagua akaunti unayotaka kutazama. Unaweza kuchagua moja tu kwa wakati mmoja." - }, - "step3HardwareWallet": { - "message": "3. Anza kutumia dApps na zaidi!" - }, - "step3HardwareWalletMsg": { - "message": "Tumia akaunti yako ya programu maunzi kama ambavyo ungetumia kwa akaunti ya Ethereum. Ingia kwenye dApps, tuma Eth, nunua na hifadhi vianzio vya ERC20 na Vianzio visivyobadilishika kama vile CryptoKitties." - }, "storePhrase": { "message": "Hifadhi kirai hiki kwenye kidhibiti nenosiri kama vile 1Password." }, diff --git a/app/_locales/th/messages.json b/app/_locales/th/messages.json index b1d271c6f..324722400 100644 --- a/app/_locales/th/messages.json +++ b/app/_locales/th/messages.json @@ -148,9 +148,6 @@ "done": { "message": "เสร็จสิ้น" }, - "dontHaveAHardwareWallet": { - "message": "ไม่มี Hardware Wallet ใช่ไหม" - }, "downloadSecretBackup": { "message": "ดาวน์โหลด Phrase แบ็คอัพลับนี้และเก็บรักษาไว้ให้ปลอดภัยในฮาร์ดดิสก์หรืออุปกรณ์เก็บข้อมูลภายนอกที่มีการเข้ารหัส" }, @@ -465,15 +462,6 @@ "stateLogsDescription": { "message": "บันทึกของสถานะประกอบด้วยแอดแดรสสาธารณะและธุรกรรมที่ส่ง" }, - "step1HardwareWallet": { - "message": "1. เชื่อมต่อ Hardware Wallet" - }, - "step2HardwareWallet": { - "message": "2. เลือกบัญชี" - }, - "step3HardwareWalletMsg": { - "message": "ใช้บัญชีฮาร์ดแวร์ของคุณเช่นเดียวกับการใช้กับบัญชี Ethereum ล็อกอินเข้าสู่ dApp ส่ง Eth ซื้อและเก็บโทเคน ERC20 และโทเคนแบบ Non-Fungible เช่น CryptoKitties" - }, "storePhrase": { "message": "เก็บ Phrase นี้ในตัวจัดการรหัสผ่าน เช่น 1Password" }, diff --git a/app/_locales/tl/messages.json b/app/_locales/tl/messages.json index 6318b3b2c..fff59abd5 100644 --- a/app/_locales/tl/messages.json +++ b/app/_locales/tl/messages.json @@ -491,9 +491,6 @@ "done": { "message": "Tapos na" }, - "dontHaveAHardwareWallet": { - "message": "Wala ka bang hardware wallet?" - }, "dontShowThisAgain": { "message": "Huwag itong ipaklita ulit" }, @@ -718,9 +715,6 @@ "message": "Kunin ang Ether mula sa isang faucet sa halagang $1", "description": "Displays network name for Ether faucet" }, - "getHelp": { - "message": "Humingi ng Tulong." - }, "getStarted": { "message": "Magsimula" }, @@ -742,9 +736,6 @@ "hardwareWalletsMsg": { "message": "Pumili ng hardware wallet na gusto mong gamitin kasama ng MetaMask" }, - "havingTroubleConnecting": { - "message": "Nagkakaproblema ka ba sa pagkonekta?" - }, "here": { "message": "dito", "description": "as in -click here- for more information (goes with troubleTokenBalances)" @@ -1105,9 +1096,6 @@ "optionalCurrencySymbol": { "message": "Simbolo ng Currency (opsyonal)" }, - "orderOneHere": { - "message": "Mag-order ng Trezor o Ledger at itabi ang mga pondo mo sa malamig na storage" - }, "origin": { "message": "Pinagmulan" }, @@ -1189,9 +1177,6 @@ "readdToken": { "message": "Puwede mong ibalik ang token na ito sa hinaharap sa pamamagitan ng pagpunta sa “Magdagdag ng token” sa menu ng mga opsyon sa iyong account." }, - "readyToConnect": { - "message": "Handa ka na bang kumonekta?" - }, "receive": { "message": "Tumanggap" }, @@ -1492,24 +1477,6 @@ "statusNotConnected": { "message": "Hindi nakakonekta" }, - "step1HardwareWallet": { - "message": "1. Ikonekta ang Hardware Wallet" - }, - "step1HardwareWalletMsg": { - "message": "Direktang ikonekta ang wallet ng iyong hardware sa computer mo." - }, - "step2HardwareWallet": { - "message": "2. Pumili ng Account" - }, - "step2HardwareWalletMsg": { - "message": "Piliin ang account na gusto mong tingnan. Puwede ka lang pumili ng isa sa isang pagkakataon." - }, - "step3HardwareWallet": { - "message": "3. Simulang gamitin ang mga web3 site at higit pa!" - }, - "step3HardwareWalletMsg": { - "message": "Gamitin ang account ng iyong hardware sa parehong paraan ng paggamit mo sa Ethereum account. Kumonekta sa mga web3 site, magpadala ng ETH, bumili at mag-store ng mga ERC20 token at non-fungible token gaya ng CryptoKitties." - }, "storePhrase": { "message": "I-store ang phrase na ito sa isang password manager gaya ng 1Password." }, @@ -1594,9 +1561,6 @@ "swapFinalizing": { "message": "Isinasapinal..." }, - "swapHighSlippageWarning": { - "message": "Sobrang laki ng halaga ng slippage. Tiyaking alam mo ang ginagawa mo!" - }, "swapLowSlippageError": { "message": "Maaaring hindi magtagumpay ang transaksyon, masyadong mababa ang max na slippage." }, @@ -1690,9 +1654,6 @@ "swapSelectQuotePopoverDescription": { "message": "Makikita sa ibaba ang lahat ng quote na nakuha mula sa maraming pinagkukunan ng liquidity." }, - "swapSlippageTooLow": { - "message": "Dapat ay mas malaki sa zero ang slippage" - }, "swapSource": { "message": "Pinagkunan ng liquidity" }, diff --git a/app/_locales/uk/messages.json b/app/_locales/uk/messages.json index 3e5773e42..27766159a 100644 --- a/app/_locales/uk/messages.json +++ b/app/_locales/uk/messages.json @@ -308,9 +308,6 @@ "done": { "message": "Готово" }, - "dontHaveAHardwareWallet": { - "message": "Не маєте апаратного гаманця?" - }, "downloadGoogleChrome": { "message": "Завантажити Гугл Хром" }, @@ -443,9 +440,6 @@ "message": "Отримайте Ether з крану за $1", "description": "Displays network name for Ether faucet" }, - "getHelp": { - "message": "Отримати допомогу." - }, "getStarted": { "message": "Почати" }, @@ -467,9 +461,6 @@ "hardwareWalletsMsg": { "message": "Оберіть апаратний гаманець, який ви хочете використовувати з MetaMask" }, - "havingTroubleConnecting": { - "message": "Проблеми при підключенні?" - }, "here": { "message": "тут", "description": "as in -click here- for more information (goes with troubleTokenBalances)" @@ -701,9 +692,6 @@ "optionalCurrencySymbol": { "message": "Символ (не обов'язково)" }, - "orderOneHere": { - "message": "Замовте Trezor або Ledger та зберігайте ваші кошти у холодному сховищі" - }, "origin": { "message": "Походження" }, @@ -763,9 +751,6 @@ "readdToken": { "message": "Ви можете знову додати цей токен у меню облікового запису у розділі “Додати токен”. " }, - "readyToConnect": { - "message": "Готові підключитися?" - }, "recents": { "message": "Останні" }, @@ -988,24 +973,6 @@ "stateLogsDescription": { "message": "Логи стану містять ваші публічні адреси облікового запису та надіслані транзакції." }, - "step1HardwareWallet": { - "message": "1. Приєднайте апаратний гаманець" - }, - "step1HardwareWalletMsg": { - "message": "Під'єднайте ваш апаратний гаманець безпосередньо до вашого комп'ютера." - }, - "step2HardwareWallet": { - "message": "2. Оберіть обліковий запис" - }, - "step2HardwareWalletMsg": { - "message": "Оберіть обліковий запис, який бажаєте переглянути. Ви можете вибрати лише один." - }, - "step3HardwareWallet": { - "message": "3. Почніть користуватись dApps та більше!" - }, - "step3HardwareWalletMsg": { - "message": "Використовуйте ваш апаратний обліковий запис, як би ви використовували будь-який обліковий запис Ethereum. Увійдіть в dApps, надсилайте Eth, купуйте та зберігайте токени ERC20 та токени, які не є взаємозамінними, такі як CryptoKitties." - }, "storePhrase": { "message": "Зберігайте цю фразу у менеджері паролів, як 1Password." }, diff --git a/app/_locales/vi/messages.json b/app/_locales/vi/messages.json index cab617c40..128d82374 100644 --- a/app/_locales/vi/messages.json +++ b/app/_locales/vi/messages.json @@ -491,9 +491,6 @@ "done": { "message": "Hoàn tất" }, - "dontHaveAHardwareWallet": { - "message": "Bạn không có ví cứng?" - }, "dontShowThisAgain": { "message": "Không hiển thị lại" }, @@ -718,9 +715,6 @@ "message": "Nhận Ether từ một vòi dành cho $1", "description": "Displays network name for Ether faucet" }, - "getHelp": { - "message": "Nhận trợ giúp." - }, "getStarted": { "message": "Bắt đầu" }, @@ -742,9 +736,6 @@ "hardwareWalletsMsg": { "message": "Chọn một ví cứng mà bạn muốn sử dụng với MetaMask" }, - "havingTroubleConnecting": { - "message": "Bạn đang gặp sự cố với việc kết nối?" - }, "here": { "message": "tại đây", "description": "as in -click here- for more information (goes with troubleTokenBalances)" @@ -1108,9 +1099,6 @@ "optionalCurrencySymbol": { "message": "Ký hiệu tiền tệ (không bắt buộc)" }, - "orderOneHere": { - "message": "Đặt mua một ví Trezor hoặc Ledger và giữ tiền của bạn trong ví lưu trữ lạnh" - }, "origin": { "message": "Nguồn gốc" }, @@ -1192,9 +1180,6 @@ "readdToken": { "message": "Bạn có thể thêm lại token này trong tương lai bằng cách chuyển đến mục “Thêm token” trong trình đơn tùy chọn tài khoản." }, - "readyToConnect": { - "message": "Bạn đã sẵn sàng kết nối chưa?" - }, "receive": { "message": "Nhận" }, @@ -1495,24 +1480,6 @@ "statusNotConnected": { "message": "Chưa kết nối" }, - "step1HardwareWallet": { - "message": "1. Kết nối với ví cứng" - }, - "step1HardwareWalletMsg": { - "message": "Kết nối ví cứng của bạn trực tiếp với máy tính." - }, - "step2HardwareWallet": { - "message": "2. Chọn một tài khoản" - }, - "step2HardwareWalletMsg": { - "message": "Chọn tài khoản bạn muốn xem. Bạn chỉ chọn được một tài khoản tại một thời điểm." - }, - "step3HardwareWallet": { - "message": "3. Bắt đầu sử dụng các trang web trên web3 và nhiều hơn thế!" - }, - "step3HardwareWalletMsg": { - "message": "Sử dụng cùng một tài khoản ví cứng mà bạn sẽ dùng với mọi tài khoản Ethereum của mình. Kết nối với các trang web trên web3, gửi ETH, mua và lưu trữ token ERC20 cũng như token không thể thay thế, chẳng hạn như CryptoKitties." - }, "storePhrase": { "message": "Lưu cụm mật khẩu này trong trình quản lý mật khẩu chẳng hạn như 1Password." }, @@ -1597,9 +1564,6 @@ "swapFinalizing": { "message": "Đang hoàn tất..." }, - "swapHighSlippageWarning": { - "message": "Số tiền trượt giá rất cao. Hãy chắc chắn rằng bạn hiểu những gì mình đang làm!" - }, "swapLowSlippageError": { "message": "Giao dịch có thể không thành công, mức trượt giá tối đa quá thấp." }, @@ -1693,9 +1657,6 @@ "swapSelectQuotePopoverDescription": { "message": "Dưới đây là tất cả các báo giá thu thập từ nhiều nguồn thanh khoản." }, - "swapSlippageTooLow": { - "message": "Mức trượt giá phải lớn hơn 0" - }, "swapSource": { "message": "Nguồn thanh khoản" }, diff --git a/app/_locales/zh_CN/messages.json b/app/_locales/zh_CN/messages.json index 222cbf47f..d8a102716 100644 --- a/app/_locales/zh_CN/messages.json +++ b/app/_locales/zh_CN/messages.json @@ -500,9 +500,6 @@ "done": { "message": "完成" }, - "dontHaveAHardwareWallet": { - "message": "没有硬件钱包?" - }, "dontShowThisAgain": { "message": "不再显示" }, @@ -727,9 +724,6 @@ "message": "从水管获取 $1 网络的 Ether", "description": "Displays network name for Ether faucet" }, - "getHelp": { - "message": "获取帮助。" - }, "getStarted": { "message": "开始使用" }, @@ -751,9 +745,6 @@ "hardwareWalletsMsg": { "message": "选择希望用于 MetaMask 的硬件钱包" }, - "havingTroubleConnecting": { - "message": "连接出现问题?" - }, "here": { "message": "这里", "description": "as in -click here- for more information (goes with troubleTokenBalances)" @@ -1117,9 +1108,6 @@ "optionalCurrencySymbol": { "message": "符号(选填)" }, - "orderOneHere": { - "message": "订购 Trezor 或 Ledger ,将个人资金进行冷存储" - }, "origin": { "message": "来源" }, @@ -1201,9 +1189,6 @@ "readdToken": { "message": "之后您还可以通过帐户选项菜单中的“添加代币”来添加此代币。" }, - "readyToConnect": { - "message": "是否准备连接?" - }, "receive": { "message": "接收" }, @@ -1504,24 +1489,6 @@ "statusNotConnected": { "message": "未连接" }, - "step1HardwareWallet": { - "message": "1. 连接硬件钱包" - }, - "step1HardwareWalletMsg": { - "message": "将您的硬件钱包直接连接到电脑上。" - }, - "step2HardwareWallet": { - "message": "2. 选择账户" - }, - "step2HardwareWalletMsg": { - "message": "请选择您想查看的账户。每次只能选择一个账户。" - }, - "step3HardwareWallet": { - "message": "3. 开始使用 web3 站点和更多功能!" - }, - "step3HardwareWalletMsg": { - "message": "使用您的硬件钱包,操作与以太坊账户制作相同。登录 dApps,发送 ETH ,购买和保存 ERC20 代币和诸如 CryptoKitties 等不可替代代币。" - }, "storePhrase": { "message": "通过如 1Password 等密码管理工具保存该账户助记词。" }, @@ -1609,9 +1576,6 @@ "swapFinalizing": { "message": "确定中……" }, - "swapHighSlippageWarning": { - "message": "滑点数量非常大。确保您知道您的操作!" - }, "swapLowSlippageError": { "message": "交易可能失败,最大滑点过低。" }, @@ -1723,9 +1687,6 @@ "swapSelectQuotePopoverDescription": { "message": "以下是从多个流动资金来源收集到的所有报价。" }, - "swapSlippageTooLow": { - "message": "滑点必须大于零" - }, "swapSource": { "message": "流动资金来源" }, diff --git a/app/_locales/zh_TW/messages.json b/app/_locales/zh_TW/messages.json index ccabbcaa1..bd95f859e 100644 --- a/app/_locales/zh_TW/messages.json +++ b/app/_locales/zh_TW/messages.json @@ -317,9 +317,6 @@ "done": { "message": "完成" }, - "dontHaveAHardwareWallet": { - "message": "還沒有硬體錢包?" - }, "downloadGoogleChrome": { "message": "下載 Google Chrome 瀏覽器" }, @@ -452,9 +449,6 @@ "message": "從水管取得 $1 以太幣。", "description": "Displays network name for Ether faucet" }, - "getHelp": { - "message": "取得協助" - }, "getStarted": { "message": "開始使用" }, @@ -476,9 +470,6 @@ "hardwareWalletsMsg": { "message": "選擇要連線到 MetaMask 的硬體錢包" }, - "havingTroubleConnecting": { - "message": "無法正確連線?" - }, "here": { "message": "這裡", "description": "as in -click here- for more information (goes with troubleTokenBalances)" @@ -701,9 +692,6 @@ "optionalCurrencySymbol": { "message": "Symbol (可選)" }, - "orderOneHere": { - "message": "訂購 Trezor 或 Ledger 讓資產保存於硬體裝置。" - }, "origin": { "message": "來源" }, @@ -760,9 +748,6 @@ "readdToken": { "message": "未來可以隨時重新加入此代幣" }, - "readyToConnect": { - "message": "準備連線?" - }, "recents": { "message": "最近" }, @@ -976,24 +961,6 @@ "stateLogsDescription": { "message": "狀態紀錄包含您的公開帳戶位址和已傳送的交易資訊" }, - "step1HardwareWallet": { - "message": "1. 連線硬體錢包" - }, - "step1HardwareWalletMsg": { - "message": "將您的硬體錢包連接到電腦。" - }, - "step2HardwareWallet": { - "message": "2. 選擇帳戶" - }, - "step2HardwareWalletMsg": { - "message": "選擇想要檢視的帳戶。一次只能選擇一個帳戶。" - }, - "step3HardwareWallet": { - "message": "3. 開始使用!" - }, - "step3HardwareWalletMsg": { - "message": "使用您硬體錢包中的帳戶,與去中心化應用服務交易以太幣、ERC20代幣、或迷戀貓等數位資產。" - }, "storePhrase": { "message": "您可以用密碼管理系統例如 1Password 等軟體儲存助憶詞。" }, diff --git a/app/images/hardware-wallet-step-2.svg b/app/images/hardware-wallet-step-2.svg deleted file mode 100644 index 3862acb6d..000000000 --- a/app/images/hardware-wallet-step-2.svg +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - 3 - - - OXz3…T3A4 - - - 0.020000 ETH - - - - - - - 1 - - - OXa4…s0a2 - - - 0.01500 ETH - - - - - - - 4 - - - OXd2…D0V4 - - - 0.030000 ETH - - - - - - - - 2 - - - OXe7…B0a1 - - - 0.041000 ETH - - - - - - diff --git a/app/images/hardware-wallet-step-3.svg b/app/images/hardware-wallet-step-3.svg deleted file mode 100644 index 33e45991e..000000000 --- a/app/images/hardware-wallet-step-3.svg +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - LOGIN WITH METAMASK - - - diff --git a/app/images/hardware-wallet-step-1.svg b/app/images/plug-in-wallet.svg similarity index 100% rename from app/images/hardware-wallet-step-1.svg rename to app/images/plug-in-wallet.svg diff --git a/app/images/videos/recovery-onboarding/subtitles-en.vtt b/app/images/videos/recovery-onboarding/subtitles-en.vtt new file mode 100644 index 000000000..c78e8ff15 --- /dev/null +++ b/app/images/videos/recovery-onboarding/subtitles-en.vtt @@ -0,0 +1,116 @@ +WEBVTT + +1 +00:00:00.780 --> 00:00:04.580 +MetaMask is a new way to connect +to sites and applications. + +2 +00:00:04.580 --> 00:00:08.860 +On traditional websites, a central database +or bank is responsible for controlling and + +3 +00:00:08.860 --> 00:00:10.179 +recovering your accounts. + +4 +00:00:10.179 --> 00:00:15.050 +But on MetaMask, all of the power belongs +to the holder of a master key. + +5 +00:00:15.050 --> 00:00:18.460 +Whoever holds the key, controls the accounts. + +6 +00:00:18.460 --> 00:00:21.110 +Your secret recovery phrase +is your "master key". + +7 +00:00:21.110 --> 00:00:26.070 +It's a series of 12 words that are generated +when you first set up MetaMask, which allow + +8 +00:00:26.070 --> 00:00:30.120 +you to recover your wallet and funds if you +ever lose access. + +9 +00:00:30.120 --> 00:00:33.451 +It's important that you secure +your wallet by keeping your + +10 +00:00:33.451 --> 00:00:37.510 +secret recovery phrase +very safe, and very secret. + +11 +00:00:37.510 --> 00:00:41.429 +If anyone gets access to it, they will have +the "master key" to your wallet and can + +12 +00:00:41.429 --> 00:00:45.190 +freely access and take all of your funds. + +13 +00:00:45.190 --> 00:00:50.109 +To secure your MetaMask wallet you'll want +to safely save your secret recovery phrase. + +14 +00:00:50.109 --> 00:00:54.930 +You can write it down, hide it somewhere, +put it in a safe deposit box + +15 +00:00:54.930 --> 00:00:57.729 +or use a secure password manager. + +16 +00:00:57.729 --> 00:01:01.050 +Some users even engrave their +phrase onto a metal plate! + +17 +00:01:01.050 --> 00:01:04.440 +Nobody, not even the team +at MetaMask, can help you + +18 +00:01:04.440 --> 00:01:07.820 +recover your wallet if you lose +your secret recovery phrase. + +19 +00:01:07.820 --> 00:01:12.072 +If you haven't written down your secret recovery +phrase and stored it somewhere safe, + +20 +00:01:12.072 --> 00:01:15.492 +do it now. We'll wait. + +21 +00:01:15.500 --> 00:01:20.780 +And remember, never share your secret recovery +phrase with anyone: not even us. + +22 +00:01:20.780 --> 00:01:24.910 +If anyone ever asks you for it, +they're trying to scam you. + +23 +00:01:24.910 --> 00:01:26.250 +That's it! + +24 +00:01:26.250 --> 00:01:31.020 +Now you know what a secret recovery phrase +is and how to keep your wallet safe and secure. + diff --git a/app/images/videos/recovery-onboarding/video.webm b/app/images/videos/recovery-onboarding/video.webm new file mode 100644 index 000000000..a0d5cedeb Binary files /dev/null and b/app/images/videos/recovery-onboarding/video.webm differ diff --git a/app/manifest/_base.json b/app/manifest/_base.json index 40c975a05..437ef1d2e 100644 --- a/app/manifest/_base.json +++ b/app/manifest/_base.json @@ -71,6 +71,5 @@ "notifications" ], "short_name": "__MSG_appName__", - "version": "9.5.1", "web_accessible_resources": ["inpage.js", "phishing.html"] } diff --git a/app/scripts/account-import-strategies/account-import-strategies.test.js b/app/scripts/account-import-strategies/account-import-strategies.test.js index e29561639..7886f1717 100644 --- a/app/scripts/account-import-strategies/account-import-strategies.test.js +++ b/app/scripts/account-import-strategies/account-import-strategies.test.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import { stripHexPrefix } from 'ethereumjs-util'; import accountImporter from '.'; diff --git a/app/scripts/contentscript.js b/app/scripts/contentscript.js index a404a9cd8..236952f61 100644 --- a/app/scripts/contentscript.js +++ b/app/scripts/contentscript.js @@ -1,6 +1,6 @@ import querystring from 'querystring'; import pump from 'pump'; -import LocalMessageDuplexStream from 'post-message-stream'; +import { WindowPostMessageStream } from '@metamask/post-message-stream'; import ObjectMultiplex from 'obj-multiplex'; import extension from 'extensionizer'; import PortStream from 'extension-port-stream'; @@ -57,7 +57,7 @@ function injectScript(content) { */ async function setupStreams() { // the transport-specific streams for communication between inpage and background - const pageStream = new LocalMessageDuplexStream({ + const pageStream = new WindowPostMessageStream({ name: CONTENT_SCRIPT, target: INPAGE, }); @@ -89,7 +89,7 @@ async function setupStreams() { // TODO:LegacyProvider: Delete // handle legacy provider - const legacyPageStream = new LocalMessageDuplexStream({ + const legacyPageStream = new WindowPostMessageStream({ name: LEGACY_CONTENT_SCRIPT, target: LEGACY_INPAGE, }); diff --git a/app/scripts/controllers/app-state.js b/app/scripts/controllers/app-state.js index 261b735dc..ce92798e0 100644 --- a/app/scripts/controllers/app-state.js +++ b/app/scripts/controllers/app-state.js @@ -23,6 +23,7 @@ export default class AppStateController extends EventEmitter { timeoutMinutes: 0, connectedStatusPopoverHasBeenShown: true, defaultHomeActiveTabName: null, + browserEnvironment: {}, ...initState, }); this.timer = null; @@ -158,4 +159,12 @@ export default class AppStateController extends EventEmitter { timeoutMinutes * 60 * 1000, ); } + + /** + * Sets the current browser and OS environment + * @returns {void} + */ + setBrowserEnvironment(os, browser) { + this.store.updateState({ browserEnvironment: { os, browser } }); + } } diff --git a/app/scripts/controllers/cached-balances.test.js b/app/scripts/controllers/cached-balances.test.js index 94e86b41a..5ef473110 100644 --- a/app/scripts/controllers/cached-balances.test.js +++ b/app/scripts/controllers/cached-balances.test.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import sinon from 'sinon'; import { KOVAN_CHAIN_ID } from '../../../shared/constants/network'; import CachedBalancesController from './cached-balances'; diff --git a/app/scripts/controllers/detect-tokens.test.js b/app/scripts/controllers/detect-tokens.test.js index c472c7977..3b5eddd24 100644 --- a/app/scripts/controllers/detect-tokens.test.js +++ b/app/scripts/controllers/detect-tokens.test.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import sinon from 'sinon'; import { ObservableStore } from '@metamask/obs-store'; import contracts from '@metamask/contract-metadata'; diff --git a/app/scripts/controllers/ens/index.test.js b/app/scripts/controllers/ens/index.test.js index 24197dbd7..c94f73a5d 100644 --- a/app/scripts/controllers/ens/index.test.js +++ b/app/scripts/controllers/ens/index.test.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import sinon from 'sinon'; import EnsController from '.'; diff --git a/app/scripts/controllers/incoming-transactions.test.js b/app/scripts/controllers/incoming-transactions.test.js index 74aaad78c..347fa7952 100644 --- a/app/scripts/controllers/incoming-transactions.test.js +++ b/app/scripts/controllers/incoming-transactions.test.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import sinon from 'sinon'; import proxyquire from 'proxyquire'; import nock from 'nock'; diff --git a/app/scripts/controllers/network/network.js b/app/scripts/controllers/network/network.js index cd0fc0bce..a308a7d4b 100644 --- a/app/scripts/controllers/network/network.js +++ b/app/scripts/controllers/network/network.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import EventEmitter from 'events'; import { ComposedStore, ObservableStore } from '@metamask/obs-store'; import { JsonRpcEngine } from 'json-rpc-engine'; diff --git a/app/scripts/controllers/network/pending-middleware.test.js b/app/scripts/controllers/network/pending-middleware.test.js index 1ce327b22..49e60aaa4 100644 --- a/app/scripts/controllers/network/pending-middleware.test.js +++ b/app/scripts/controllers/network/pending-middleware.test.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import { txMetaStub } from '../../../../test/stub/tx-meta-stub'; import { createPendingNonceMiddleware, diff --git a/app/scripts/controllers/preferences.js b/app/scripts/controllers/preferences.js index 9470df50c..c20dcc6a0 100644 --- a/app/scripts/controllers/preferences.js +++ b/app/scripts/controllers/preferences.js @@ -43,6 +43,7 @@ export default class PreferencesController { useBlockie: false, useNonceField: false, usePhishDetect: true, + dismissSeedBackUpReminder: false, // WARNING: Do not use feature flags for security-sensitive things. // Feature flag toggling is available in the global namespace @@ -67,6 +68,7 @@ export default class PreferencesController { // ENS decentralized website resolution ipfsGateway: 'dweb.link', infuraBlocked: null, + useLedgerLive: false, ...opts.initState, }; @@ -666,6 +668,35 @@ export default class PreferencesController { return Promise.resolve(domain); } + /** + * A setter for the `useLedgerLive` property + * @param {bool} useLedgerLive - Value for ledger live support + * @returns {Promise} A promise of the update to useLedgerLive + */ + async setLedgerLivePreference(useLedgerLive) { + this.store.updateState({ useLedgerLive }); + return useLedgerLive; + } + + /** + * A getter for the `useLedgerLive` property + * @returns {boolean} User preference of using Ledger Live + */ + getLedgerLivePreference() { + return this.store.getState().useLedgerLive; + } + + /** + * A setter for the user preference to dismiss the seed phrase backup reminder + * @param {bool} dismissBackupReminder- User preference for dismissing the back up reminder + * @returns {void} + */ + async setDismissSeedBackUpReminder(dismissSeedBackUpReminder) { + await this.store.updateState({ + dismissSeedBackUpReminder, + }); + } + // // PRIVATE METHODS // diff --git a/app/scripts/controllers/preferences.test.js b/app/scripts/controllers/preferences.test.js index 1c765a92b..4141f0f5f 100644 --- a/app/scripts/controllers/preferences.test.js +++ b/app/scripts/controllers/preferences.test.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import sinon from 'sinon'; import { MAINNET_CHAIN_ID, diff --git a/app/scripts/controllers/swaps.js b/app/scripts/controllers/swaps.js index 2496e9b0b..9e4247231 100644 --- a/app/scripts/controllers/swaps.js +++ b/app/scripts/controllers/swaps.js @@ -4,9 +4,9 @@ import BigNumber from 'bignumber.js'; import { ObservableStore } from '@metamask/obs-store'; import { mapValues, cloneDeep } from 'lodash'; import abi from 'human-standard-token-abi'; -import { calcTokenAmount } from '../../../ui/app/helpers/utils/token-util'; -import { calcGasTotal } from '../../../ui/app/pages/send/send.utils'; -import { conversionUtil } from '../../../ui/app/helpers/utils/conversion-util'; +import { calcTokenAmount } from '../../../ui/helpers/utils/token-util'; +import { calcGasTotal } from '../../../ui/pages/send/send.utils'; +import { conversionUtil } from '../../../ui/helpers/utils/conversion-util'; import { DEFAULT_ERC20_APPROVE_GAS, QUOTES_EXPIRED_ERROR, @@ -20,7 +20,7 @@ import { fetchTradesInfo as defaultFetchTradesInfo, fetchSwapsFeatureLiveness as defaultFetchSwapsFeatureLiveness, fetchSwapsQuoteRefreshTime as defaultFetchSwapsQuoteRefreshTime, -} from '../../../ui/app/pages/swaps/swaps.util'; +} from '../../../ui/pages/swaps/swaps.util'; import { NETWORK_EVENTS } from './network'; // The MAX_GAS_LIMIT is a number that is higher than the maximum gas costs we have observed on any aggregator diff --git a/app/scripts/controllers/swaps.test.js b/app/scripts/controllers/swaps.test.js index 4e85aa393..0fb1d80ac 100644 --- a/app/scripts/controllers/swaps.test.js +++ b/app/scripts/controllers/swaps.test.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import sinon from 'sinon'; import { ethers } from 'ethers'; @@ -645,7 +645,7 @@ describe('SwapsController', function () { topAggId, resultQuotes, ] = await swapsController._findTopQuoteAndCalculateSavings(testInput); - assert.equal(topAggId, [TEST_AGG_ID_2]); + assert.equal(topAggId, TEST_AGG_ID_2); assert.deepStrictEqual(resultQuotes, expectedResultQuotes); }); }); diff --git a/app/scripts/controllers/token-rates-controller.test.js b/app/scripts/controllers/token-rates-controller.test.js index fc5d3af52..444e53977 100644 --- a/app/scripts/controllers/token-rates-controller.test.js +++ b/app/scripts/controllers/token-rates-controller.test.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import sinon from 'sinon'; import { ObservableStore } from '@metamask/obs-store'; import TokenRatesController from './token-rates'; diff --git a/app/scripts/controllers/transactions/index.js b/app/scripts/controllers/transactions/index.js index 3067b3e4f..9b7011a66 100644 --- a/app/scripts/controllers/transactions/index.js +++ b/app/scripts/controllers/transactions/index.js @@ -16,8 +16,8 @@ import { BnMultiplyByFraction, addHexPrefix, } from '../../lib/util'; -import { TRANSACTION_NO_CONTRACT_ERROR_KEY } from '../../../../ui/app/helpers/constants/error-keys'; -import { getSwapsTokensReceivedFromTxMeta } from '../../../../ui/app/pages/swaps/swaps.util'; +import { TRANSACTION_NO_CONTRACT_ERROR_KEY } from '../../../../ui/helpers/constants/error-keys'; +import { getSwapsTokensReceivedFromTxMeta } from '../../../../ui/pages/swaps/swaps.util'; import { TRANSACTION_STATUSES, TRANSACTION_TYPES, diff --git a/app/scripts/inpage.js b/app/scripts/inpage.js index 72bbf7901..498063145 100644 --- a/app/scripts/inpage.js +++ b/app/scripts/inpage.js @@ -32,7 +32,7 @@ cleanContextForImports(); /* eslint-disable import/first */ import log from 'loglevel'; -import LocalMessageDuplexStream from 'post-message-stream'; +import { WindowPostMessageStream } from '@metamask/post-message-stream'; import { initializeProvider } from '@metamask/inpage-provider'; restoreContextAfterImports(); @@ -44,7 +44,7 @@ log.setDefaultLevel(process.env.METAMASK_DEBUG ? 'debug' : 'warn'); // // setup background connection -const metamaskStream = new LocalMessageDuplexStream({ +const metamaskStream = new WindowPostMessageStream({ name: 'metamask-inpage', target: 'metamask-contentscript', }); diff --git a/app/scripts/lib/ComposableObservableStore.js b/app/scripts/lib/ComposableObservableStore.js index 68ce42d08..7e9892bea 100644 --- a/app/scripts/lib/ComposableObservableStore.js +++ b/app/scripts/lib/ComposableObservableStore.js @@ -13,7 +13,9 @@ export default class ComposableObservableStore extends ObservableStore { */ constructor(initState, config) { super(initState); - this.updateStructure(config); + if (config) { + this.updateStructure(config); + } } /** @@ -24,12 +26,10 @@ export default class ComposableObservableStore extends ObservableStore { updateStructure(config) { this.config = config; this.removeAllListeners(); - for (const key in config) { - if (Object.prototype.hasOwnProperty.call(config, key)) { - config[key].subscribe((state) => { - this.updateState({ [key]: state }); - }); - } + for (const key of Object.keys(this.config)) { + config[key].subscribe((state) => { + this.updateState({ [key]: state }); + }); } } @@ -40,15 +40,16 @@ export default class ComposableObservableStore extends ObservableStore { * @returns {Object} Object containing merged child store state */ getFlatState() { + if (!this.config) { + return {}; + } let flatState = {}; - for (const key in this.config) { - if (Object.prototype.hasOwnProperty.call(this.config, key)) { - const controller = this.config[key]; - const state = controller.getState - ? controller.getState() - : controller.state; - flatState = { ...flatState, ...state }; - } + for (const key of Object.keys(this.config)) { + const controller = this.config[key]; + const state = controller.getState + ? controller.getState() + : controller.state; + flatState = { ...flatState, ...state }; } return flatState; } diff --git a/app/scripts/lib/ComposableObservableStore.test.js b/app/scripts/lib/ComposableObservableStore.test.js index a079984c1..620b6df85 100644 --- a/app/scripts/lib/ComposableObservableStore.test.js +++ b/app/scripts/lib/ComposableObservableStore.test.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import { ObservableStore } from '@metamask/obs-store'; import ComposableObservableStore from './ComposableObservableStore'; @@ -32,4 +32,9 @@ describe('ComposableObservableStore', function () { }); assert.deepEqual(store.getFlatState(), { foo: 'foo', bar: 'bar' }); }); + + it('should return empty flattened state when not configured', function () { + const store = new ComposableObservableStore(); + assert.deepEqual(store.getFlatState(), {}); + }); }); diff --git a/app/scripts/lib/buy-eth-url.test.js b/app/scripts/lib/buy-eth-url.test.js index 17ba3d64a..01837c8ef 100644 --- a/app/scripts/lib/buy-eth-url.test.js +++ b/app/scripts/lib/buy-eth-url.test.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import { KOVAN_CHAIN_ID, MAINNET_CHAIN_ID, diff --git a/app/scripts/lib/cleanErrorStack.test.js b/app/scripts/lib/cleanErrorStack.test.js index 9f01e8252..b87152f21 100644 --- a/app/scripts/lib/cleanErrorStack.test.js +++ b/app/scripts/lib/cleanErrorStack.test.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import cleanErrorStack from './cleanErrorStack'; describe('Clean Error Stack', function () { @@ -14,7 +14,7 @@ describe('Clean Error Stack', function () { }); it('tests error with message', function () { - assert.equal(cleanErrorStack(testError), 'Error: Test Message'); + assert.equal(cleanErrorStack(testError).toString(), 'Error: Test Message'); }); it('tests error with undefined name', function () { @@ -29,6 +29,6 @@ describe('Clean Error Stack', function () { }); it('tests error with blank message', function () { - assert.equal(cleanErrorStack(blankMsgError), 'Error'); + assert.equal(cleanErrorStack(blankMsgError).toString(), 'Error'); }); }); diff --git a/app/scripts/lib/createMetaRPCHandler.test.js b/app/scripts/lib/createMetaRPCHandler.test.js index e37985105..638b018b6 100644 --- a/app/scripts/lib/createMetaRPCHandler.test.js +++ b/app/scripts/lib/createMetaRPCHandler.test.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import { obj as createThoughStream } from 'through2'; import createMetaRPCHandler from './createMetaRPCHandler'; diff --git a/app/scripts/lib/get-first-preferred-lang-code.js b/app/scripts/lib/get-first-preferred-lang-code.js index 4639d6dc9..bcac7937a 100644 --- a/app/scripts/lib/get-first-preferred-lang-code.js +++ b/app/scripts/lib/get-first-preferred-lang-code.js @@ -40,9 +40,7 @@ export default async function getFirstPreferredLangCode() { const firstPreferredLangCode = userPreferredLocaleCodes .map((code) => code.toLowerCase().replace('_', '-')) - .find((code) => - Object.prototype.hasOwnProperty.call(existingLocaleCodes, code), - ); + .find((code) => existingLocaleCodes[code] !== undefined); return existingLocaleCodes[firstPreferredLangCode] || 'en'; } diff --git a/app/scripts/lib/message-manager.test.js b/app/scripts/lib/message-manager.test.js index 947cb2688..39183fb7a 100644 --- a/app/scripts/lib/message-manager.test.js +++ b/app/scripts/lib/message-manager.test.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import { TRANSACTION_STATUSES } from '../../../shared/constants/transaction'; import MessageManager from './message-manager'; diff --git a/app/scripts/lib/metaRPCClientFactory.test.js b/app/scripts/lib/metaRPCClientFactory.test.js index d270a4e1a..624113c1a 100644 --- a/app/scripts/lib/metaRPCClientFactory.test.js +++ b/app/scripts/lib/metaRPCClientFactory.test.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import { obj as createThoughStream } from 'through2'; import metaRPCClientFactory from './metaRPCClientFactory'; diff --git a/app/scripts/lib/migrator/index.test.js b/app/scripts/lib/migrator/index.test.js index 0fbb3e8a9..cdaac9e82 100644 --- a/app/scripts/lib/migrator/index.test.js +++ b/app/scripts/lib/migrator/index.test.js @@ -1,5 +1,5 @@ import fs from 'fs'; -import assert from 'assert'; +import { strict as assert } from 'assert'; import { cloneDeep } from 'lodash'; import liveMigrations from '../../migrations'; import data from '../../first-time-state'; diff --git a/app/scripts/lib/nodeify.test.js b/app/scripts/lib/nodeify.test.js index 4f2c2a2eb..accfc48e8 100644 --- a/app/scripts/lib/nodeify.test.js +++ b/app/scripts/lib/nodeify.test.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import nodeify from './nodeify'; describe('nodeify', function () { diff --git a/app/scripts/lib/personal-message-manager.test.js b/app/scripts/lib/personal-message-manager.test.js index c3ce3f615..de241fff0 100644 --- a/app/scripts/lib/personal-message-manager.test.js +++ b/app/scripts/lib/personal-message-manager.test.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import { TRANSACTION_STATUSES } from '../../../shared/constants/transaction'; import PersonalMessageManager from './personal-message-manager'; diff --git a/app/scripts/lib/rpc-method-middleware/handlers/add-ethereum-chain.js b/app/scripts/lib/rpc-method-middleware/handlers/add-ethereum-chain.js index ac170b399..50399c3ab 100644 --- a/app/scripts/lib/rpc-method-middleware/handlers/add-ethereum-chain.js +++ b/app/scripts/lib/rpc-method-middleware/handlers/add-ethereum-chain.js @@ -1,4 +1,4 @@ -import { ethErrors } from 'eth-rpc-errors'; +import { ethErrors, errorCodes } from 'eth-rpc-errors'; import validUrl from 'valid-url'; import { omit } from 'lodash'; import { MESSAGE_TYPE } from '../../../../../shared/constants/app'; @@ -123,12 +123,16 @@ async function addEthereumChainHandler( const existingNetwork = findCustomRpcBy({ chainId: _chainId }); - if (existingNetwork !== null) { + if (existingNetwork) { + // If the network already exists, the request is considered successful + res.result = null; + const currentChainId = getCurrentChainId(); if (currentChainId === _chainId) { - res.result = null; return end(); } + + // Ask the user to switch the network try { await updateRpcTarget( await requestUserApproval({ @@ -144,7 +148,12 @@ async function addEthereumChainHandler( ); res.result = null; } catch (error) { - return end(error); + // For the purposes of this method, it does not matter if the user + // declines to switch the selected network. However, other errors indicate + // that something is wrong. + if (error.code !== errorCodes.provider.userRejectedRequest) { + return end(error); + } } return end(); } @@ -251,6 +260,14 @@ async function addEthereumChainHandler( }, }); + // Once the network has been added, the requested is considered successful + res.result = null; + } catch (error) { + return end(error); + } + + // Ask the user to switch the network + try { await updateRpcTarget( await requestUserApproval({ origin, @@ -263,10 +280,13 @@ async function addEthereumChainHandler( }, }), ); - - res.result = null; } catch (error) { - return end(error); + // For the purposes of this method, it does not matter if the user + // declines to switch the selected network. However, other errors indicate + // that something is wrong. + if (error.code !== errorCodes.provider.userRejectedRequest) { + return end(error); + } } return end(); } diff --git a/app/scripts/lib/rpc-method-middleware/handlers/index.js b/app/scripts/lib/rpc-method-middleware/handlers/index.js index 541256a1c..fb0c1ef8f 100644 --- a/app/scripts/lib/rpc-method-middleware/handlers/index.js +++ b/app/scripts/lib/rpc-method-middleware/handlers/index.js @@ -1,10 +1,12 @@ import addEthereumChain from './add-ethereum-chain'; +import switchEthereumChain from './switch-ethereum-chain'; import getProviderState from './get-provider-state'; import logWeb3ShimUsage from './log-web3-shim-usage'; import watchAsset from './watch-asset'; const handlers = [ addEthereumChain, + switchEthereumChain, getProviderState, logWeb3ShimUsage, watchAsset, diff --git a/app/scripts/lib/rpc-method-middleware/handlers/switch-ethereum-chain.js b/app/scripts/lib/rpc-method-middleware/handlers/switch-ethereum-chain.js new file mode 100644 index 000000000..97b5d0f3c --- /dev/null +++ b/app/scripts/lib/rpc-method-middleware/handlers/switch-ethereum-chain.js @@ -0,0 +1,97 @@ +import { ethErrors } from 'eth-rpc-errors'; +import { omit } from 'lodash'; +import { MESSAGE_TYPE } from '../../../../../shared/constants/app'; +import { + isPrefixedFormattedHexString, + isSafeChainId, +} from '../../../../../shared/modules/network.utils'; + +const switchEthereumChain = { + methodNames: [MESSAGE_TYPE.SWITCH_ETHEREUM_CHAIN], + implementation: switchEthereumChainHandler, +}; +export default switchEthereumChain; + +async function switchEthereumChainHandler( + req, + res, + _next, + end, + { getCurrentChainId, findCustomRpcBy, updateRpcTarget, requestUserApproval }, +) { + if (!req.params?.[0] || typeof req.params[0] !== 'object') { + return end( + ethErrors.rpc.invalidParams({ + message: `Expected single, object parameter. Received:\n${JSON.stringify( + req.params, + )}`, + }), + ); + } + + const { origin } = req; + + const { chainId } = req.params[0]; + + const otherKeys = Object.keys(omit(req.params[0], ['chainId'])); + + if (otherKeys.length > 0) { + return end( + ethErrors.rpc.invalidParams({ + message: `Received unexpected keys on object parameter. Unsupported keys:\n${otherKeys}`, + }), + ); + } + + const _chainId = typeof chainId === 'string' && chainId.toLowerCase(); + + if (!isPrefixedFormattedHexString(_chainId)) { + return end( + ethErrors.rpc.invalidParams({ + message: `Expected 0x-prefixed, unpadded, non-zero hexadecimal string 'chainId'. Received:\n${chainId}`, + }), + ); + } + + if (!isSafeChainId(parseInt(_chainId, 16))) { + return end( + ethErrors.rpc.invalidParams({ + message: `Invalid chain ID "${_chainId}": numerical value greater than max safe value. Received:\n${chainId}`, + }), + ); + } + + const existingNetwork = findCustomRpcBy({ chainId: _chainId }); + + if (existingNetwork) { + const currentChainId = getCurrentChainId(); + if (currentChainId === _chainId) { + res.result = null; + return end(); + } + try { + await updateRpcTarget( + await requestUserApproval({ + origin, + type: MESSAGE_TYPE.SWITCH_ETHEREUM_CHAIN, + requestData: { + rpcUrl: existingNetwork.rpcUrl, + chainId: existingNetwork.chainId, + nickname: existingNetwork.nickname, + ticker: existingNetwork.ticker, + }, + }), + ); + res.result = null; + } catch (error) { + return end(error); + } + return end(); + } + return end( + ethErrors.provider.custom({ + code: 4902, // To-be-standardized "unrecognized chain ID" error + message: `Unrecognized chain ID "${chainId}". Try adding the chain using ${MESSAGE_TYPE.ADD_ETHEREUM_CHAIN} first.`, + }), + ); +} diff --git a/app/scripts/lib/seed-phrase-verifier.test.js b/app/scripts/lib/seed-phrase-verifier.test.js index d7ac0143f..1a6443935 100644 --- a/app/scripts/lib/seed-phrase-verifier.test.js +++ b/app/scripts/lib/seed-phrase-verifier.test.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import { cloneDeep } from 'lodash'; import KeyringController from 'eth-keyring-controller'; import firstTimeState from '../first-time-state'; diff --git a/app/scripts/lib/typed-message-manager.js b/app/scripts/lib/typed-message-manager.js index 28e7a2534..3da405cf1 100644 --- a/app/scripts/lib/typed-message-manager.js +++ b/app/scripts/lib/typed-message-manager.js @@ -1,5 +1,5 @@ import EventEmitter from 'events'; -import assert from 'assert'; +import { strict as assert } from 'assert'; import { ObservableStore } from '@metamask/obs-store'; import { ethErrors } from 'eth-rpc-errors'; import { typedSignatureHash, TYPED_MESSAGE_SCHEMA } from 'eth-sig-util'; diff --git a/app/scripts/lib/typed-message-manager.test.js b/app/scripts/lib/typed-message-manager.test.js index c994a586f..a9722211e 100644 --- a/app/scripts/lib/typed-message-manager.test.js +++ b/app/scripts/lib/typed-message-manager.test.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import sinon from 'sinon'; import { TRANSACTION_STATUSES } from '../../../shared/constants/transaction'; import TypedMessageManager from './typed-message-manager'; diff --git a/app/scripts/lib/util.js b/app/scripts/lib/util.js index 46e5b8641..126e5c4f6 100644 --- a/app/scripts/lib/util.js +++ b/app/scripts/lib/util.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import extension from 'extensionizer'; import { stripHexPrefix } from 'ethereumjs-util'; import BN from 'bn.js'; diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index 2ae3c6ef1..611def916 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -476,6 +476,17 @@ export default class MetamaskController extends EventEmitter { this.submitPassword(password); } + // Lazily update the store with the current extension environment + this.extension.runtime.getPlatformInfo(({ os }) => { + this.appStateController.setBrowserEnvironment( + os, + // This method is presently only supported by Firefox + this.extension.runtime.getBrowserInfo === undefined + ? 'chrome' + : 'firefox', + ); + }); + // TODO:LegacyProvider: Delete this.publicConfigStore = this.createPublicConfigStore(); } @@ -666,6 +677,7 @@ export default class MetamaskController extends EventEmitter { this.unlockHardwareWalletAccount, this, ), + setLedgerLivePreference: nodeify(this.setLedgerLivePreference, this), // mobile fetchInfoToSync: nodeify(this.fetchInfoToSync, this), @@ -721,6 +733,10 @@ export default class MetamaskController extends EventEmitter { preferencesController.addKnownMethodData, preferencesController, ), + setDismissSeedBackUpReminder: nodeify( + this.preferencesController.setDismissSeedBackUpReminder, + this.preferencesController, + ), // AddressController setAddressBook: nodeify( @@ -1206,6 +1222,14 @@ export default class MetamaskController extends EventEmitter { log.error('Error while unlocking extension.', error); } + // This must be set as soon as possible to communicate to the + // keyring's iframe and have the setting initialized properly + // Optimistically called to not block Metamask login due to + // Ledger Keyring GitHub downtime + this.setLedgerLivePreference( + this.preferencesController.getLedgerLivePreference(), + ); + return this.keyringController.fullUpdate(); } @@ -2493,7 +2517,7 @@ export default class MetamaskController extends EventEmitter { }; this.currencyRateController.update(currencyState); this.currencyRateController.configure(currencyState); - cb(null, this.currencyRateController.state); + cb(null); return; } catch (err) { cb(err); @@ -2682,6 +2706,27 @@ export default class MetamaskController extends EventEmitter { } } + /** + * Sets the Ledger Live preference to use for Ledger hardware wallet support + * @param {bool} bool - the value representing if the users wants to use Ledger Live + */ + async setLedgerLivePreference(bool) { + const currentValue = this.preferencesController.getLedgerLivePreference(); + this.preferencesController.setLedgerLivePreference(bool); + + const keyring = await this.getKeyringForDevice('ledger'); + if (keyring?.updateTransportMethod) { + return keyring.updateTransportMethod(bool).catch((e) => { + // If there was an error updating the transport, we should + // fall back to the original value + this.preferencesController.setLedgerLivePreference(currentValue); + throw e; + }); + } + + return undefined; + } + /** * Sets whether or not the user will have usage data tracked with MetaMetrics * @param {boolean} bool - True for users that wish to opt-in, false for users that wish to remain out. diff --git a/app/scripts/metamask-controller.test.js b/app/scripts/metamask-controller.test.js index ffdd6246d..3d8cb57cf 100644 --- a/app/scripts/metamask-controller.test.js +++ b/app/scripts/metamask-controller.test.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import sinon from 'sinon'; import { cloneDeep } from 'lodash'; import nock from 'nock'; @@ -52,6 +52,7 @@ const ExtensionizerMock = { onInstalled: { addListener: () => undefined, }, + getPlatformInfo: async () => 'mac', }, }; @@ -492,8 +493,8 @@ describe('MetaMaskController', function () { ); } catch (e) { assert.equal( - e, - 'Error: MetamaskController:getKeyringForDevice - Unknown device', + e.message, + 'MetamaskController:getKeyringForDevice - Unknown device', ); } }); @@ -504,9 +505,9 @@ describe('MetaMaskController', function () { const keyrings = await metamaskController.keyringController.getKeyringsByType( 'Trezor Hardware', ); - assert.equal( + assert.deepEqual( metamaskController.keyringController.addNewKeyring.getCall(0).args, - 'Trezor Hardware', + ['Trezor Hardware'], ); assert.equal(keyrings.length, 1); }); @@ -517,9 +518,9 @@ describe('MetaMaskController', function () { const keyrings = await metamaskController.keyringController.getKeyringsByType( 'Ledger Hardware', ); - assert.equal( + assert.deepEqual( metamaskController.keyringController.addNewKeyring.getCall(0).args, - 'Ledger Hardware', + ['Ledger Hardware'], ); assert.equal(keyrings.length, 1); }); @@ -534,8 +535,8 @@ describe('MetaMaskController', function () { ); } catch (e) { assert.equal( - e, - 'Error: MetamaskController:getKeyringForDevice - Unknown device', + e.message, + 'MetamaskController:getKeyringForDevice - Unknown device', ); } }); @@ -553,8 +554,8 @@ describe('MetaMaskController', function () { await metamaskController.forgetDevice('Some random device name'); } catch (e) { assert.equal( - e, - 'Error: MetamaskController:getKeyringForDevice - Unknown device', + e.message, + 'MetamaskController:getKeyringForDevice - Unknown device', ); } }); diff --git a/app/scripts/migrations/021.test.js b/app/scripts/migrations/021.test.js index 45c727e57..261d40f81 100644 --- a/app/scripts/migrations/021.test.js +++ b/app/scripts/migrations/021.test.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import wallet2 from '../../../test/lib/migrations/002.json'; import migration21 from './021'; diff --git a/app/scripts/migrations/022.test.js b/app/scripts/migrations/022.test.js index a102bcb7e..425bfeb91 100644 --- a/app/scripts/migrations/022.test.js +++ b/app/scripts/migrations/022.test.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import { TRANSACTION_STATUSES } from '../../../shared/constants/transaction'; import migration22 from './022'; diff --git a/app/scripts/migrations/023.test.js b/app/scripts/migrations/023.test.js index 0b40679b2..0ef74beb6 100644 --- a/app/scripts/migrations/023.test.js +++ b/app/scripts/migrations/023.test.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import { TRANSACTION_STATUSES } from '../../../shared/constants/transaction'; import migration23 from './023'; diff --git a/app/scripts/migrations/024.test.js b/app/scripts/migrations/024.test.js index b2056193d..f87e45748 100644 --- a/app/scripts/migrations/024.test.js +++ b/app/scripts/migrations/024.test.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import data from '../first-time-state'; import { TRANSACTION_STATUSES } from '../../../shared/constants/transaction'; import migration24 from './024'; diff --git a/app/scripts/migrations/025.test.js b/app/scripts/migrations/025.test.js index 7d666c517..9e0ff846b 100644 --- a/app/scripts/migrations/025.test.js +++ b/app/scripts/migrations/025.test.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import data from '../first-time-state'; import { TRANSACTION_STATUSES } from '../../../shared/constants/transaction'; import migration25 from './025'; diff --git a/app/scripts/migrations/026.test.js b/app/scripts/migrations/026.test.js index 71245115b..ca4ac9a64 100644 --- a/app/scripts/migrations/026.test.js +++ b/app/scripts/migrations/026.test.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import firstTimeState from '../first-time-state'; import migration26 from './026'; diff --git a/app/scripts/migrations/027.test.js b/app/scripts/migrations/027.test.js index 2687e17c2..29df2dfb0 100644 --- a/app/scripts/migrations/027.test.js +++ b/app/scripts/migrations/027.test.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import firstTimeState from '../first-time-state'; import { TRANSACTION_STATUSES } from '../../../shared/constants/transaction'; import migration27 from './027'; diff --git a/app/scripts/migrations/028.test.js b/app/scripts/migrations/028.test.js index 01381e754..5d755f50c 100644 --- a/app/scripts/migrations/028.test.js +++ b/app/scripts/migrations/028.test.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import firstTimeState from '../first-time-state'; import migration28 from './028'; diff --git a/app/scripts/migrations/029.test.js b/app/scripts/migrations/029.test.js index 90d698fd7..53ce28695 100644 --- a/app/scripts/migrations/029.test.js +++ b/app/scripts/migrations/029.test.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import { TRANSACTION_STATUSES } from '../../../shared/constants/transaction'; import migration29 from './029'; diff --git a/app/scripts/migrations/030.test.js b/app/scripts/migrations/030.test.js index 985aa02e1..f03f51231 100644 --- a/app/scripts/migrations/030.test.js +++ b/app/scripts/migrations/030.test.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import migrationTemplate from './030'; const storage = { diff --git a/app/scripts/migrations/031.test.js b/app/scripts/migrations/031.test.js index d7b6ee046..62216e85d 100644 --- a/app/scripts/migrations/031.test.js +++ b/app/scripts/migrations/031.test.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import migration31 from './031'; describe('migration #31', function () { diff --git a/app/scripts/migrations/033.test.js b/app/scripts/migrations/033.test.js index bb12e83d7..382622d39 100644 --- a/app/scripts/migrations/033.test.js +++ b/app/scripts/migrations/033.test.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import migration33 from './033'; describe('Migration to delete notice controller', function () { diff --git a/app/scripts/migrations/034.test.js b/app/scripts/migrations/034.test.js index bfb929997..7902b5f13 100644 --- a/app/scripts/migrations/034.test.js +++ b/app/scripts/migrations/034.test.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import migration34 from './034'; describe('migration #34', function () { diff --git a/app/scripts/migrations/035.test.js b/app/scripts/migrations/035.test.js index 385f12fb5..03454b2ea 100644 --- a/app/scripts/migrations/035.test.js +++ b/app/scripts/migrations/035.test.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import migration35 from './035'; describe('migration #35', function () { diff --git a/app/scripts/migrations/036.test.js b/app/scripts/migrations/036.test.js index 679080bf7..ecc44c557 100644 --- a/app/scripts/migrations/036.test.js +++ b/app/scripts/migrations/036.test.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import migration36 from './036'; describe('migration #36', function () { diff --git a/app/scripts/migrations/037.test.js b/app/scripts/migrations/037.test.js index 0c145bccf..688f66a9a 100644 --- a/app/scripts/migrations/037.test.js +++ b/app/scripts/migrations/037.test.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import migration37 from './037'; describe('migration #37', function () { diff --git a/app/scripts/migrations/039.test.js b/app/scripts/migrations/039.test.js index 55ba12982..3efbbf49d 100644 --- a/app/scripts/migrations/039.test.js +++ b/app/scripts/migrations/039.test.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import migration39 from './039'; describe('migration #39', function () { diff --git a/app/scripts/migrations/040.test.js b/app/scripts/migrations/040.test.js index f4d1de68e..ba10e4b75 100644 --- a/app/scripts/migrations/040.test.js +++ b/app/scripts/migrations/040.test.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import migration40 from './040'; describe('migration #40', function () { diff --git a/app/scripts/migrations/041.test.js b/app/scripts/migrations/041.test.js index 7c6e4c567..f1a06a151 100644 --- a/app/scripts/migrations/041.test.js +++ b/app/scripts/migrations/041.test.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import migration41 from './041'; describe('migration #41', function () { diff --git a/app/scripts/migrations/042.test.js b/app/scripts/migrations/042.test.js index 7cca8d2a7..8c1a46513 100644 --- a/app/scripts/migrations/042.test.js +++ b/app/scripts/migrations/042.test.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import migration42 from './042'; describe('migration #42', function () { diff --git a/app/scripts/migrations/045.test.js b/app/scripts/migrations/045.test.js index 907489195..de47bef32 100644 --- a/app/scripts/migrations/045.test.js +++ b/app/scripts/migrations/045.test.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import migration45 from './045'; describe('migration #45', function () { diff --git a/app/scripts/migrations/049.test.js b/app/scripts/migrations/049.test.js index 5242fab52..f3c89d66b 100644 --- a/app/scripts/migrations/049.test.js +++ b/app/scripts/migrations/049.test.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import migration49 from './049'; describe('migration #49', function () { diff --git a/app/scripts/migrations/052.test.js b/app/scripts/migrations/052.test.js index 8d9d13afb..3896d0a77 100644 --- a/app/scripts/migrations/052.test.js +++ b/app/scripts/migrations/052.test.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import { GOERLI, GOERLI_CHAIN_ID, diff --git a/app/scripts/migrations/056.test.js b/app/scripts/migrations/056.test.js index e311d4aee..927997fbe 100644 --- a/app/scripts/migrations/056.test.js +++ b/app/scripts/migrations/056.test.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import migration56 from './056'; const BAD_TOKEN_DATA = { symbol: null, decimals: null }; diff --git a/app/scripts/migrations/migrations.test.js b/app/scripts/migrations/migrations.test.js index a7c921323..82d15f501 100644 --- a/app/scripts/migrations/migrations.test.js +++ b/app/scripts/migrations/migrations.test.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import wallet1 from '../../../test/lib/migrations/001.json'; import vault4 from '../../../test/lib/migrations/004.json'; import migration2 from './002'; @@ -52,7 +52,7 @@ describe('wallet1 is migrated successfully', function () { const fourthData = fourthResult.data; assert.equal( fourthData.config.provider.rpcTarget, - null, + undefined, 'old rpcTarget should not exist.', ); assert.equal( @@ -65,15 +65,15 @@ describe('wallet1 is migrated successfully', function () { }) .then((fifthResult) => { const fifthData = fifthResult.data; - assert.equal(fifthData.vault, null, 'old vault should not exist'); + assert.equal(fifthData.vault, undefined, 'old vault should not exist'); assert.equal( fifthData.walletNicknames, - null, + undefined, 'old walletNicknames should not exist', ); assert.equal( fifthData.config.selectedAccount, - null, + undefined, 'old config.selectedAccount should not exist', ); assert.equal( @@ -102,7 +102,7 @@ describe('wallet1 is migrated successfully', function () { .then((sixthResult) => { assert.equal( sixthResult.data.KeyringController.selectedAccount, - null, + undefined, 'old selectedAccount should not exist', ); assert.equal( @@ -117,12 +117,12 @@ describe('wallet1 is migrated successfully', function () { .then((seventhResult) => { assert.equal( seventhResult.data.transactions, - null, + undefined, 'old transactions should not exist', ); assert.equal( seventhResult.data.gasMultiplier, - null, + undefined, 'old gasMultiplier should not exist', ); assert.equal( @@ -142,7 +142,7 @@ describe('wallet1 is migrated successfully', function () { .then((eighthResult) => { assert.equal( eighthResult.data.noticesList, - null, + undefined, 'old noticesList should not exist', ); assert.equal( @@ -157,22 +157,22 @@ describe('wallet1 is migrated successfully', function () { .then((ninthResult) => { assert.equal( ninthResult.data.currentFiat, - null, + undefined, 'old currentFiat should not exist', ); assert.equal( ninthResult.data.fiatCurrency, - null, + undefined, 'old fiatCurrency should not exist', ); assert.equal( ninthResult.data.conversionRate, - null, + undefined, 'old conversionRate should not exist', ); assert.equal( ninthResult.data.conversionDate, - null, + undefined, 'old conversionDate should not exist', ); @@ -198,7 +198,7 @@ describe('wallet1 is migrated successfully', function () { .then((tenthResult) => { assert.equal( tenthResult.data.shapeShiftTxList, - null, + undefined, 'old shapeShiftTxList should not exist', ); assert.equal( @@ -211,12 +211,12 @@ describe('wallet1 is migrated successfully', function () { .then((eleventhResult) => { assert.equal( eleventhResult.data.isDisclaimerConfirmed, - null, + undefined, 'isDisclaimerConfirmed should not exist', ); assert.equal( eleventhResult.data.TOSHash, - null, + undefined, 'TOSHash should not exist', ); diff --git a/app/scripts/migrations/template.test.js b/app/scripts/migrations/template.test.js index 92a4e8937..5277b86ba 100644 --- a/app/scripts/migrations/template.test.js +++ b/app/scripts/migrations/template.test.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import migrationTemplate from './template'; const storage = { diff --git a/development/announcer.js b/development/announcer.js index f0c42c07a..a3fc459a9 100644 --- a/development/announcer.js +++ b/development/announcer.js @@ -1,6 +1,6 @@ const fs = require('fs'); const path = require('path'); -const { version } = require('../app/manifest/_base.json'); +const { version } = require('../package.json'); const changelog = fs.readFileSync( path.join(__dirname, '..', 'CHANGELOG.md'), diff --git a/development/auto-changelog.js b/development/auto-changelog.js deleted file mode 100755 index 455bf5beb..000000000 --- a/development/auto-changelog.js +++ /dev/null @@ -1,67 +0,0 @@ -#!/usr/bin/env node -const fs = require('fs').promises; - -const path = require('path'); -const { version } = require('../app/manifest/_base.json'); -const { updateChangelog } = require('./lib/changelog/updateChangelog'); -const { unreleased } = require('./lib/changelog/constants'); - -const REPO_URL = 'https://github.com/MetaMask/metamask-extension'; - -const command = 'yarn update-changelog'; - -const helpText = `Usage: ${command} [--rc] [-h|--help] -Update CHANGELOG.md with any changes made since the most recent release. - -Options: - --rc Add new changes to the current release header, rather than to the - '${unreleased}' section. - -h, --help Display this help and exit. - -New commits will be added to the "${unreleased}" section (or to the section for the -current release if the '--rc' flag is used) in reverse chronological order. Any -commits for PRs that are represented already in the changelog will be ignored. - -If the '--rc' flag is used and the section for the current release does not yet -exist, it will be created. -`; - -async function main() { - const args = process.argv.slice(2); - let isReleaseCandidate = false; - - for (const arg of args) { - if (arg === '--rc') { - isReleaseCandidate = true; - } else if (['--help', '-h'].includes(arg)) { - console.log(helpText); - process.exit(0); - } else { - console.error( - `Unrecognized argument: ${arg}\nTry '${command} --help' for more information.\n`, - ); - process.exit(1); - } - } - - const changelogFilename = path.resolve(__dirname, '..', 'CHANGELOG.md'); - const changelogContent = await fs.readFile(changelogFilename, { - encoding: 'utf8', - }); - - const newChangelogContent = await updateChangelog({ - changelogContent, - currentVersion: version, - repoUrl: REPO_URL, - isReleaseCandidate, - }); - - await fs.writeFile(changelogFilename, newChangelogContent); - - console.log('CHANGELOG updated'); -} - -main().catch((error) => { - console.error(error); - process.exit(1); -}); diff --git a/development/build/etc.js b/development/build/etc.js index 49070887f..754a64f78 100644 --- a/development/build/etc.js +++ b/development/build/etc.js @@ -4,7 +4,7 @@ const gulpZip = require('gulp-zip'); const del = require('del'); const pify = require('pify'); const pump = pify(require('pump')); -const baseManifest = require('../../app/manifest/_base.json'); +const { version } = require('../../package.json'); const { createTask, composeParallel } = require('./task'); module.exports = createEtcTasks; @@ -38,7 +38,7 @@ function createZipTask(target) { return async () => { await pump( gulp.src(`dist/${target}/**`), - gulpZip(`metamask-${target}-${baseManifest.version}.zip`), + gulpZip(`metamask-${target}-${version}.zip`), gulp.dest('builds'), ); }; diff --git a/development/build/manifest.js b/development/build/manifest.js index 340db1272..09df35cbd 100644 --- a/development/build/manifest.js +++ b/development/build/manifest.js @@ -3,6 +3,7 @@ const path = require('path'); const { merge, cloneDeep } = require('lodash'); const baseManifest = require('../../app/manifest/_base.json'); +const { version } = require('../../package.json'); const { createTask, composeSeries } = require('./task'); @@ -23,7 +24,11 @@ function createManifestTasks({ browserPlatforms }) { `${platform}.json`, ), ); - const result = merge(cloneDeep(baseManifest), platformModifications); + const result = merge( + cloneDeep(baseManifest), + { version }, + platformModifications, + ); const dir = path.join('.', 'dist', platform); await fs.mkdir(dir, { recursive: true }); await writeJson(result, path.join(dir, 'manifest.json')); diff --git a/development/build/scripts.js b/development/build/scripts.js index 2bc5fe5c3..c66a31e33 100644 --- a/development/build/scripts.js +++ b/development/build/scripts.js @@ -22,7 +22,7 @@ const metamaskrc = require('rc')('metamask', { SEGMENT_LEGACY_WRITE_KEY: process.env.SEGMENT_LEGACY_WRITE_KEY, }); -const baseManifest = require('../../app/manifest/_base.json'); +const { version } = require('../../package.json'); const packageJSON = require('../../package.json'); const { @@ -424,7 +424,7 @@ function getEnvironmentVariables({ devMode, testing }) { return { METAMASK_DEBUG: devMode, METAMASK_ENVIRONMENT: environment, - METAMASK_VERSION: baseManifest.version, + METAMASK_VERSION: version, NODE_ENV: devMode ? 'development' : 'production', IN_TEST: testing ? 'true' : false, PUBNUB_SUB_KEY: process.env.PUBNUB_SUB_KEY || '', diff --git a/development/build/static.js b/development/build/static.js index 0adba6745..9ae309e53 100644 --- a/development/build/static.js +++ b/development/build/static.js @@ -35,7 +35,7 @@ const copyTargets = [ dest: `fonts/fontawesome`, }, { - src: `./ui/app/css/output/`, + src: `./ui/css/output/`, pattern: `*.css`, dest: ``, }, diff --git a/development/build/styles.js b/development/build/styles.js index 108561261..ecda4b661 100644 --- a/development/build/styles.js +++ b/development/build/styles.js @@ -18,8 +18,8 @@ function createStyleTasks({ livereload }) { const prod = createTask( 'styles:prod', createScssBuildTask({ - src: 'ui/app/css/index.scss', - dest: 'ui/app/css/output', + src: 'ui/css/index.scss', + dest: 'ui/css/output', devMode: false, }), ); @@ -27,15 +27,15 @@ function createStyleTasks({ livereload }) { const dev = createTask( 'styles:dev', createScssBuildTask({ - src: 'ui/app/css/index.scss', - dest: 'ui/app/css/output', + src: 'ui/css/index.scss', + dest: 'ui/css/output', devMode: true, - pattern: 'ui/app/**/*.scss', + pattern: 'ui/**/*.scss', }), ); const lint = createTask('lint-scss', function () { - return gulp.src('ui/app/css/itcss/**/*.scss').pipe( + return gulp.src('ui/css/itcss/**/*.scss').pipe( gulpStylelint({ reporters: [{ formatter: 'string', console: true }], fix: true, diff --git a/development/lib/changelog/changelog.js b/development/lib/changelog/changelog.js deleted file mode 100644 index b16dca200..000000000 --- a/development/lib/changelog/changelog.js +++ /dev/null @@ -1,305 +0,0 @@ -const semver = require('semver'); - -const { orderedChangeCategories, unreleased } = require('./constants'); - -const changelogTitle = '# Changelog'; -const changelogDescription = `All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).`; - -// Stringification helpers - -function stringifyCategory(category, changes) { - const categoryHeader = `### ${category}`; - if (changes.length === 0) { - return categoryHeader; - } - const changeDescriptions = changes - .map((description) => `- ${description}`) - .join('\n'); - return `${categoryHeader}\n${changeDescriptions}`; -} - -function stringifyRelease(version, categories, { date, status } = {}) { - const releaseHeader = `## [${version}]${date ? ` - ${date}` : ''}${ - status ? ` [${status}]` : '' - }`; - const categorizedChanges = orderedChangeCategories - .filter((category) => categories[category]) - .map((category) => { - const changes = categories[category]; - return stringifyCategory(category, changes); - }) - .join('\n\n'); - if (categorizedChanges === '') { - return releaseHeader; - } - return `${releaseHeader}\n${categorizedChanges}`; -} - -function stringifyReleases(releases, changes) { - const stringifiedUnreleased = stringifyRelease( - unreleased, - changes[unreleased], - ); - const stringifiedReleases = releases.map(({ version, date, status }) => { - const categories = changes[version]; - return stringifyRelease(version, categories, { date, status }); - }); - - return [stringifiedUnreleased, ...stringifiedReleases].join('\n\n'); -} - -function withTrailingSlash(url) { - return url.endsWith('/') ? url : `${url}/`; -} - -function getCompareUrl(repoUrl, firstRef, secondRef) { - return `${withTrailingSlash(repoUrl)}compare/${firstRef}...${secondRef}`; -} - -function getTagUrl(repoUrl, tag) { - return `${withTrailingSlash(repoUrl)}releases/tag/${tag}`; -} - -function stringifyLinkReferenceDefinitions(repoUrl, releases) { - const orderedReleases = releases - .map(({ version }) => version) - .sort((a, b) => semver.gt(a, b)); - - // The "Unreleased" section represents all changes made since the *highest* - // release, not the most recent release. This is to accomodate patch releases - // of older versions that don't represent the latest set of changes. - // - // For example, if a library has a v2.0.0 but the v1.0.0 release needed a - // security update, the v1.0.1 release would then be the most recent, but the - // range of unreleased changes would remain `v2.0.0...HEAD`. - const unreleasedLinkReferenceDefinition = `[${unreleased}]: ${getCompareUrl( - repoUrl, - `v${orderedReleases[0]}`, - 'HEAD', - )}`; - - // The "previous" release that should be used for comparison is not always - // the most recent release chronologically. The _highest_ version that is - // lower than the current release is used as the previous release, so that - // patch releases on older releases can be accomodated. - const releaseLinkReferenceDefinitions = releases - .map(({ version }) => { - if (version === orderedReleases[orderedReleases.length - 1]) { - return `[${version}]: ${getTagUrl(repoUrl, `v${version}`)}`; - } - const versionIndex = orderedReleases.indexOf(version); - const previousVersion = orderedReleases - .slice(versionIndex) - .find((releaseVersion) => { - return semver.gt(version, releaseVersion); - }); - return `[${version}]: ${getCompareUrl( - repoUrl, - `v${previousVersion}`, - `v${version}`, - )}`; - }) - .join('\n'); - return `${unreleasedLinkReferenceDefinition}\n${releaseLinkReferenceDefinitions}${ - releases.length > 0 ? '\n' : '' - }`; -} - -/** - * @typedef {import('./constants.js').Unreleased} Unreleased - * @typedef {import('./constants.js').ChangeCategories ChangeCategories} - */ -/** - * @typedef {import('./constants.js').Version} Version - */ -/** - * Release metadata. - * @typedef {Object} ReleaseMetadata - * @property {string} date - An ISO-8601 formatted date, representing the - * release date. - * @property {string} status -The status of the release (e.g. 'WITHDRAWN', 'DEPRECATED') - * @property {Version} version - The version of the current release. - */ - -/** - * Category changes. A list of changes in a single category. - * @typedef {Array} CategoryChanges - */ - -/** - * Release changes, organized by category - * @typedef {Record} ReleaseChanges - */ - -/** - * Changelog changes, organized by release and by category. - * @typedef {Record} ChangelogChanges - */ - -/** - * A changelog that complies with the ["keep a changelog" v1.1.0 guidelines]{@link https://keepachangelog.com/en/1.0.0/}. - * - * This changelog starts out completely empty, and allows new releases and - * changes to be added such that the changelog remains compliant at all times. - * This can be used to help validate the contents of a changelog, normalize - * formatting, update a changelog, or build one from scratch. - */ -class Changelog { - /** - * Construct an empty changelog - * - * @param {Object} options - * @param {string} options.repoUrl - The GitHub repository URL for the current project - */ - constructor({ repoUrl }) { - this._releases = []; - this._changes = { [unreleased]: {} }; - this._repoUrl = repoUrl; - } - - /** - * Add a release to the changelog - * - * @param {Object} options - * @param {boolean} [options.addToStart] - Determines whether the release is - * added to the top or bottom of the changelog. This defaults to 'true' - * because new releases should be added to the top of the changelog. This - * should be set to 'false' when parsing a changelog top-to-bottom. - * @param {string} [options.date] - An ISO-8601 formatted date, representing the - * release date. - * @param {string} [options.status] - The status of the release (e.g. - * 'WITHDRAWN', 'DEPRECATED') - * @param {Version} options.version - The version of the current release, - * which should be a [semver]{@link https://semver.org/spec/v2.0.0.html}- - * compatible version. - */ - addRelease({ addToStart = true, date, status, version }) { - if (!version) { - throw new Error('Version required'); - } else if (semver.valid(version) === null) { - throw new Error(`Not a valid semver version: '${version}'`); - } else if (this._changes[version]) { - throw new Error(`Release already exists: '${version}'`); - } - - this._changes[version] = {}; - const newRelease = { version, date, status }; - if (addToStart) { - this._releases.unshift(newRelease); - } else { - this._releases.push(newRelease); - } - } - - /** - * Add a change to the changelog - * - * @param {Object} options - * @param {boolean} [options.addToStart] - Determines whether the change is - * added to the top or bottom of the list of changes in this category. This - * defaults to 'true' because changes should be in reverse-chronological - * order. This should be set to 'false' when parsing a changelog top-to- - * bottom. - * @param {string} options.category - The category of the change. - * @param {string} options.description - The description of the change. - * @param {Version} [options.version] - The version this change was released - * in. If this is not given, the change is assumed to be unreleased. - */ - addChange({ addToStart = true, category, description, version }) { - if (!category) { - throw new Error('Category required'); - } else if (!orderedChangeCategories.includes(category)) { - throw new Error(`Unrecognized category: '${category}'`); - } else if (!description) { - throw new Error('Description required'); - } else if (version !== undefined && !this._changes[version]) { - throw new Error(`Specified release version does not exist: '${version}'`); - } - - const release = version - ? this._changes[version] - : this._changes[unreleased]; - - if (!release[category]) { - release[category] = []; - } - if (addToStart) { - release[category].unshift(description); - } else { - release[category].push(description); - } - } - - /** - * Migrate all unreleased changes to a release section. - * - * Changes are migrated in their existing categories, and placed above any - * pre-existing changes in that category. - * - * @param {Version} version - The release version to migrate unreleased - * changes to. - */ - migrateUnreleasedChangesToRelease(version) { - const releaseChanges = this._changes[version]; - if (!releaseChanges) { - throw new Error(`Specified release version does not exist: '${version}'`); - } - - const unreleasedChanges = this._changes[unreleased]; - - for (const category of Object.keys(unreleasedChanges)) { - if (releaseChanges[category]) { - releaseChanges[category] = [ - ...unreleasedChanges[category], - ...releaseChanges[category], - ]; - } else { - releaseChanges[category] = unreleasedChanges[category]; - } - } - this._changes[unreleased] = {}; - } - - /** - * Gets the metadata for all releases. - * @returns {Array} The metadata for each release. - */ - getReleases() { - return this._releases; - } - - /** - * Gets the changes in the given release, organized by category. - * @param {Version} version - The version of the release being retrieved. - * @returns {ReleaseChanges} The changes included in the given released. - */ - getReleaseChanges(version) { - return this._changes[version]; - } - - /** - * Gets all changes that have not yet been released - * @returns {ReleaseChanges} The changes that have not yet been released. - */ - getUnreleasedChanges() { - return this._changes[unreleased]; - } - - /** - * The stringified changelog, formatted according to [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - * @returns {string} The stringified changelog. - */ - toString() { - return `${changelogTitle} -${changelogDescription} - -${stringifyReleases(this._releases, this._changes)} - -${stringifyLinkReferenceDefinitions(this._repoUrl, this._releases)}`; - } -} - -module.exports = Changelog; diff --git a/development/lib/changelog/constants.js b/development/lib/changelog/constants.js deleted file mode 100644 index c2b8ae008..000000000 --- a/development/lib/changelog/constants.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * Version string - * @typedef {string} Version - A [SemVer]{@link https://semver.org/spec/v2.0.0.html}- - * compatible version string. - */ - -/** - * Change categories. - * - * Most of these categories are from [Keep a Changelog]{@link https://keepachangelog.com/en/1.0.0/}. - * The "Uncategorized" category was added because we have many changes from - * older releases that would be difficult to categorize. - * - * @typedef {Record} ChangeCategories - * @property {'Added'} Added - for new features. - * @property {'Changed'} Changed - for changes in existing functionality. - * @property {'Deprecated'} Deprecated - for soon-to-be removed features. - * @property {'Fixed'} Fixed - for any bug fixes. - * @property {'Removed'} Removed - for now removed features. - * @property {'Security'} Security - in case of vulnerabilities. - * @property {'Uncategorized'} Uncategorized - for any changes that have not - * yet been categorized. - */ - -/** - * @type {ChangeCategories} - */ -const changeCategories = { - Added: 'Added', - Changed: 'Changed', - Deprecated: 'Deprecated', - Fixed: 'Fixed', - Removed: 'Removed', - Security: 'Security', - Uncategorized: 'Uncategorized', -}; - -/** - * Change categories in the order in which they should be listed in the - * changelog. - * - * @type {Array} - */ -const orderedChangeCategories = [ - 'Uncategorized', - 'Added', - 'Changed', - 'Deprecated', - 'Removed', - 'Fixed', - 'Security', -]; - -/** - * The header for the section of the changelog listing unreleased changes. - * @typedef {'Unreleased'} Unreleased - */ - -/** - * @type {Unreleased} - */ -const unreleased = 'Unreleased'; - -module.exports = { - changeCategories, - orderedChangeCategories, - unreleased, -}; diff --git a/development/lib/changelog/parseChangelog.js b/development/lib/changelog/parseChangelog.js deleted file mode 100644 index 228da3635..000000000 --- a/development/lib/changelog/parseChangelog.js +++ /dev/null @@ -1,84 +0,0 @@ -const Changelog = require('./changelog'); -const { unreleased } = require('./constants'); - -function truncated(line) { - return line.length > 80 ? `${line.slice(0, 80)}...` : line; -} - -/** - * Constructs a Changelog instance that represents the given changelog, which - * is parsed for release and change informatino. - * @param {Object} options - * @param {string} options.changelogContent - The changelog to parse - * @param {string} options.repoUrl - The GitHub repository URL for the current - * project. - * @returns {Changelog} A changelog instance that reflects the changelog text - * provided. - */ -function parseChangelog({ changelogContent, repoUrl }) { - const changelogLines = changelogContent.split('\n'); - const changelog = new Changelog({ repoUrl }); - - const unreleasedHeaderIndex = changelogLines.indexOf(`## [${unreleased}]`); - if (unreleasedHeaderIndex === -1) { - throw new Error(`Failed to find ${unreleased} header`); - } - const unreleasedLinkReferenceDefinition = changelogLines.findIndex((line) => { - return line.startsWith(`[${unreleased}]: `); - }); - if (unreleasedLinkReferenceDefinition === -1) { - throw new Error(`Failed to find ${unreleased} link reference definition`); - } - - const contentfulChangelogLines = changelogLines - .slice(unreleasedHeaderIndex + 1, unreleasedLinkReferenceDefinition) - .filter((line) => line !== ''); - - let mostRecentRelease; - let mostRecentCategory; - for (const line of contentfulChangelogLines) { - if (line.startsWith('## [')) { - const results = line.match( - /^## \[(\d+\.\d+\.\d+)\](?: - (\d\d\d\d-\d\d-\d\d))?(?: \[(\w+)\])?/u, - ); - if (results === null) { - throw new Error(`Malformed release header: '${truncated(line)}'`); - } - mostRecentRelease = results[1]; - mostRecentCategory = undefined; - const date = results[2]; - const status = results[3]; - changelog.addRelease({ - addToStart: false, - date, - status, - version: mostRecentRelease, - }); - } else if (line.startsWith('### ')) { - const results = line.match(/^### (\w+)$\b/u); - if (results === null) { - throw new Error(`Malformed category header: '${truncated(line)}'`); - } - mostRecentCategory = results[1]; - } else if (line.startsWith('- ')) { - if (mostRecentCategory === undefined) { - throw new Error(`Category missing for change: '${truncated(line)}'`); - } - const description = line.slice(2); - changelog.addChange({ - addToStart: false, - category: mostRecentCategory, - description, - version: mostRecentRelease, - }); - } else if (mostRecentRelease === null) { - continue; - } else { - throw new Error(`Unrecognized line: '${truncated(line)}'`); - } - } - - return changelog; -} - -module.exports = { parseChangelog }; diff --git a/development/lib/changelog/updateChangelog.js b/development/lib/changelog/updateChangelog.js deleted file mode 100644 index b94d6caf1..000000000 --- a/development/lib/changelog/updateChangelog.js +++ /dev/null @@ -1,171 +0,0 @@ -const assert = require('assert').strict; -const runCommand = require('../runCommand'); -const { parseChangelog } = require('./parseChangelog'); -const { changeCategories } = require('./constants'); - -async function getMostRecentTag() { - const [mostRecentTagCommitHash] = await runCommand('git', [ - 'rev-list', - '--tags', - '--max-count=1', - ]); - const [mostRecentTag] = await runCommand('git', [ - 'describe', - '--tags', - mostRecentTagCommitHash, - ]); - assert.equal(mostRecentTag[0], 'v', 'Most recent tag should start with v'); - return mostRecentTag; -} - -async function getCommits(commitHashes) { - const commits = []; - for (const commitHash of commitHashes) { - const [subject] = await runCommand('git', [ - 'show', - '-s', - '--format=%s', - commitHash, - ]); - - let prNumber; - let description = subject; - - // Squash & Merge: the commit subject is parsed as ` (#)` - if (subject.match(/\(#\d+\)/u)) { - const matchResults = subject.match(/\(#(\d+)\)/u); - prNumber = matchResults[1]; - description = subject.match(/^(.+)\s\(#\d+\)/u)[1]; - // Merge: the PR ID is parsed from the git subject (which is of the form `Merge pull request - // # from `, and the description is assumed to be the first line of the body. - // If no body is found, the description is set to the commit subject - } else if (subject.match(/#\d+\sfrom/u)) { - const matchResults = subject.match(/#(\d+)\sfrom/u); - prNumber = matchResults[1]; - const [firstLineOfBody] = await runCommand('git', [ - 'show', - '-s', - '--format=%b', - commitHash, - ]); - description = firstLineOfBody || subject; - } - // Otherwise: - // Normal commits: The commit subject is the description, and the PR ID is omitted. - - commits.push({ prNumber, description }); - } - return commits; -} - -function getAllChangeDescriptions(changelog) { - const releases = changelog.getReleases(); - const changeDescriptions = Object.values( - changelog.getUnreleasedChanges(), - ).flat(); - for (const release of releases) { - changeDescriptions.push( - ...Object.values(changelog.getReleaseChanges(release.version)).flat(), - ); - } - return changeDescriptions; -} - -function getAllLoggedPrNumbers(changelog) { - const changeDescriptions = getAllChangeDescriptions(changelog); - - const prNumbersWithChangelogEntries = []; - for (const description of changeDescriptions) { - const matchResults = description.match(/^\[#(\d+)\]/u); - if (matchResults === null) { - continue; - } - const prNumber = matchResults[1]; - prNumbersWithChangelogEntries.push(prNumber); - } - - return prNumbersWithChangelogEntries; -} - -/** - * @typedef {import('./constants.js').Version} Version - */ - -/** - * Update a changelog with any commits made since the last release. Commits for - * PRs that are already included in the changelog are omitted. - * @param {Object} options - * @param {string} options.changelogContent - The current changelog - * @param {Version} options.currentVersion - The current version - * @param {string} options.repoUrl - The GitHub repository URL for the current - * project. - * @param {boolean} options.isReleaseCandidate - Denotes whether the current - * project is in the midst of release preparation or not. If this is set, any - * new changes are listed under the current release header. Otherwise, they - * are listed under the 'Unreleased' section. - * @returns - */ -async function updateChangelog({ - changelogContent, - currentVersion, - repoUrl, - isReleaseCandidate, -}) { - const changelog = parseChangelog({ changelogContent, repoUrl }); - - // Ensure we have all tags on remote - await runCommand('git', ['fetch', '--tags']); - const mostRecentTag = await getMostRecentTag(); - const commitsHashesSinceLastRelease = await runCommand('git', [ - 'rev-list', - `${mostRecentTag}..HEAD`, - ]); - const commits = await getCommits(commitsHashesSinceLastRelease); - - const loggedPrNumbers = getAllLoggedPrNumbers(changelog); - const newCommits = commits.filter( - ({ prNumber }) => !loggedPrNumbers.includes(prNumber), - ); - - const hasUnreleasedChanges = changelog.getUnreleasedChanges().length !== 0; - if ( - newCommits.length === 0 && - (!isReleaseCandidate || hasUnreleasedChanges) - ) { - return undefined; - } - - // Ensure release header exists, if necessary - if ( - isReleaseCandidate && - !changelog - .getReleases() - .find((release) => release.version === currentVersion) - ) { - changelog.addRelease({ version: currentVersion }); - } - - if (isReleaseCandidate && hasUnreleasedChanges) { - changelog.migrateUnreleasedChangesToRelease(currentVersion); - } - - const newChangeEntries = newCommits.map(({ prNumber, description }) => { - if (prNumber) { - const prefix = `[#${prNumber}](${repoUrl}/pull/${prNumber})`; - return `${prefix}: ${description}`; - } - return description; - }); - - for (const description of newChangeEntries.reverse()) { - changelog.addChange({ - version: isReleaseCandidate ? currentVersion : undefined, - category: changeCategories.Uncategorized, - description, - }); - } - - return changelog.toString(); -} - -module.exports = { updateChangelog }; diff --git a/development/lib/runCommand.js b/development/lib/runCommand.js deleted file mode 100644 index 2d92ffe99..000000000 --- a/development/lib/runCommand.js +++ /dev/null @@ -1,79 +0,0 @@ -const spawn = require('cross-spawn'); - -/** - * Run a command to completion using the system shell. - * - * This will run a command with the specified arguments, and resolve when the - * process has exited. The STDOUT stream is monitored for output, which is - * returned after being split into lines. All output is expected to be UTF-8 - * encoded, and empty lines are removed from the output. - * - * Anything received on STDERR is assumed to indicate a problem, and is tracked - * as an error. - * - * @param {string} command - The command to run - * @param {Array} [args] - The arguments to pass to the command - * @returns {Array} Lines of output received via STDOUT - */ -async function runCommand(command, args) { - const output = []; - let mostRecentError; - let errorSignal; - let errorCode; - const internalError = new Error('Internal'); - try { - await new Promise((resolve, reject) => { - const childProcess = spawn(command, args, { encoding: 'utf8' }); - childProcess.stdout.setEncoding('utf8'); - childProcess.stderr.setEncoding('utf8'); - - childProcess.on('error', (error) => { - mostRecentError = error; - }); - - childProcess.stdout.on('data', (message) => { - const nonEmptyLines = message.split('\n').filter((line) => line !== ''); - output.push(...nonEmptyLines); - }); - - childProcess.stderr.on('data', (message) => { - mostRecentError = new Error(message.trim()); - }); - - childProcess.once('exit', (code, signal) => { - if (code === 0) { - return resolve(); - } - errorCode = code; - errorSignal = signal; - return reject(internalError); - }); - }); - } catch (error) { - /** - * The error is re-thrown here in an `async` context to preserve the stack trace. If this was - * was thrown inside the Promise constructor, the stack trace would show a few frames of - * Node.js internals then end, without indicating where `runCommand` was called. - */ - if (error === internalError) { - let errorMessage; - if (errorCode !== null && errorSignal !== null) { - errorMessage = `Terminated by signal '${errorSignal}'; exited with code '${errorCode}'`; - } else if (errorSignal !== null) { - errorMessage = `Terminaled by signal '${errorSignal}'`; - } else if (errorCode === null) { - errorMessage = 'Exited with no code or signal'; - } else { - errorMessage = `Exited with code '${errorCode}'`; - } - const improvedError = new Error(errorMessage); - if (mostRecentError) { - improvedError.cause = mostRecentError; - } - throw improvedError; - } - } - return output; -} - -module.exports = runCommand; diff --git a/development/verify-locale-strings.js b/development/verify-locale-strings.js index 2e7b7584b..a37a7936e 100644 --- a/development/verify-locale-strings.js +++ b/development/verify-locale-strings.js @@ -171,8 +171,8 @@ async function verifyEnglishLocale() { // In the meantime we'll use glob to specify which paths can be strict searched // and gradually phase out the key based search const globsToStrictSearch = [ - 'ui/app/components/app/metamask-translation/*.js', - 'ui/app/pages/confirmation/templates/*.js', + 'ui/components/app/metamask-translation/*.js', + 'ui/pages/confirmation/templates/*.js', ]; const testGlob = '**/*.test.js'; const javascriptFiles = await glob(['ui/**/*.js', 'shared/**/*.js'], { diff --git a/jest.config.js b/jest.config.js index df0558fcf..e186bc814 100644 --- a/jest.config.js +++ b/jest.config.js @@ -1,7 +1,7 @@ module.exports = { restoreMocks: true, coverageDirectory: 'jest-coverage/', - collectCoverageFrom: ['/ui/app/**/swaps/**'], + collectCoverageFrom: ['/ui/**/swaps/**'], coveragePathIgnorePatterns: ['.stories.js', '.snap'], coverageThreshold: { global: { diff --git a/jsconfig.json b/jsconfig.json index d0e8e66fc..b0cc155d5 100644 --- a/jsconfig.json +++ b/jsconfig.json @@ -1,3 +1,14 @@ { - "exclude": ["node:console"] + "exclude": [ + "*.log", + "builds", + "coverage", + "dist", + "docs", + "lavamoat", + "node:console", + "node_modules", + "patches", + "test-artifacts" + ] } diff --git a/lavamoat/node/policy.json b/lavamoat/node/policy.json index 56892f1bf..e744f1175 100644 --- a/lavamoat/node/policy.json +++ b/lavamoat/node/policy.json @@ -223,6 +223,11 @@ "js-tokens": true } }, + "@babel/parser": { + "globals": { + "BigInt": true + } + }, "@babel/plugin-proposal-async-generator-functions": { "packages": { "@babel/core": true, @@ -869,6 +874,7 @@ }, "acorn": { "globals": { + "BigInt": true, "define": true } }, @@ -878,6 +884,9 @@ } }, "acorn-node": { + "globals": { + "BigInt": true + }, "packages": { "acorn": true, "acorn-dynamic-import": true, @@ -950,6 +959,16 @@ "buffer-equal": true } }, + "are-we-there-yet": { + "builtin": { + "events.EventEmitter": true, + "util.inherits": true + }, + "packages": { + "delegates": true, + "readable-stream": true + } + }, "arr-diff": { "packages": { "arr-flatten": true, @@ -1302,6 +1321,7 @@ "anymatch": true, "async-each": true, "braces": true, + "fsevents": true, "glob-parent": true, "inherits": true, "is-binary-path": true, @@ -1553,6 +1573,16 @@ "through2": true } }, + "detect-libc": { + "builtin": { + "child_process.spawnSync": true, + "fs.readdirSync": true, + "os.platform": true + }, + "globals": { + "process.env": true + } + }, "detective": { "packages": { "acorn-node": true, @@ -1640,7 +1670,10 @@ "es-abstract": { "globals": { "AggregateError": true, + "Atomics": true, + "BigInt": true, "FinalizationRegistry": true, + "SharedArrayBuffer": true, "WeakRef": true }, "packages": { @@ -1993,6 +2026,45 @@ "process.version": true } }, + "fsevents": { + "builtin": { + "events.EventEmitter": true, + "fs.stat": true, + "path.join": true, + "util.inherits": true + }, + "globals": { + "__dirname": true, + "process.nextTick": true, + "process.platform": true, + "setImmediate": true + }, + "native": true, + "packages": { + "node-pre-gyp": true + } + }, + "gauge": { + "builtin": { + "util.format": true + }, + "globals": { + "clearInterval": true, + "process": true, + "setImmediate": true, + "setInterval": true + }, + "packages": { + "aproba": true, + "console-control-strings": true, + "has-unicode": true, + "object-assign": true, + "signal-exit": true, + "string-width": true, + "strip-ansi": true, + "wide-align": true + } + }, "get-assigned-identifiers": { "builtin": { "assert.equal": true @@ -2373,6 +2445,16 @@ "process.argv": true } }, + "has-unicode": { + "builtin": { + "os.type": true + }, + "globals": { + "process.env.LANG": true, + "process.env.LC_ALL": true, + "process.env.LC_CTYPE": true + } + }, "has-value": { "packages": { "get-value": true, @@ -2526,6 +2608,11 @@ "is-plain-object": true } }, + "is-fullwidth-code-point": { + "packages": { + "number-is-nan": true + } + }, "is-glob": { "packages": { "is-extglob": true @@ -2910,6 +2997,56 @@ "setTimeout": true } }, + "node-pre-gyp": { + "builtin": { + "events.EventEmitter": true, + "fs.existsSync": true, + "fs.readFileSync": true, + "fs.renameSync": true, + "path.dirname": true, + "path.existsSync": true, + "path.join": true, + "path.resolve": true, + "url.parse": true, + "url.resolve": true, + "util.inherits": true + }, + "globals": { + "__dirname": true, + "console.log": true, + "process.arch": true, + "process.cwd": true, + "process.env": true, + "process.platform": true, + "process.version.substr": true, + "process.versions": true + }, + "packages": { + "detect-libc": true, + "nopt": true, + "npmlog": true, + "rimraf": true, + "semver": true + } + }, + "nopt": { + "builtin": { + "path": true, + "stream.Stream": true, + "url": true + }, + "globals": { + "console": true, + "process.argv": true, + "process.env.DEBUG_NOPT": true, + "process.env.NOPT_DEBUG": true, + "process.platform": true + }, + "packages": { + "abbrev": true, + "osenv": true + } + }, "normalize-path": { "packages": { "remove-trailing-separator": true @@ -2925,6 +3062,22 @@ "once": true } }, + "npmlog": { + "builtin": { + "events.EventEmitter": true, + "util": true + }, + "globals": { + "process.nextTick": true, + "process.stderr": true + }, + "packages": { + "are-we-there-yet": true, + "console-control-strings": true, + "gauge": true, + "set-blocking": true + } + }, "object-copy": { "packages": { "copy-descriptor": true, @@ -2937,6 +3090,7 @@ "util.inspect": true }, "globals": { + "BigInt": true, "HTMLElement": true } }, @@ -2991,6 +3145,54 @@ "readable-stream": true } }, + "os-homedir": { + "builtin": { + "os.homedir": true + }, + "globals": { + "process.env": true, + "process.getuid": true, + "process.platform": true + } + }, + "os-tmpdir": { + "globals": { + "process.env.SystemRoot": true, + "process.env.TEMP": true, + "process.env.TMP": true, + "process.env.TMPDIR": true, + "process.env.windir": true, + "process.platform": true + } + }, + "osenv": { + "builtin": { + "child_process.exec": true, + "path": true + }, + "globals": { + "process.env.COMPUTERNAME": true, + "process.env.ComSpec": true, + "process.env.EDITOR": true, + "process.env.HOSTNAME": true, + "process.env.PATH": true, + "process.env.PROMPT": true, + "process.env.PS1": true, + "process.env.Path": true, + "process.env.SHELL": true, + "process.env.USER": true, + "process.env.USERDOMAIN": true, + "process.env.USERNAME": true, + "process.env.VISUAL": true, + "process.env.path": true, + "process.nextTick": true, + "process.platform": true + }, + "packages": { + "os-homedir": true, + "os-tmpdir": true + } + }, "parent-module": { "packages": { "callsites": true @@ -3573,6 +3775,12 @@ "process": true } }, + "set-blocking": { + "globals": { + "process.stderr": true, + "process.stdout": true + } + }, "set-value": { "packages": { "extend-shallow": true, @@ -3766,6 +3974,7 @@ }, "string-width": { "packages": { + "code-point-at": true, "emoji-regex": true, "is-fullwidth-code-point": true, "strip-ansi": true @@ -4322,6 +4531,11 @@ "isexe": true } }, + "wide-align": { + "packages": { + "string-width": true + } + }, "write": { "builtin": { "fs.createWriteStream": true, diff --git a/package.json b/package.json index 050aa01a5..bd820a322 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,11 @@ { "name": "metamask-crx", - "version": "0.0.0", + "version": "9.5.0", "private": true, + "repository": { + "type": "git", + "url": "https://github.com/MetaMask/metamask-extension" + }, "scripts": { "setup": "yarn install && yarn setup:postinstall", "setup:postinstall": "yarn patch-package && yarn allow-scripts", @@ -49,7 +53,7 @@ "verify-locales": "node ./development/verify-locale-strings.js", "verify-locales:fix": "node ./development/verify-locale-strings.js --fix", "mozilla-lint": "addons-linter dist/firefox", - "watch": "mocha --watch --require test/env.js --require test/setup.js --reporter min --recursive \"test/unit/**/*.js\" \"ui/app/**/*.test.js\" \"shared/**/*.test.js\"", + "watch": "mocha --watch --require test/env.js --require test/setup.js --reporter min --recursive \"test/unit/**/*.js\" \"ui/**/*.test.js\" \"shared/**/*.test.js\"", "devtools:react": "react-devtools", "devtools:redux": "remotedev --hostname=localhost --port=8000", "start:dev": "concurrently -k -n build,react,redux yarn:start yarn:devtools:react yarn:devtools:redux", @@ -57,7 +61,7 @@ "storybook": "start-storybook -p 6006 -c .storybook --static-dir ./app ./storybook/images", "storybook:build": "build-storybook -c .storybook -o storybook-build --static-dir ./app ./storybook/images", "storybook:deploy": "storybook-to-ghpages --existing-output-dir storybook-build --remote storybook --branch master", - "update-changelog": "node ./development/auto-changelog.js", + "update-changelog": "auto-changelog update", "generate:migration": "./development/generate-migration.sh", "lavamoat:auto": "lavamoat ./development/build/index.js --writeAutoPolicy", "lavamoat:debug": "lavamoat ./development/build/index.js --writeAutoPolicyDebug" @@ -91,14 +95,15 @@ "@lavamoat/preinstall-always-fail": "^1.0.0", "@material-ui/core": "^4.11.0", "@metamask/contract-metadata": "^1.22.0", - "@metamask/controllers": "^6.2.1", - "@metamask/eth-ledger-bridge-keyring": "^0.3.0", + "@metamask/controllers": "^8.0.0", + "@metamask/eth-ledger-bridge-keyring": "^0.4.0", "@metamask/eth-token-tracker": "^3.0.1", "@metamask/etherscan-link": "^2.0.0", "@metamask/inpage-provider": "^8.0.4", "@metamask/jazzicon": "^2.0.0", "@metamask/logo": "^2.5.0", "@metamask/obs-store": "^5.0.0", + "@metamask/post-message-stream": "^4.0.0", "@popperjs/core": "^2.4.0", "@reduxjs/toolkit": "^1.5.0", "@sentry/browser": "^5.26.0", @@ -158,7 +163,6 @@ "nonce-tracker": "^1.0.0", "obj-multiplex": "^1.0.0", "pify": "^5.0.0", - "post-message-stream": "^3.0.0", "promise-to-callback": "^1.0.0", "prop-types": "^15.6.1", "pubnub": "4.27.3", @@ -206,6 +210,7 @@ "@babel/preset-react": "^7.0.0", "@babel/register": "^7.5.5", "@lavamoat/allow-scripts": "^1.0.4", + "@metamask/auto-changelog": "^1.0.0", "@metamask/eslint-config": "^6.0.0", "@metamask/eslint-config-jest": "^6.0.0", "@metamask/eslint-config-mocha": "^6.0.0", @@ -329,7 +334,8 @@ "gc-stats": false, "github:assemblyscript/assemblyscript": false, "tiny-secp256k1": false, - "@lavamoat/preinstall-always-fail": false + "@lavamoat/preinstall-always-fail": false, + "fsevents": false } } } diff --git a/shared/constants/app.js b/shared/constants/app.js index 93c843846..7e1b66572 100644 --- a/shared/constants/app.js +++ b/shared/constants/app.js @@ -28,5 +28,5 @@ export const MESSAGE_TYPE = { WATCH_ASSET: 'wallet_watchAsset', WATCH_ASSET_LEGACY: 'metamask_watchAsset', ADD_ETHEREUM_CHAIN: 'wallet_addEthereumChain', - SWITCH_ETHEREUM_CHAIN: 'metamask_switchEthereumChain', + SWITCH_ETHEREUM_CHAIN: 'wallet_switchEthereumChain', }; diff --git a/shared/constants/transaction.js b/shared/constants/transaction.js index 44a777a94..5eedd6086 100644 --- a/shared/constants/transaction.js +++ b/shared/constants/transaction.js @@ -1,3 +1,5 @@ +import { MESSAGE_TYPE } from './app'; + /** * Transaction Type is a MetaMask construct used internally * @typedef {Object} TransactionTypes @@ -51,6 +53,11 @@ export const TRANSACTION_TYPES = { DEPLOY_CONTRACT: 'contractDeployment', SWAP: 'swap', SWAP_APPROVAL: 'swapApproval', + SIGN: MESSAGE_TYPE.ETH_SIGN, + SIGN_TYPED_DATA: MESSAGE_TYPE.ETH_SIGN_TYPED_DATA, + PERSONAL_SIGN: MESSAGE_TYPE.PERSONAL_SIGN, + ETH_DECRYPT: MESSAGE_TYPE.ETH_DECRYPT, + ETH_GET_ENCRYPTION_PUBLIC_KEY: MESSAGE_TYPE.ETH_GET_ENCRYPTION_PUBLIC_KEY, }; /** diff --git a/shared/modules/fetch-with-timeout.test.js b/shared/modules/fetch-with-timeout.test.js index a7b1daa1a..3b9ce1552 100644 --- a/shared/modules/fetch-with-timeout.test.js +++ b/shared/modules/fetch-with-timeout.test.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import nock from 'nock'; import getFetchWithTimeout from './fetch-with-timeout'; diff --git a/shared/modules/tests/transaction.utils.test.js b/shared/modules/tests/transaction.utils.test.js index 2aac76828..0da399f34 100644 --- a/shared/modules/tests/transaction.utils.test.js +++ b/shared/modules/tests/transaction.utils.test.js @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import { MAINNET_CHAIN_ID, MAINNET_NETWORK_ID, diff --git a/test/e2e/metamask-ui.spec.js b/test/e2e/metamask-ui.spec.js index 78ed5f59d..92390f33f 100644 --- a/test/e2e/metamask-ui.spec.js +++ b/test/e2e/metamask-ui.spec.js @@ -1,4 +1,4 @@ -const assert = require('assert'); +const { strict: assert } = require('assert'); const enLocaleMessages = require('../../app/_locales/en/messages.json'); const { tinyDelayMs, regularDelayMs, largeDelayMs } = require('./helpers'); @@ -83,7 +83,12 @@ describe('MetaMask', function () { let seedPhrase; - it('reveals the seed phrase', async function () { + it('renders the Secret Recovery Phrase intro screen', async function () { + await driver.clickElement('.seed-phrase-intro__left button'); + await driver.delay(regularDelayMs); + }); + + it('reveals the Secret Recovery Phrase', async function () { const byRevealButton = '.reveal-seed-phrase__secret-blocker .reveal-seed-phrase__reveal-button'; await driver.findElement(byRevealButton); @@ -111,7 +116,7 @@ describe('MetaMask', function () { await driver.delay(tinyDelayMs); } - it('can retype the seed phrase', async function () { + it('can retype the Secret Recovery Phrase', async function () { const words = seedPhrase.split(' '); for (const word of words) { @@ -213,7 +218,7 @@ describe('MetaMask', function () { }); }); - describe('Import seed phrase', function () { + describe('Import Secret Recovery Phrase', function () { it('logs out of the vault', async function () { await driver.clickElement('.account-menu__icon'); await driver.delay(regularDelayMs); @@ -226,11 +231,14 @@ describe('MetaMask', function () { await driver.delay(regularDelayMs); }); - it('imports seed phrase', async function () { + it('imports Secret Recovery Phrase', async function () { const restoreSeedLink = await driver.findClickableElement( '.unlock-page__link--import', ); - assert.equal(await restoreSeedLink.getText(), 'import using seed phrase'); + assert.equal( + await restoreSeedLink.getText(), + 'import using Secret Recovery Phrase', + ); await restoreSeedLink.click(); await driver.delay(regularDelayMs); @@ -1112,16 +1120,10 @@ describe('MetaMask', function () { }); it('finds the transaction in the transactions list', async function () { - await driver.wait(async () => { - const confirmedTxes = await driver.findElements( - '.transaction-list__completed-transactions .transaction-list-item', - ); - return confirmedTxes.length === 1; - }, 10000); - await driver.waitForSelector( { - css: '.transaction-list-item__primary-currency', + css: + '.transaction-list__completed-transactions .transaction-list-item__primary-currency', text: '-1 TST', }, { timeout: 10000 }, @@ -1214,15 +1216,9 @@ describe('MetaMask', function () { }); it('finds the transaction in the transactions list', async function () { - await driver.wait(async () => { - const confirmedTxes = await driver.findElements( - '.transaction-list__completed-transactions .transaction-list-item', - ); - return confirmedTxes.length === 2; - }, 10000); - await driver.waitForSelector({ - css: '.transaction-list-item__primary-currency', + css: + '.transaction-list__completed-transactions .transaction-list-item__primary-currency', text: '-1.5 TST', }); @@ -1230,11 +1226,23 @@ describe('MetaMask', function () { css: '.list-item__heading', text: 'Send TST', }); + }); + + it('checks balance', async function () { + await driver.clickElement({ + text: 'Assets', + tag: 'button', + }); await driver.waitForSelector({ - css: '.token-overview__primary-balance', + css: '.asset-list-item__token-button', text: '7.5 TST', }); + + await driver.clickElement({ + text: 'Activity', + tag: 'button', + }); }); }); @@ -1363,13 +1371,6 @@ describe('MetaMask', function () { }); it('finds the transaction in the transactions list', async function () { - await driver.wait(async () => { - const confirmedTxes = await driver.findElements( - '.transaction-list__completed-transactions .transaction-list-item', - ); - return confirmedTxes.length === 3; - }, 10000); - await driver.waitForSelector({ // Select only the heading of the first entry in the transaction list. css: @@ -1422,13 +1423,6 @@ describe('MetaMask', function () { }); it('finds the transaction in the transactions list', async function () { - await driver.wait(async () => { - const confirmedTxes = await driver.findElements( - '.transaction-list__completed-transactions .transaction-list-item', - ); - return confirmedTxes.length === 4; - }, 10000); - await driver.waitForSelector({ // Select the heading of the first transaction list item in the // completed transaction list with text matching Send TST @@ -1438,7 +1432,8 @@ describe('MetaMask', function () { }); await driver.waitForSelector({ - css: '.transaction-list-item__primary-currency', + css: + '.transaction-list__completed-transactions .transaction-list-item:first-child .transaction-list-item__primary-currency', text: '-1.5 TST', }); }); @@ -1504,13 +1499,6 @@ describe('MetaMask', function () { }); it('finds the transaction in the transactions list', async function () { - await driver.wait(async () => { - const confirmedTxes = await driver.findElements( - '.transaction-list__completed-transactions .transaction-list-item', - ); - return confirmedTxes.length === 5; - }, 10000); - await driver.waitForSelector({ css: '.transaction-list__completed-transactions .transaction-list-item:first-child .list-item__heading', @@ -1521,6 +1509,10 @@ describe('MetaMask', function () { describe('Hide token', function () { it('hides the token when clicked', async function () { + await driver.clickElement({ text: 'Assets', tag: 'button' }); + + await driver.clickElement({ text: 'TST', tag: 'span' }); + await driver.clickElement('[data-testid="asset-options__button"]'); await driver.clickElement('[data-testid="asset-options__hide"]'); diff --git a/test/e2e/tests/from-import-ui.spec.js b/test/e2e/tests/from-import-ui.spec.js index 4a8441937..b8c0abc52 100644 --- a/test/e2e/tests/from-import-ui.spec.js +++ b/test/e2e/tests/from-import-ui.spec.js @@ -3,7 +3,7 @@ const { withFixtures, regularDelayMs } = require('../helpers'); const enLocaleMessages = require('../../../app/_locales/en/messages.json'); describe('Metamask Import UI', function () { - it('Importing wallet using seed phrase', async function () { + it('Importing wallet using Secret Recovery Phrase', async function () { const ganacheOptions = { accounts: [ { @@ -40,9 +40,9 @@ describe('Metamask Import UI', function () { // clicks the "No thanks" option on the metametrics opt-in screen await driver.clickElement('.btn-default'); - // Import seed phrase + // Import Secret Recovery Phrase await driver.fill( - 'input[placeholder="Paste seed phrase from clipboard"]', + 'input[placeholder="Paste Secret Recovery Phrase from clipboard"]', testSeedPhrase, ); @@ -292,7 +292,7 @@ describe('Metamask Import UI', function () { // should open the TREZOR Connect popup await driver.clickElement('.hw-connect__btn:nth-of-type(2)'); - await driver.clickElement({ text: 'Connect', tag: 'button' }); + await driver.clickElement({ text: 'Continue', tag: 'button' }); await driver.waitUntilXWindowHandles(2); const allWindows = await driver.getAllWindowHandles(); assert.equal(allWindows.length, 2); diff --git a/test/e2e/tests/incremental-security.spec.js b/test/e2e/tests/incremental-security.spec.js index 6ecd5580e..a07f44c96 100644 --- a/test/e2e/tests/incremental-security.spec.js +++ b/test/e2e/tests/incremental-security.spec.js @@ -17,7 +17,7 @@ describe('Incremental Security', function () { }, ], }; - it('Back up seed phrase from backup reminder', async function () { + it('Back up Secret Recovery Phrase from backup reminder', async function () { await withFixtures( { dapp: true, @@ -56,7 +56,10 @@ describe('Incremental Security', function () { await driver.clickElement('.first-time-flow__checkbox'); await driver.clickElement('.first-time-flow__form button'); - // skips the seed phrase challenge + // renders the Secret Recovery Phrase intro screen' + await driver.clickElement('.seed-phrase-intro__left button'); + + // skips the Secret Recovery Phrase challenge await driver.clickElement({ text: enLocaleMessages.remindMeLater.message, tag: 'button', @@ -115,7 +118,7 @@ describe('Incremental Security', function () { let balance = await currencyDisplay.getText(); assert.strictEqual(balance, '1'); - // backs up the seed phrase + // backs up the Secret Recovery Phrase // should show a backup reminder const backupReminder = await driver.findElements({ xpath: @@ -126,7 +129,7 @@ describe('Incremental Security', function () { // should take the user to the seedphrase backup screen await driver.clickElement('.home-notification__accept-button'); - // reveals the seed phrase + // reveals the Secret Recovery Phrase await driver.clickElement( '.reveal-seed-phrase__secret-blocker .reveal-seed-phrase__reveal-button', ); @@ -150,7 +153,7 @@ describe('Incremental Security', function () { await driver.delay(tinyDelayMs); } - // can retype the seed phrase + // can retype the Secret Recovery Phrase const words = seedPhrase.split(' '); for (const word of words) { diff --git a/test/e2e/tests/metamask-responsive-ui.spec.js b/test/e2e/tests/metamask-responsive-ui.spec.js index 8627b20d0..a50bdfff9 100644 --- a/test/e2e/tests/metamask-responsive-ui.spec.js +++ b/test/e2e/tests/metamask-responsive-ui.spec.js @@ -42,7 +42,10 @@ describe('Metamask Responsive UI', function () { await driver.clickElement('.first-time-flow__checkbox'); await driver.clickElement('.first-time-flow__form button'); - // reveals the seed phrase + // renders the Secret Recovery Phrase intro screen + await driver.clickElement('.seed-phrase-intro__left button'); + + // reveals the Secret Recovery Phrase await driver.clickElement( '.reveal-seed-phrase__secret-blocker .reveal-seed-phrase__reveal-button', ); @@ -64,7 +67,7 @@ describe('Metamask Responsive UI', function () { await driver.delay(tinyDelayMs); } - // can retype the seed phrase + // can retype the Secret Recovery Phrase const words = seedPhrase.split(' '); for (const word of words) { await clickWordAndWait(word); @@ -103,13 +106,13 @@ describe('Metamask Responsive UI', function () { async ({ driver }) => { await driver.navigate(); - // Import seed phrase + // Import Secret Recovery Phrase const restoreSeedLink = await driver.findClickableElement( '.unlock-page__link--import', ); assert.equal( await restoreSeedLink.getText(), - 'import using seed phrase', + 'import using Secret Recovery Phrase', ); await restoreSeedLink.click(); diff --git a/test/e2e/webdriver/firefox.js b/test/e2e/webdriver/firefox.js index ed90dc256..6d327305a 100644 --- a/test/e2e/webdriver/firefox.js +++ b/test/e2e/webdriver/firefox.js @@ -3,7 +3,7 @@ const os = require('os'); const path = require('path'); const { Builder, By, until } = require('selenium-webdriver'); const firefox = require('selenium-webdriver/firefox'); -const { version } = require('../../../app/manifest/_base.json'); +const { version } = require('../../../package.json'); /** * The prefix for temporary Firefox profiles. All Firefox profiles used for e2e tests diff --git a/test/jest/background.js b/test/jest/background.js index 49a6bdf8f..99d181308 100644 --- a/test/jest/background.js +++ b/test/jest/background.js @@ -1,4 +1,4 @@ -import * as actions from '../../ui/app/store/actions'; +import * as actions from '../../ui/store/actions'; export const setBackgroundConnection = (backgroundConnection = {}) => { actions._setBackgroundConnection(backgroundConnection); diff --git a/test/jest/rendering.js b/test/jest/rendering.js index d215cbc0d..f84ecfe0b 100644 --- a/test/jest/rendering.js +++ b/test/jest/rendering.js @@ -4,8 +4,8 @@ import { render } from '@testing-library/react'; import { MemoryRouter } from 'react-router-dom'; import PropTypes from 'prop-types'; -import { I18nContext, LegacyI18nProvider } from '../../ui/app/contexts/i18n'; -import { getMessage } from '../../ui/app/helpers/utils/i18n-helper'; +import { I18nContext, LegacyI18nProvider } from '../../ui/contexts/i18n'; +import { getMessage } from '../../ui/helpers/utils/i18n-helper'; import * as en from '../../app/_locales/en/messages.json'; export const I18nProvider = (props) => { diff --git a/test/lib/render-helpers.js b/test/lib/render-helpers.js index fc4621015..37c5d6370 100644 --- a/test/lib/render-helpers.js +++ b/test/lib/render-helpers.js @@ -1,13 +1,19 @@ import React, { useMemo } from 'react'; import { Provider } from 'react-redux'; import { render } from '@testing-library/react'; -import { mount } from 'enzyme'; +import { mount, shallow } from 'enzyme'; import { MemoryRouter } from 'react-router-dom'; import PropTypes from 'prop-types'; -import { I18nContext, LegacyI18nProvider } from '../../ui/app/contexts/i18n'; -import { getMessage } from '../../ui/app/helpers/utils/i18n-helper'; +import { I18nContext, LegacyI18nProvider } from '../../ui/contexts/i18n'; +import { getMessage } from '../../ui/helpers/utils/i18n-helper'; import * as en from '../../app/_locales/en/messages.json'; +export function shallowWithContext(jsxComponent) { + return shallow(jsxComponent, { + context: { t: (str1, str2) => (str2 ? str1 + str2 : str1) }, + }); +} + export function mountWithRouter(component, store = {}, pathname = '/') { // Instantiate router context const router = { diff --git a/test/unit-global/balance-formatter.test.js b/test/unit-global/balance-formatter.test.js index cd63ee68f..36c246bfd 100644 --- a/test/unit-global/balance-formatter.test.js +++ b/test/unit-global/balance-formatter.test.js @@ -1,6 +1,6 @@ -import assert from 'assert'; +import { strict as assert } from 'assert'; import currencyFormatter from 'currency-formatter'; -import availableCurrencies from '../../ui/app/helpers/constants/available-conversions.json'; +import availableCurrencies from '../../ui/helpers/constants/available-conversions.json'; describe('currencyFormatting', function () { it('be able to format any infura currency', function (done) { diff --git a/test/unit-global/frozenPromise.test.js b/test/unit-global/frozenPromise.test.js index de2409792..f96af0d2a 100644 --- a/test/unit-global/frozenPromise.test.js +++ b/test/unit-global/frozenPromise.test.js @@ -2,7 +2,7 @@ import './globalPatch'; import 'ses/lockdown'; import '../../app/scripts/runLockdown'; -import assert from 'assert'; /* eslint-disable-line import/first,import/order */ +import { strict as assert } from 'assert'; /* eslint-disable-line import/first,import/order */ describe('Promise global is immutable', function () { it('throws when reassinging promise (syntax 1)', function () { diff --git a/ui/app/__mocks__/react-router-dom.js b/ui/__mocks__/react-router-dom.js similarity index 100% rename from ui/app/__mocks__/react-router-dom.js rename to ui/__mocks__/react-router-dom.js diff --git a/ui/app/components/app/signature-request/signature-request.constants.js b/ui/app/components/app/signature-request/signature-request.constants.js deleted file mode 100644 index 34ac7b40d..000000000 --- a/ui/app/components/app/signature-request/signature-request.constants.js +++ /dev/null @@ -1,3 +0,0 @@ -import { ENVIRONMENT_TYPE_NOTIFICATION } from '../../../../../shared/constants/app'; - -export { ENVIRONMENT_TYPE_NOTIFICATION }; diff --git a/ui/app/pages/create-account/create-account.component.js b/ui/app/pages/create-account/create-account.component.js deleted file mode 100644 index 4eaefce52..000000000 --- a/ui/app/pages/create-account/create-account.component.js +++ /dev/null @@ -1,93 +0,0 @@ -import React, { Component } from 'react'; -import { Switch, Route, matchPath } from 'react-router-dom'; -import PropTypes from 'prop-types'; -import classnames from 'classnames'; -import { - NEW_ACCOUNT_ROUTE, - IMPORT_ACCOUNT_ROUTE, - CONNECT_HARDWARE_ROUTE, -} from '../../helpers/constants/routes'; -import NewAccountCreateForm from './new-account.container'; -import NewAccountImportForm from './import-account'; -import ConnectHardwareForm from './connect-hardware'; - -export default class CreateAccountPage extends Component { - renderTabs() { - const { - history, - location: { pathname }, - } = this.props; - const getClassNames = (path) => - classnames('new-account__tabs__tab', { - 'new-account__tabs__selected': matchPath(pathname, { - path, - exact: true, - }), - }); - - return ( -
-
history.push(NEW_ACCOUNT_ROUTE)} - > - {this.context.t('create')} -
-
history.push(IMPORT_ACCOUNT_ROUTE)} - > - {this.context.t('import')} -
-
history.push(CONNECT_HARDWARE_ROUTE)} - > - {this.context.t('hardware')} -
-
- ); - } - - render() { - return ( -
-
-
- {this.renderTabs()} -
-
-
- - - - - -
-
- ); - } -} - -CreateAccountPage.propTypes = { - location: PropTypes.object, - history: PropTypes.object, -}; - -CreateAccountPage.contextTypes = { - t: PropTypes.func, -}; diff --git a/ui/app/pages/create-account/create-account.test.js b/ui/app/pages/create-account/create-account.test.js deleted file mode 100644 index 0a445f688..000000000 --- a/ui/app/pages/create-account/create-account.test.js +++ /dev/null @@ -1,47 +0,0 @@ -import React from 'react'; -import sinon from 'sinon'; -import { mountWithRouter } from '../../../../test/lib/render-helpers'; -import CreateAccountPage from '.'; - -describe('Create Account Page', () => { - let wrapper; - - const props = { - history: { - push: sinon.spy(), - }, - location: { - pathname: '/new-account', - }, - }; - - beforeAll(() => { - wrapper = mountWithRouter(); - }); - - afterEach(() => { - props.history.push.resetHistory(); - }); - - it('clicks create account and routes to new-account path', () => { - const createAccount = wrapper.find('.new-account__tabs__tab').at(0); - createAccount.simulate('click'); - expect(props.history.push.getCall(0).args[0]).toStrictEqual('/new-account'); - }); - - it('clicks import account and routes to import new account path', () => { - const importAccount = wrapper.find('.new-account__tabs__tab').at(1); - importAccount.simulate('click'); - expect(props.history.push.getCall(0).args[0]).toStrictEqual( - '/new-account/import', - ); - }); - - it('clicks connect HD Wallet and routes to connect new account path', () => { - const connectHdWallet = wrapper.find('.new-account__tabs__tab').at(2); - connectHdWallet.simulate('click'); - expect(props.history.push.getCall(0).args[0]).toStrictEqual( - '/new-account/connect', - ); - }); -}); diff --git a/ui/app/components/app/account-list-item/account-list-item-component.test.js b/ui/components/app/account-list-item/account-list-item-component.test.js similarity index 100% rename from ui/app/components/app/account-list-item/account-list-item-component.test.js rename to ui/components/app/account-list-item/account-list-item-component.test.js diff --git a/ui/app/components/app/account-list-item/account-list-item.js b/ui/components/app/account-list-item/account-list-item.js similarity index 100% rename from ui/app/components/app/account-list-item/account-list-item.js rename to ui/components/app/account-list-item/account-list-item.js diff --git a/ui/app/components/app/account-list-item/index.js b/ui/components/app/account-list-item/index.js similarity index 100% rename from ui/app/components/app/account-list-item/index.js rename to ui/components/app/account-list-item/index.js diff --git a/ui/app/components/app/account-list-item/index.scss b/ui/components/app/account-list-item/index.scss similarity index 100% rename from ui/app/components/app/account-list-item/index.scss rename to ui/components/app/account-list-item/index.scss diff --git a/ui/app/components/app/account-menu/account-menu.component.js b/ui/components/app/account-menu/account-menu.component.js similarity index 98% rename from ui/app/components/app/account-menu/account-menu.component.js rename to ui/components/app/account-menu/account-menu.component.js index fe3ebffe6..a7f083041 100644 --- a/ui/app/components/app/account-menu/account-menu.component.js +++ b/ui/components/app/account-menu/account-menu.component.js @@ -4,8 +4,8 @@ import { debounce } from 'lodash'; import Fuse from 'fuse.js'; import InputAdornment from '@material-ui/core/InputAdornment'; import classnames from 'classnames'; -import { ENVIRONMENT_TYPE_POPUP } from '../../../../../shared/constants/app'; -import { getEnvironmentType } from '../../../../../app/scripts/lib/util'; +import { ENVIRONMENT_TYPE_POPUP } from '../../../../shared/constants/app'; +import { getEnvironmentType } from '../../../../app/scripts/lib/util'; import Identicon from '../../ui/identicon'; import SiteIcon from '../../ui/site-icon'; import UserPreferencedCurrencyDisplay from '../user-preferenced-currency-display'; diff --git a/ui/app/components/app/account-menu/account-menu.container.js b/ui/components/app/account-menu/account-menu.container.js similarity index 100% rename from ui/app/components/app/account-menu/account-menu.container.js rename to ui/components/app/account-menu/account-menu.container.js diff --git a/ui/app/components/app/account-menu/account-menu.test.js b/ui/components/app/account-menu/account-menu.test.js similarity index 98% rename from ui/app/components/app/account-menu/account-menu.test.js rename to ui/components/app/account-menu/account-menu.test.js index 44666899d..fc715ead1 100644 --- a/ui/app/components/app/account-menu/account-menu.test.js +++ b/ui/components/app/account-menu/account-menu.test.js @@ -2,7 +2,7 @@ import React from 'react'; import sinon from 'sinon'; import configureMockStore from 'redux-mock-store'; import { Provider } from 'react-redux'; -import { mountWithRouter } from '../../../../../test/lib/render-helpers'; +import { mountWithRouter } from '../../../../test/lib/render-helpers'; import AccountMenu from '.'; describe('Account Menu', () => { diff --git a/ui/app/components/app/account-menu/index.js b/ui/components/app/account-menu/index.js similarity index 100% rename from ui/app/components/app/account-menu/index.js rename to ui/components/app/account-menu/index.js diff --git a/ui/app/components/app/account-menu/index.scss b/ui/components/app/account-menu/index.scss similarity index 100% rename from ui/app/components/app/account-menu/index.scss rename to ui/components/app/account-menu/index.scss diff --git a/ui/app/components/app/add-token-button/add-token-button.component.js b/ui/components/app/add-token-button/add-token-button.component.js similarity index 100% rename from ui/app/components/app/add-token-button/add-token-button.component.js rename to ui/components/app/add-token-button/add-token-button.component.js diff --git a/ui/app/components/app/add-token-button/index.js b/ui/components/app/add-token-button/index.js similarity index 100% rename from ui/app/components/app/add-token-button/index.js rename to ui/components/app/add-token-button/index.js diff --git a/ui/app/components/app/add-token-button/index.scss b/ui/components/app/add-token-button/index.scss similarity index 100% rename from ui/app/components/app/add-token-button/index.scss rename to ui/components/app/add-token-button/index.scss diff --git a/ui/app/components/app/alerts/alerts.js b/ui/components/app/alerts/alerts.js similarity index 100% rename from ui/app/components/app/alerts/alerts.js rename to ui/components/app/alerts/alerts.js diff --git a/ui/app/components/app/alerts/alerts.scss b/ui/components/app/alerts/alerts.scss similarity index 100% rename from ui/app/components/app/alerts/alerts.scss rename to ui/components/app/alerts/alerts.scss diff --git a/ui/app/components/app/alerts/index.js b/ui/components/app/alerts/index.js similarity index 100% rename from ui/app/components/app/alerts/index.js rename to ui/components/app/alerts/index.js diff --git a/ui/app/components/app/alerts/invalid-custom-network-alert/index.js b/ui/components/app/alerts/invalid-custom-network-alert/index.js similarity index 100% rename from ui/app/components/app/alerts/invalid-custom-network-alert/index.js rename to ui/components/app/alerts/invalid-custom-network-alert/index.js diff --git a/ui/app/components/app/alerts/invalid-custom-network-alert/invalid-custom-network-alert.js b/ui/components/app/alerts/invalid-custom-network-alert/invalid-custom-network-alert.js similarity index 100% rename from ui/app/components/app/alerts/invalid-custom-network-alert/invalid-custom-network-alert.js rename to ui/components/app/alerts/invalid-custom-network-alert/invalid-custom-network-alert.js diff --git a/ui/app/components/app/alerts/invalid-custom-network-alert/invalid-custom-network-alert.scss b/ui/components/app/alerts/invalid-custom-network-alert/invalid-custom-network-alert.scss similarity index 100% rename from ui/app/components/app/alerts/invalid-custom-network-alert/invalid-custom-network-alert.scss rename to ui/components/app/alerts/invalid-custom-network-alert/invalid-custom-network-alert.scss diff --git a/ui/app/components/app/alerts/unconnected-account-alert/index.js b/ui/components/app/alerts/unconnected-account-alert/index.js similarity index 100% rename from ui/app/components/app/alerts/unconnected-account-alert/index.js rename to ui/components/app/alerts/unconnected-account-alert/index.js diff --git a/ui/app/components/app/alerts/unconnected-account-alert/unconnected-account-alert.js b/ui/components/app/alerts/unconnected-account-alert/unconnected-account-alert.js similarity index 100% rename from ui/app/components/app/alerts/unconnected-account-alert/unconnected-account-alert.js rename to ui/components/app/alerts/unconnected-account-alert/unconnected-account-alert.js diff --git a/ui/app/components/app/alerts/unconnected-account-alert/unconnected-account-alert.scss b/ui/components/app/alerts/unconnected-account-alert/unconnected-account-alert.scss similarity index 100% rename from ui/app/components/app/alerts/unconnected-account-alert/unconnected-account-alert.scss rename to ui/components/app/alerts/unconnected-account-alert/unconnected-account-alert.scss diff --git a/ui/app/components/app/alerts/unconnected-account-alert/unconnected-account-alert.test.js b/ui/components/app/alerts/unconnected-account-alert/unconnected-account-alert.test.js similarity index 95% rename from ui/app/components/app/alerts/unconnected-account-alert/unconnected-account-alert.test.js rename to ui/components/app/alerts/unconnected-account-alert/unconnected-account-alert.test.js index dda361f4a..3aad2342b 100644 --- a/ui/app/components/app/alerts/unconnected-account-alert/unconnected-account-alert.test.js +++ b/ui/components/app/alerts/unconnected-account-alert/unconnected-account-alert.test.js @@ -6,11 +6,11 @@ import thunk from 'redux-thunk'; import { fireEvent } from '@testing-library/react'; import configureMockStore from 'redux-mock-store'; -import { tick } from '../../../../../../test/lib/tick'; -import { renderWithProvider } from '../../../../../../test/lib/render-helpers'; +import { tick } from '../../../../../test/lib/tick'; +import { renderWithProvider } from '../../../../../test/lib/render-helpers'; import * as actions from '../../../../store/actions'; -import { KOVAN_CHAIN_ID } from '../../../../../../shared/constants/network'; +import { KOVAN_CHAIN_ID } from '../../../../../shared/constants/network'; import UnconnectedAccountAlert from '.'; describe('Unconnected Account Alert', () => { diff --git a/ui/app/components/app/app-components.scss b/ui/components/app/app-components.scss similarity index 100% rename from ui/app/components/app/app-components.scss rename to ui/components/app/app-components.scss diff --git a/ui/app/components/app/app-header/app-header.component.js b/ui/components/app/app-header/app-header.component.js similarity index 100% rename from ui/app/components/app/app-header/app-header.component.js rename to ui/components/app/app-header/app-header.component.js diff --git a/ui/app/components/app/app-header/app-header.container.js b/ui/components/app/app-header/app-header.container.js similarity index 100% rename from ui/app/components/app/app-header/app-header.container.js rename to ui/components/app/app-header/app-header.container.js diff --git a/ui/app/components/app/app-header/app-header.test.js b/ui/components/app/app-header/app-header.test.js similarity index 100% rename from ui/app/components/app/app-header/app-header.test.js rename to ui/components/app/app-header/app-header.test.js diff --git a/ui/app/components/app/app-header/index.js b/ui/components/app/app-header/index.js similarity index 100% rename from ui/app/components/app/app-header/index.js rename to ui/components/app/app-header/index.js diff --git a/ui/app/components/app/app-header/index.scss b/ui/components/app/app-header/index.scss similarity index 100% rename from ui/app/components/app/app-header/index.scss rename to ui/components/app/app-header/index.scss diff --git a/ui/app/components/app/asset-list-item/asset-list-item.js b/ui/components/app/asset-list-item/asset-list-item.js similarity index 100% rename from ui/app/components/app/asset-list-item/asset-list-item.js rename to ui/components/app/asset-list-item/asset-list-item.js diff --git a/ui/app/components/app/asset-list-item/asset-list-item.scss b/ui/components/app/asset-list-item/asset-list-item.scss similarity index 100% rename from ui/app/components/app/asset-list-item/asset-list-item.scss rename to ui/components/app/asset-list-item/asset-list-item.scss diff --git a/ui/app/components/app/asset-list-item/index.js b/ui/components/app/asset-list-item/index.js similarity index 100% rename from ui/app/components/app/asset-list-item/index.js rename to ui/components/app/asset-list-item/index.js diff --git a/ui/app/components/app/asset-list/asset-list.js b/ui/components/app/asset-list/asset-list.js similarity index 100% rename from ui/app/components/app/asset-list/asset-list.js rename to ui/components/app/asset-list/asset-list.js diff --git a/ui/app/components/app/asset-list/index.js b/ui/components/app/asset-list/index.js similarity index 100% rename from ui/app/components/app/asset-list/index.js rename to ui/components/app/asset-list/index.js diff --git a/ui/app/components/app/confirm-page-container/confirm-detail-row/confirm-detail-row.component.js b/ui/components/app/confirm-page-container/confirm-detail-row/confirm-detail-row.component.js similarity index 100% rename from ui/app/components/app/confirm-page-container/confirm-detail-row/confirm-detail-row.component.js rename to ui/components/app/confirm-page-container/confirm-detail-row/confirm-detail-row.component.js diff --git a/ui/app/components/app/confirm-page-container/confirm-detail-row/confirm-detail-row.component.test.js b/ui/components/app/confirm-page-container/confirm-detail-row/confirm-detail-row.component.test.js similarity index 100% rename from ui/app/components/app/confirm-page-container/confirm-detail-row/confirm-detail-row.component.test.js rename to ui/components/app/confirm-page-container/confirm-detail-row/confirm-detail-row.component.test.js diff --git a/ui/app/components/app/confirm-page-container/confirm-detail-row/index.js b/ui/components/app/confirm-page-container/confirm-detail-row/index.js similarity index 100% rename from ui/app/components/app/confirm-page-container/confirm-detail-row/index.js rename to ui/components/app/confirm-page-container/confirm-detail-row/index.js diff --git a/ui/app/components/app/confirm-page-container/confirm-detail-row/index.scss b/ui/components/app/confirm-page-container/confirm-detail-row/index.scss similarity index 100% rename from ui/app/components/app/confirm-page-container/confirm-detail-row/index.scss rename to ui/components/app/confirm-page-container/confirm-detail-row/index.scss diff --git a/ui/app/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-content.component.js b/ui/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-content.component.js similarity index 95% rename from ui/app/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-content.component.js rename to ui/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-content.component.js index 9009f9feb..e47bfaf78 100644 --- a/ui/app/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-content.component.js +++ b/ui/components/app/confirm-page-container/confirm-page-container-content/confirm-page-container-content.component.js @@ -22,6 +22,7 @@ export default class ConfirmPageContainerContent extends Component { titleComponent: PropTypes.node, warning: PropTypes.string, origin: PropTypes.string.isRequired, + ethGasPriceWarning: PropTypes.string, // Footer onCancelAll: PropTypes.func, onCancel: PropTypes.func, @@ -81,11 +82,15 @@ export default class ConfirmPageContainerContent extends Component { unapprovedTxCount, rejectNText, origin, + ethGasPriceWarning, } = this.props; return (
{warning && } + {ethGasPriceWarning && ( + + )} { describe('render', () => { diff --git a/ui/app/components/app/confirm-page-container/confirm-page-container-header/index.js b/ui/components/app/confirm-page-container/confirm-page-container-header/index.js similarity index 100% rename from ui/app/components/app/confirm-page-container/confirm-page-container-header/index.js rename to ui/components/app/confirm-page-container/confirm-page-container-header/index.js diff --git a/ui/app/components/app/confirm-page-container/confirm-page-container-header/index.scss b/ui/components/app/confirm-page-container/confirm-page-container-header/index.scss similarity index 100% rename from ui/app/components/app/confirm-page-container/confirm-page-container-header/index.scss rename to ui/components/app/confirm-page-container/confirm-page-container-header/index.scss diff --git a/ui/app/components/app/confirm-page-container/confirm-page-container-navigation/confirm-page-container-navigation.component.js b/ui/components/app/confirm-page-container/confirm-page-container-navigation/confirm-page-container-navigation.component.js similarity index 100% rename from ui/app/components/app/confirm-page-container/confirm-page-container-navigation/confirm-page-container-navigation.component.js rename to ui/components/app/confirm-page-container/confirm-page-container-navigation/confirm-page-container-navigation.component.js diff --git a/ui/app/components/app/confirm-page-container/confirm-page-container-navigation/index.js b/ui/components/app/confirm-page-container/confirm-page-container-navigation/index.js similarity index 100% rename from ui/app/components/app/confirm-page-container/confirm-page-container-navigation/index.js rename to ui/components/app/confirm-page-container/confirm-page-container-navigation/index.js diff --git a/ui/app/components/app/confirm-page-container/confirm-page-container-navigation/index.scss b/ui/components/app/confirm-page-container/confirm-page-container-navigation/index.scss similarity index 100% rename from ui/app/components/app/confirm-page-container/confirm-page-container-navigation/index.scss rename to ui/components/app/confirm-page-container/confirm-page-container-navigation/index.scss diff --git a/ui/app/components/app/confirm-page-container/confirm-page-container.component.js b/ui/components/app/confirm-page-container/confirm-page-container.component.js similarity index 97% rename from ui/app/components/app/confirm-page-container/confirm-page-container.component.js rename to ui/components/app/confirm-page-container/confirm-page-container.component.js index e344bedd5..71923e546 100644 --- a/ui/app/components/app/confirm-page-container/confirm-page-container.component.js +++ b/ui/components/app/confirm-page-container/confirm-page-container.component.js @@ -43,6 +43,7 @@ export default class ConfirmPageContainer extends Component { warning: PropTypes.string, unapprovedTxCount: PropTypes.number, origin: PropTypes.string.isRequired, + ethGasPriceWarning: PropTypes.string, // Navigation totalTx: PropTypes.number, positionOfCurrentTx: PropTypes.number, @@ -103,6 +104,7 @@ export default class ConfirmPageContainer extends Component { hideSenderToRecipient, showAccountInHeader, origin, + ethGasPriceWarning, } = this.props; const renderAssetImage = contentComponent || !identiconAddress; @@ -162,6 +164,7 @@ export default class ConfirmPageContainer extends Component { unapprovedTxCount={unapprovedTxCount} rejectNText={this.context.t('rejectTxsN', [unapprovedTxCount])} origin={origin} + ethGasPriceWarning={ethGasPriceWarning} /> )} {contentComponent && ( diff --git a/ui/app/components/app/confirm-page-container/index.js b/ui/components/app/confirm-page-container/index.js similarity index 100% rename from ui/app/components/app/confirm-page-container/index.js rename to ui/components/app/confirm-page-container/index.js diff --git a/ui/app/components/app/confirm-page-container/index.scss b/ui/components/app/confirm-page-container/index.scss similarity index 100% rename from ui/app/components/app/confirm-page-container/index.scss rename to ui/components/app/confirm-page-container/index.scss diff --git a/ui/app/components/app/connected-accounts-list/connected-accounts-list-item/connected-accounts-list-item.component.js b/ui/components/app/connected-accounts-list/connected-accounts-list-item/connected-accounts-list-item.component.js similarity index 100% rename from ui/app/components/app/connected-accounts-list/connected-accounts-list-item/connected-accounts-list-item.component.js rename to ui/components/app/connected-accounts-list/connected-accounts-list-item/connected-accounts-list-item.component.js diff --git a/ui/app/components/app/connected-accounts-list/connected-accounts-list-item/index.js b/ui/components/app/connected-accounts-list/connected-accounts-list-item/index.js similarity index 100% rename from ui/app/components/app/connected-accounts-list/connected-accounts-list-item/index.js rename to ui/components/app/connected-accounts-list/connected-accounts-list-item/index.js diff --git a/ui/app/components/app/connected-accounts-list/connected-accounts-list-options/connected-accounts-list-options.component.js b/ui/components/app/connected-accounts-list/connected-accounts-list-options/connected-accounts-list-options.component.js similarity index 100% rename from ui/app/components/app/connected-accounts-list/connected-accounts-list-options/connected-accounts-list-options.component.js rename to ui/components/app/connected-accounts-list/connected-accounts-list-options/connected-accounts-list-options.component.js diff --git a/ui/app/components/app/connected-accounts-list/connected-accounts-list-options/index.js b/ui/components/app/connected-accounts-list/connected-accounts-list-options/index.js similarity index 100% rename from ui/app/components/app/connected-accounts-list/connected-accounts-list-options/index.js rename to ui/components/app/connected-accounts-list/connected-accounts-list-options/index.js diff --git a/ui/app/components/app/connected-accounts-list/connected-accounts-list.component.js b/ui/components/app/connected-accounts-list/connected-accounts-list.component.js similarity index 100% rename from ui/app/components/app/connected-accounts-list/connected-accounts-list.component.js rename to ui/components/app/connected-accounts-list/connected-accounts-list.component.js diff --git a/ui/app/components/app/connected-accounts-list/index.js b/ui/components/app/connected-accounts-list/index.js similarity index 100% rename from ui/app/components/app/connected-accounts-list/index.js rename to ui/components/app/connected-accounts-list/index.js diff --git a/ui/app/components/app/connected-accounts-list/index.scss b/ui/components/app/connected-accounts-list/index.scss similarity index 100% rename from ui/app/components/app/connected-accounts-list/index.scss rename to ui/components/app/connected-accounts-list/index.scss diff --git a/ui/app/components/app/connected-accounts-permissions/connected-accounts-permissions.component.js b/ui/components/app/connected-accounts-permissions/connected-accounts-permissions.component.js similarity index 100% rename from ui/app/components/app/connected-accounts-permissions/connected-accounts-permissions.component.js rename to ui/components/app/connected-accounts-permissions/connected-accounts-permissions.component.js diff --git a/ui/app/components/app/connected-accounts-permissions/index.js b/ui/components/app/connected-accounts-permissions/index.js similarity index 100% rename from ui/app/components/app/connected-accounts-permissions/index.js rename to ui/components/app/connected-accounts-permissions/index.js diff --git a/ui/app/components/app/connected-accounts-permissions/index.scss b/ui/components/app/connected-accounts-permissions/index.scss similarity index 100% rename from ui/app/components/app/connected-accounts-permissions/index.scss rename to ui/components/app/connected-accounts-permissions/index.scss diff --git a/ui/app/components/app/connected-sites-list/connected-sites-list.component.js b/ui/components/app/connected-sites-list/connected-sites-list.component.js similarity index 100% rename from ui/app/components/app/connected-sites-list/connected-sites-list.component.js rename to ui/components/app/connected-sites-list/connected-sites-list.component.js diff --git a/ui/app/components/app/connected-sites-list/index.js b/ui/components/app/connected-sites-list/index.js similarity index 100% rename from ui/app/components/app/connected-sites-list/index.js rename to ui/components/app/connected-sites-list/index.js diff --git a/ui/app/components/app/connected-sites-list/index.scss b/ui/components/app/connected-sites-list/index.scss similarity index 100% rename from ui/app/components/app/connected-sites-list/index.scss rename to ui/components/app/connected-sites-list/index.scss diff --git a/ui/app/components/app/connected-status-indicator/connected-status-indicator.js b/ui/components/app/connected-status-indicator/connected-status-indicator.js similarity index 100% rename from ui/app/components/app/connected-status-indicator/connected-status-indicator.js rename to ui/components/app/connected-status-indicator/connected-status-indicator.js diff --git a/ui/app/components/app/connected-status-indicator/index.js b/ui/components/app/connected-status-indicator/index.js similarity index 100% rename from ui/app/components/app/connected-status-indicator/index.js rename to ui/components/app/connected-status-indicator/index.js diff --git a/ui/app/components/app/connected-status-indicator/index.scss b/ui/components/app/connected-status-indicator/index.scss similarity index 100% rename from ui/app/components/app/connected-status-indicator/index.scss rename to ui/components/app/connected-status-indicator/index.scss diff --git a/ui/app/components/app/contact-list/contact-list.component.js b/ui/components/app/contact-list/contact-list.component.js similarity index 100% rename from ui/app/components/app/contact-list/contact-list.component.js rename to ui/components/app/contact-list/contact-list.component.js diff --git a/ui/app/components/app/contact-list/index.js b/ui/components/app/contact-list/index.js similarity index 100% rename from ui/app/components/app/contact-list/index.js rename to ui/components/app/contact-list/index.js diff --git a/ui/app/components/app/contact-list/recipient-group/index.js b/ui/components/app/contact-list/recipient-group/index.js similarity index 100% rename from ui/app/components/app/contact-list/recipient-group/index.js rename to ui/components/app/contact-list/recipient-group/index.js diff --git a/ui/app/components/app/contact-list/recipient-group/recipient-group.component.js b/ui/components/app/contact-list/recipient-group/recipient-group.component.js similarity index 100% rename from ui/app/components/app/contact-list/recipient-group/recipient-group.component.js rename to ui/components/app/contact-list/recipient-group/recipient-group.component.js diff --git a/ui/app/components/app/dropdowns/dropdown.js b/ui/components/app/dropdowns/dropdown.js similarity index 100% rename from ui/app/components/app/dropdowns/dropdown.js rename to ui/components/app/dropdowns/dropdown.js diff --git a/ui/app/components/app/dropdowns/dropdown.test.js b/ui/components/app/dropdowns/dropdown.test.js similarity index 100% rename from ui/app/components/app/dropdowns/dropdown.test.js rename to ui/components/app/dropdowns/dropdown.test.js diff --git a/ui/app/components/app/dropdowns/network-dropdown.js b/ui/components/app/dropdowns/network-dropdown.js similarity index 96% rename from ui/app/components/app/dropdowns/network-dropdown.js rename to ui/components/app/dropdowns/network-dropdown.js index e0742722d..66e44bd49 100644 --- a/ui/app/components/app/dropdowns/network-dropdown.js +++ b/ui/components/app/dropdowns/network-dropdown.js @@ -9,10 +9,10 @@ import { NETWORKS_ROUTE, NETWORKS_FORM_ROUTE, } from '../../../helpers/constants/routes'; -import { ENVIRONMENT_TYPE_FULLSCREEN } from '../../../../../shared/constants/app'; -import { NETWORK_TYPE_RPC } from '../../../../../shared/constants/network'; -import { isPrefixedFormattedHexString } from '../../../../../shared/modules/network.utils'; -import { getEnvironmentType } from '../../../../../app/scripts/lib/util'; +import { ENVIRONMENT_TYPE_FULLSCREEN } from '../../../../shared/constants/app'; +import { NETWORK_TYPE_RPC } from '../../../../shared/constants/network'; +import { isPrefixedFormattedHexString } from '../../../../shared/modules/network.utils'; +import { getEnvironmentType } from '../../../../app/scripts/lib/util'; import ColorIndicator from '../../ui/color-indicator'; import { COLORS, SIZES } from '../../../helpers/constants/design-system'; diff --git a/ui/app/components/app/dropdowns/network-dropdown.test.js b/ui/components/app/dropdowns/network-dropdown.test.js similarity index 98% rename from ui/app/components/app/dropdowns/network-dropdown.test.js rename to ui/components/app/dropdowns/network-dropdown.test.js index 3452e8fef..f68fddd93 100644 --- a/ui/app/components/app/dropdowns/network-dropdown.test.js +++ b/ui/components/app/dropdowns/network-dropdown.test.js @@ -1,7 +1,7 @@ import React from 'react'; import configureMockStore from 'redux-mock-store'; import thunk from 'redux-thunk'; -import { mountWithRouter } from '../../../../../test/lib/render-helpers'; +import { mountWithRouter } from '../../../../test/lib/render-helpers'; import ColorIndicator from '../../ui/color-indicator'; import NetworkDropdown from './network-dropdown'; import { DropdownMenuItem } from './dropdown'; diff --git a/ui/app/components/app/gas-customization/advanced-gas-inputs/advanced-gas-input-component.test.js b/ui/components/app/gas-customization/advanced-gas-inputs/advanced-gas-input-component.test.js similarity index 100% rename from ui/app/components/app/gas-customization/advanced-gas-inputs/advanced-gas-input-component.test.js rename to ui/components/app/gas-customization/advanced-gas-inputs/advanced-gas-input-component.test.js diff --git a/ui/app/components/app/gas-customization/advanced-gas-inputs/advanced-gas-inputs.component.js b/ui/components/app/gas-customization/advanced-gas-inputs/advanced-gas-inputs.component.js similarity index 100% rename from ui/app/components/app/gas-customization/advanced-gas-inputs/advanced-gas-inputs.component.js rename to ui/components/app/gas-customization/advanced-gas-inputs/advanced-gas-inputs.component.js diff --git a/ui/app/components/app/gas-customization/advanced-gas-inputs/advanced-gas-inputs.container.js b/ui/components/app/gas-customization/advanced-gas-inputs/advanced-gas-inputs.container.js similarity index 100% rename from ui/app/components/app/gas-customization/advanced-gas-inputs/advanced-gas-inputs.container.js rename to ui/components/app/gas-customization/advanced-gas-inputs/advanced-gas-inputs.container.js diff --git a/ui/app/components/app/gas-customization/advanced-gas-inputs/index.js b/ui/components/app/gas-customization/advanced-gas-inputs/index.js similarity index 100% rename from ui/app/components/app/gas-customization/advanced-gas-inputs/index.js rename to ui/components/app/gas-customization/advanced-gas-inputs/index.js diff --git a/ui/app/components/app/gas-customization/advanced-gas-inputs/index.scss b/ui/components/app/gas-customization/advanced-gas-inputs/index.scss similarity index 100% rename from ui/app/components/app/gas-customization/advanced-gas-inputs/index.scss rename to ui/components/app/gas-customization/advanced-gas-inputs/index.scss diff --git a/ui/app/components/app/gas-customization/gas-modal-page-container/advanced-tab-content/advanced-tab-content-component.test.js b/ui/components/app/gas-customization/gas-modal-page-container/advanced-tab-content/advanced-tab-content-component.test.js similarity index 94% rename from ui/app/components/app/gas-customization/gas-modal-page-container/advanced-tab-content/advanced-tab-content-component.test.js rename to ui/components/app/gas-customization/gas-modal-page-container/advanced-tab-content/advanced-tab-content-component.test.js index 0a91fbc69..de8ec3b80 100644 --- a/ui/app/components/app/gas-customization/gas-modal-page-container/advanced-tab-content/advanced-tab-content-component.test.js +++ b/ui/components/app/gas-customization/gas-modal-page-container/advanced-tab-content/advanced-tab-content-component.test.js @@ -1,6 +1,6 @@ import React from 'react'; import sinon from 'sinon'; -import shallow from '../../../../../../lib/shallow-with-context'; +import { shallowWithContext } from '../../../../../../test/lib/render-helpers'; import AdvancedTabContent from './advanced-tab-content.component'; describe('AdvancedTabContent Component', () => { @@ -13,7 +13,7 @@ describe('AdvancedTabContent Component', () => { }; sinon.spy(AdvancedTabContent.prototype, 'renderDataSummary'); - wrapper = shallow( + wrapper = shallowWithContext( { let dataSummary; beforeEach(() => { - dataSummary = shallow( + dataSummary = shallowWithContext( wrapper.instance().renderDataSummary('mockTotalFee'), ); }); diff --git a/ui/app/components/app/gas-customization/gas-modal-page-container/advanced-tab-content/advanced-tab-content.component.js b/ui/components/app/gas-customization/gas-modal-page-container/advanced-tab-content/advanced-tab-content.component.js similarity index 100% rename from ui/app/components/app/gas-customization/gas-modal-page-container/advanced-tab-content/advanced-tab-content.component.js rename to ui/components/app/gas-customization/gas-modal-page-container/advanced-tab-content/advanced-tab-content.component.js diff --git a/ui/app/components/app/gas-customization/gas-modal-page-container/advanced-tab-content/index.js b/ui/components/app/gas-customization/gas-modal-page-container/advanced-tab-content/index.js similarity index 100% rename from ui/app/components/app/gas-customization/gas-modal-page-container/advanced-tab-content/index.js rename to ui/components/app/gas-customization/gas-modal-page-container/advanced-tab-content/index.js diff --git a/ui/app/components/app/gas-customization/gas-modal-page-container/advanced-tab-content/index.scss b/ui/components/app/gas-customization/gas-modal-page-container/advanced-tab-content/index.scss similarity index 100% rename from ui/app/components/app/gas-customization/gas-modal-page-container/advanced-tab-content/index.scss rename to ui/components/app/gas-customization/gas-modal-page-container/advanced-tab-content/index.scss diff --git a/ui/app/components/app/gas-customization/gas-modal-page-container/basic-tab-content/basic-tab-content-component.test.js b/ui/components/app/gas-customization/gas-modal-page-container/basic-tab-content/basic-tab-content-component.test.js similarity index 96% rename from ui/app/components/app/gas-customization/gas-modal-page-container/basic-tab-content/basic-tab-content-component.test.js rename to ui/components/app/gas-customization/gas-modal-page-container/basic-tab-content/basic-tab-content-component.test.js index facda50a5..12114edcf 100644 --- a/ui/app/components/app/gas-customization/gas-modal-page-container/basic-tab-content/basic-tab-content-component.test.js +++ b/ui/components/app/gas-customization/gas-modal-page-container/basic-tab-content/basic-tab-content-component.test.js @@ -1,8 +1,8 @@ import React from 'react'; -import shallow from '../../../../../../lib/shallow-with-context'; import GasPriceButtonGroup from '../../gas-price-button-group'; import Loading from '../../../../ui/loading-screen'; import { GAS_ESTIMATE_TYPES } from '../../../../../helpers/constants/common'; +import { shallowWithContext } from '../../../../../../test/lib/render-helpers'; import BasicTabContent from './basic-tab-content.component'; const mockGasPriceButtonGroupProps = { @@ -42,7 +42,7 @@ describe('BasicTabContent Component', () => { let wrapper; beforeEach(() => { - wrapper = shallow( + wrapper = shallowWithContext( , diff --git a/ui/app/components/app/gas-customization/gas-modal-page-container/basic-tab-content/basic-tab-content.component.js b/ui/components/app/gas-customization/gas-modal-page-container/basic-tab-content/basic-tab-content.component.js similarity index 100% rename from ui/app/components/app/gas-customization/gas-modal-page-container/basic-tab-content/basic-tab-content.component.js rename to ui/components/app/gas-customization/gas-modal-page-container/basic-tab-content/basic-tab-content.component.js diff --git a/ui/app/components/app/gas-customization/gas-modal-page-container/basic-tab-content/index.js b/ui/components/app/gas-customization/gas-modal-page-container/basic-tab-content/index.js similarity index 100% rename from ui/app/components/app/gas-customization/gas-modal-page-container/basic-tab-content/index.js rename to ui/components/app/gas-customization/gas-modal-page-container/basic-tab-content/index.js diff --git a/ui/app/components/app/gas-customization/gas-modal-page-container/basic-tab-content/index.scss b/ui/components/app/gas-customization/gas-modal-page-container/basic-tab-content/index.scss similarity index 100% rename from ui/app/components/app/gas-customization/gas-modal-page-container/basic-tab-content/index.scss rename to ui/components/app/gas-customization/gas-modal-page-container/basic-tab-content/index.scss diff --git a/ui/app/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container-component.test.js b/ui/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container-component.test.js similarity index 95% rename from ui/app/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container-component.test.js rename to ui/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container-component.test.js index dd5f23e39..2094d4b54 100644 --- a/ui/app/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container-component.test.js +++ b/ui/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container-component.test.js @@ -1,6 +1,6 @@ import React from 'react'; import sinon from 'sinon'; -import shallow from '../../../../../lib/shallow-with-context'; +import { shallowWithContext } from '../../../../../test/lib/render-helpers'; import PageContainer from '../../../ui/page-container'; @@ -63,7 +63,7 @@ describe('GasModalPageContainer Component', () => { let wrapper; beforeEach(() => { - wrapper = shallow( + wrapper = shallowWithContext( { it('should pass the correct renderTabs property to PageContainer', () => { sinon.stub(GP, 'renderTabs').returns('mockTabs'); - const renderTabsWrapperTester = shallow( + const renderTabsWrapperTester = shallowWithContext( { it('should render a Tabs component with "Basic" and "Advanced" tabs', () => { const renderTabsResult = wrapper.instance().renderTabs(); - const renderedTabs = shallow(renderTabsResult); + const renderedTabs = shallowWithContext(renderTabsResult); expect(renderedTabs.props().className).toStrictEqual('tabs'); const tabs = renderedTabs.find(Tab); @@ -189,7 +189,7 @@ describe('GasModalPageContainer Component', () => { }); it('should not render the basic tab if hideBasic is true', () => { - wrapper = shallow( + wrapper = shallowWithContext( { ); const renderTabsResult = wrapper.instance().renderTabs(); - const renderedTabs = shallow(renderTabsResult); + const renderedTabs = shallowWithContext(renderTabsResult); const tabs = renderedTabs.find(Tab); expect(tabs).toHaveLength(1); expect(tabs.at(0).props().name).toStrictEqual('advanced'); @@ -229,7 +229,7 @@ describe('GasModalPageContainer Component', () => { describe('renderInfoRows', () => { it('should render the info rows with the passed data', () => { const baseClassName = 'gas-modal-content__info-row'; - const renderedInfoRowsContainer = shallow( + const renderedInfoRowsContainer = shallowWithContext( wrapper .instance() .renderInfoRows( diff --git a/ui/app/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container-container.test.js b/ui/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container-container.test.js similarity index 97% rename from ui/app/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container-container.test.js rename to ui/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container-container.test.js index ef5e62895..bcbbaa9d1 100644 --- a/ui/app/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container-container.test.js +++ b/ui/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container-container.test.js @@ -21,7 +21,7 @@ jest.mock('react-redux', () => ({ }, })); -jest.mock('../../../../../app/selectors', () => ({ +jest.mock('../../../../selectors', () => ({ getBasicGasEstimateLoadingStatus: (s) => `mockBasicGasEstimateLoadingStatus:${Object.keys(s).length}`, getRenderableBasicEstimateData: (s) => @@ -42,20 +42,20 @@ jest.mock('../../../../../app/selectors', () => ({ isCustomPriceSafe: jest.fn().mockReturnValue(true), })); -jest.mock('../../../../../app/store/actions', () => ({ +jest.mock('../../../../store/actions', () => ({ hideModal: jest.fn(), setGasLimit: jest.fn(), setGasPrice: jest.fn(), updateTransaction: jest.fn(), })); -jest.mock('../../../../../app/ducks/gas/gas.duck', () => ({ +jest.mock('../../../../ducks/gas/gas.duck', () => ({ setCustomGasPrice: jest.fn(), setCustomGasLimit: jest.fn(), resetCustomData: jest.fn(), })); -jest.mock('../../../../../app/ducks/send/send.duck', () => ({ +jest.mock('../../../../ducks/send/send.duck', () => ({ hideGasButtonGroup: jest.fn(), })); diff --git a/ui/app/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container.component.js b/ui/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container.component.js similarity index 92% rename from ui/app/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container.component.js rename to ui/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container.component.js index f57cce92d..ea59b7882 100644 --- a/ui/app/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container.component.js +++ b/ui/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container.component.js @@ -123,19 +123,25 @@ export default class GasModalPageContainer extends Component { infoRowProps: { newTotalFiat, newTotalEth, sendAmount, transactionFee }, } = this.props; - let tabsToRender = [ - { - name: this.context.t('basic'), - content: this.renderBasicTabContent(gasPriceButtonGroupProps), - }, - { - name: this.context.t('advanced'), - content: this.renderAdvancedTabContent(), - }, - ]; - + let tabsToRender; if (hideBasic) { - tabsToRender = tabsToRender.slice(1); + tabsToRender = [ + { + name: this.context.t('advanced'), + content: this.renderAdvancedTabContent(), + }, + ]; + } else { + tabsToRender = [ + { + name: this.context.t('basic'), + content: this.renderBasicTabContent(gasPriceButtonGroupProps), + }, + { + name: this.context.t('advanced'), + content: this.renderAdvancedTabContent(), + }, + ]; } return ( diff --git a/ui/app/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container.container.js b/ui/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container.container.js similarity index 98% rename from ui/app/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container.container.js rename to ui/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container.container.js index 4d57502b2..d85d07c72 100644 --- a/ui/app/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container.container.js +++ b/ui/components/app/gas-customization/gas-modal-page-container/gas-modal-page-container.container.js @@ -1,5 +1,5 @@ import { connect } from 'react-redux'; -import { addHexPrefix } from '../../../../../../app/scripts/lib/util'; +import { addHexPrefix } from '../../../../../app/scripts/lib/util'; import { hideModal, setGasLimit, @@ -54,7 +54,7 @@ import { } from '../../../../pages/send/send.utils'; import { MIN_GAS_LIMIT_DEC } from '../../../../pages/send/send.constants'; import { calcMaxAmount } from '../../../../pages/send/send-content/send-amount-row/amount-max-button/amount-max-button.utils'; -import { TRANSACTION_STATUSES } from '../../../../../../shared/constants/transaction'; +import { TRANSACTION_STATUSES } from '../../../../../shared/constants/transaction'; import GasModalPageContainer from './gas-modal-page-container.component'; const mapStateToProps = (state, ownProps) => { diff --git a/ui/app/components/app/gas-customization/gas-modal-page-container/index.js b/ui/components/app/gas-customization/gas-modal-page-container/index.js similarity index 100% rename from ui/app/components/app/gas-customization/gas-modal-page-container/index.js rename to ui/components/app/gas-customization/gas-modal-page-container/index.js diff --git a/ui/app/components/app/gas-customization/gas-modal-page-container/index.scss b/ui/components/app/gas-customization/gas-modal-page-container/index.scss similarity index 100% rename from ui/app/components/app/gas-customization/gas-modal-page-container/index.scss rename to ui/components/app/gas-customization/gas-modal-page-container/index.scss diff --git a/ui/app/components/app/gas-customization/gas-price-button-group/gas-price-button-group-component.test.js b/ui/components/app/gas-customization/gas-price-button-group/gas-price-button-group-component.test.js similarity index 93% rename from ui/app/components/app/gas-customization/gas-price-button-group/gas-price-button-group-component.test.js rename to ui/components/app/gas-customization/gas-price-button-group/gas-price-button-group-component.test.js index 2cb5cb428..2391c23a6 100644 --- a/ui/app/components/app/gas-customization/gas-price-button-group/gas-price-button-group-component.test.js +++ b/ui/components/app/gas-customization/gas-price-button-group/gas-price-button-group-component.test.js @@ -1,6 +1,6 @@ import React from 'react'; import sinon from 'sinon'; -import shallow from '../../../../../lib/shallow-with-context'; +import { shallowWithContext } from '../../../../../test/lib/render-helpers'; import { GAS_ESTIMATE_TYPES } from '../../../../helpers/constants/common'; import ButtonGroup from '../../../ui/button-group'; @@ -54,7 +54,7 @@ describe('GasPriceButtonGroup Component', () => { sinon.spy(GasPriceButtonGroup.prototype, 'renderButton'); sinon.spy(GasPriceButtonGroup.prototype, 'renderButtonContent'); - wrapper = shallow( + wrapper = shallowWithContext( , ); }); @@ -119,7 +119,7 @@ describe('GasPriceButtonGroup Component', () => { { ...mockGasPriceButtonGroupProps.gasButtonInfo[0] }, mockButtonPropsAndFlags, ); - wrappedRenderButtonResult = shallow(renderButtonResult); + wrappedRenderButtonResult = shallowWithContext(renderButtonResult); }); it('should render a button', () => { @@ -183,7 +183,7 @@ describe('GasPriceButtonGroup Component', () => { className: 'someClass', }, ); - const wrappedRenderButtonContentResult = shallow( + const wrappedRenderButtonContentResult = shallowWithContext( renderButtonContentResult, ); expect( @@ -203,7 +203,7 @@ describe('GasPriceButtonGroup Component', () => { className: 'someClass', }, ); - const wrappedRenderButtonContentResult = shallow( + const wrappedRenderButtonContentResult = shallowWithContext( renderButtonContentResult, ); expect( @@ -225,7 +225,7 @@ describe('GasPriceButtonGroup Component', () => { className: 'someClass', }, ); - const wrappedRenderButtonContentResult = shallow( + const wrappedRenderButtonContentResult = shallowWithContext( renderButtonContentResult, ); expect( @@ -247,7 +247,7 @@ describe('GasPriceButtonGroup Component', () => { className: 'someClass', }, ); - const wrappedRenderButtonContentResult = shallow( + const wrappedRenderButtonContentResult = shallowWithContext( renderButtonContentResult, ); expect( @@ -268,7 +268,7 @@ describe('GasPriceButtonGroup Component', () => { showCheck: true, }, ); - const wrappedRenderButtonContentResult = shallow( + const wrappedRenderButtonContentResult = shallowWithContext( renderButtonContentResult, ); expect(wrappedRenderButtonContentResult.find('.fa-check')).toHaveLength( @@ -289,7 +289,7 @@ describe('GasPriceButtonGroup Component', () => { showCheck: true, }, ); - const wrappedRenderButtonContentResult = shallow( + const wrappedRenderButtonContentResult = shallowWithContext( renderButtonContentResult, ); expect(wrappedRenderButtonContentResult.children()).toHaveLength(5); @@ -300,7 +300,7 @@ describe('GasPriceButtonGroup Component', () => { {}, {}, ); - const wrappedRenderButtonContentResult = shallow( + const wrappedRenderButtonContentResult = shallowWithContext( renderButtonContentResult, ); expect(wrappedRenderButtonContentResult.children()).toHaveLength(0); diff --git a/ui/app/components/app/gas-customization/gas-price-button-group/gas-price-button-group.component.js b/ui/components/app/gas-customization/gas-price-button-group/gas-price-button-group.component.js similarity index 100% rename from ui/app/components/app/gas-customization/gas-price-button-group/gas-price-button-group.component.js rename to ui/components/app/gas-customization/gas-price-button-group/gas-price-button-group.component.js diff --git a/ui/app/components/app/gas-customization/gas-price-button-group/index.js b/ui/components/app/gas-customization/gas-price-button-group/index.js similarity index 100% rename from ui/app/components/app/gas-customization/gas-price-button-group/index.js rename to ui/components/app/gas-customization/gas-price-button-group/index.js diff --git a/ui/app/components/app/gas-customization/gas-price-button-group/index.scss b/ui/components/app/gas-customization/gas-price-button-group/index.scss similarity index 100% rename from ui/app/components/app/gas-customization/gas-price-button-group/index.scss rename to ui/components/app/gas-customization/gas-price-button-group/index.scss diff --git a/ui/app/components/app/gas-customization/gas-slider/gas-slider.component.js b/ui/components/app/gas-customization/gas-slider/gas-slider.component.js similarity index 100% rename from ui/app/components/app/gas-customization/gas-slider/gas-slider.component.js rename to ui/components/app/gas-customization/gas-slider/gas-slider.component.js diff --git a/ui/app/components/app/gas-customization/gas-slider/index.js b/ui/components/app/gas-customization/gas-slider/index.js similarity index 100% rename from ui/app/components/app/gas-customization/gas-slider/index.js rename to ui/components/app/gas-customization/gas-slider/index.js diff --git a/ui/app/components/app/gas-customization/gas-slider/index.scss b/ui/components/app/gas-customization/gas-slider/index.scss similarity index 100% rename from ui/app/components/app/gas-customization/gas-slider/index.scss rename to ui/components/app/gas-customization/gas-slider/index.scss diff --git a/ui/app/components/app/gas-customization/index.scss b/ui/components/app/gas-customization/index.scss similarity index 100% rename from ui/app/components/app/gas-customization/index.scss rename to ui/components/app/gas-customization/index.scss diff --git a/ui/app/components/app/home-notification/home-notification.component.js b/ui/components/app/home-notification/home-notification.component.js similarity index 100% rename from ui/app/components/app/home-notification/home-notification.component.js rename to ui/components/app/home-notification/home-notification.component.js diff --git a/ui/app/components/app/home-notification/index.js b/ui/components/app/home-notification/index.js similarity index 100% rename from ui/app/components/app/home-notification/index.js rename to ui/components/app/home-notification/index.js diff --git a/ui/app/components/app/home-notification/index.scss b/ui/components/app/home-notification/index.scss similarity index 100% rename from ui/app/components/app/home-notification/index.scss rename to ui/components/app/home-notification/index.scss diff --git a/ui/app/components/app/info-box/index.js b/ui/components/app/info-box/index.js similarity index 100% rename from ui/app/components/app/info-box/index.js rename to ui/components/app/info-box/index.js diff --git a/ui/app/components/app/info-box/index.scss b/ui/components/app/info-box/index.scss similarity index 100% rename from ui/app/components/app/info-box/index.scss rename to ui/components/app/info-box/index.scss diff --git a/ui/app/components/app/info-box/info-box.component.js b/ui/components/app/info-box/info-box.component.js similarity index 100% rename from ui/app/components/app/info-box/info-box.component.js rename to ui/components/app/info-box/info-box.component.js diff --git a/ui/app/components/app/info-box/info-box.test.js b/ui/components/app/info-box/info-box.test.js similarity index 100% rename from ui/app/components/app/info-box/info-box.test.js rename to ui/components/app/info-box/info-box.test.js diff --git a/ui/app/components/app/loading-network-screen/index.js b/ui/components/app/loading-network-screen/index.js similarity index 100% rename from ui/app/components/app/loading-network-screen/index.js rename to ui/components/app/loading-network-screen/index.js diff --git a/ui/app/components/app/loading-network-screen/loading-network-screen.component.js b/ui/components/app/loading-network-screen/loading-network-screen.component.js similarity index 100% rename from ui/app/components/app/loading-network-screen/loading-network-screen.component.js rename to ui/components/app/loading-network-screen/loading-network-screen.component.js diff --git a/ui/app/components/app/loading-network-screen/loading-network-screen.container.js b/ui/components/app/loading-network-screen/loading-network-screen.container.js similarity index 93% rename from ui/app/components/app/loading-network-screen/loading-network-screen.container.js rename to ui/components/app/loading-network-screen/loading-network-screen.container.js index bfce78fbe..2f1e711ce 100644 --- a/ui/app/components/app/loading-network-screen/loading-network-screen.container.js +++ b/ui/components/app/loading-network-screen/loading-network-screen.container.js @@ -1,5 +1,5 @@ import { connect } from 'react-redux'; -import { NETWORK_TYPE_RPC } from '../../../../../shared/constants/network'; +import { NETWORK_TYPE_RPC } from '../../../../shared/constants/network'; import * as actions from '../../../store/actions'; import { getNetworkIdentifier, isNetworkLoading } from '../../../selectors'; import LoadingNetworkScreen from './loading-network-screen.component'; diff --git a/ui/app/components/app/menu-bar/account-options-menu.js b/ui/components/app/menu-bar/account-options-menu.js similarity index 95% rename from ui/app/components/app/menu-bar/account-options-menu.js rename to ui/components/app/menu-bar/account-options-menu.js index b8ea6d1d4..f71908aae 100644 --- a/ui/app/components/app/menu-bar/account-options-menu.js +++ b/ui/components/app/menu-bar/account-options-menu.js @@ -6,7 +6,7 @@ import { useDispatch, useSelector } from 'react-redux'; import { showModal } from '../../../store/actions'; import { CONNECTED_ROUTE } from '../../../helpers/constants/routes'; import { Menu, MenuItem } from '../../ui/menu'; -import getAccountLink from '../../../../lib/account-link'; +import getAccountLink from '../../../helpers/utils/account-link'; import { getCurrentChainId, getCurrentKeyring, @@ -15,8 +15,8 @@ import { } from '../../../selectors'; import { useI18nContext } from '../../../hooks/useI18nContext'; import { useMetricEvent } from '../../../hooks/useMetricEvent'; -import { getEnvironmentType } from '../../../../../app/scripts/lib/util'; -import { ENVIRONMENT_TYPE_FULLSCREEN } from '../../../../../shared/constants/app'; +import { getEnvironmentType } from '../../../../app/scripts/lib/util'; +import { ENVIRONMENT_TYPE_FULLSCREEN } from '../../../../shared/constants/app'; export default function AccountOptionsMenu({ anchorElement, onClose }) { const t = useI18nContext(); diff --git a/ui/app/components/app/menu-bar/index.js b/ui/components/app/menu-bar/index.js similarity index 100% rename from ui/app/components/app/menu-bar/index.js rename to ui/components/app/menu-bar/index.js diff --git a/ui/app/components/app/menu-bar/index.scss b/ui/components/app/menu-bar/index.scss similarity index 100% rename from ui/app/components/app/menu-bar/index.scss rename to ui/components/app/menu-bar/index.scss diff --git a/ui/app/components/app/menu-bar/menu-bar.js b/ui/components/app/menu-bar/menu-bar.js similarity index 92% rename from ui/app/components/app/menu-bar/menu-bar.js rename to ui/components/app/menu-bar/menu-bar.js index 7b623c2c6..b5e3fdb7c 100644 --- a/ui/app/components/app/menu-bar/menu-bar.js +++ b/ui/components/app/menu-bar/menu-bar.js @@ -4,8 +4,8 @@ import { useHistory } from 'react-router-dom'; import { useSelector } from 'react-redux'; import SelectedAccount from '../selected-account'; import ConnectedStatusIndicator from '../connected-status-indicator'; -import { getEnvironmentType } from '../../../../../app/scripts/lib/util'; -import { ENVIRONMENT_TYPE_POPUP } from '../../../../../shared/constants/app'; +import { getEnvironmentType } from '../../../../app/scripts/lib/util'; +import { ENVIRONMENT_TYPE_POPUP } from '../../../../shared/constants/app'; import { CONNECTED_ACCOUNTS_ROUTE } from '../../../helpers/constants/routes'; import { useI18nContext } from '../../../hooks/useI18nContext'; import { useMetricEvent } from '../../../hooks/useMetricEvent'; diff --git a/ui/app/components/app/menu-bar/menu-bar.test.js b/ui/components/app/menu-bar/menu-bar.test.js similarity index 92% rename from ui/app/components/app/menu-bar/menu-bar.test.js rename to ui/components/app/menu-bar/menu-bar.test.js index 5db320352..4a625f717 100644 --- a/ui/app/components/app/menu-bar/menu-bar.test.js +++ b/ui/components/app/menu-bar/menu-bar.test.js @@ -1,8 +1,8 @@ import React from 'react'; import { Provider } from 'react-redux'; import configureStore from 'redux-mock-store'; -import { mountWithRouter } from '../../../../../test/lib/render-helpers'; -import { ROPSTEN_CHAIN_ID } from '../../../../../shared/constants/network'; +import { mountWithRouter } from '../../../../test/lib/render-helpers'; +import { ROPSTEN_CHAIN_ID } from '../../../../shared/constants/network'; import MenuBar from './menu-bar'; const initState = { diff --git a/ui/app/components/app/menu-droppo.js b/ui/components/app/menu-droppo.js similarity index 100% rename from ui/app/components/app/menu-droppo.js rename to ui/components/app/menu-droppo.js diff --git a/ui/app/components/app/metamask-template-renderer/index.js b/ui/components/app/metamask-template-renderer/index.js similarity index 100% rename from ui/app/components/app/metamask-template-renderer/index.js rename to ui/components/app/metamask-template-renderer/index.js diff --git a/ui/app/components/app/metamask-template-renderer/metamask-template-renderer.js b/ui/components/app/metamask-template-renderer/metamask-template-renderer.js similarity index 100% rename from ui/app/components/app/metamask-template-renderer/metamask-template-renderer.js rename to ui/components/app/metamask-template-renderer/metamask-template-renderer.js diff --git a/ui/app/components/app/metamask-template-renderer/metamask-template-renderer.stories.js b/ui/components/app/metamask-template-renderer/metamask-template-renderer.stories.js similarity index 100% rename from ui/app/components/app/metamask-template-renderer/metamask-template-renderer.stories.js rename to ui/components/app/metamask-template-renderer/metamask-template-renderer.stories.js diff --git a/ui/app/components/app/metamask-template-renderer/safe-component-list.js b/ui/components/app/metamask-template-renderer/safe-component-list.js similarity index 100% rename from ui/app/components/app/metamask-template-renderer/safe-component-list.js rename to ui/components/app/metamask-template-renderer/safe-component-list.js diff --git a/ui/app/components/app/metamask-translation/index.js b/ui/components/app/metamask-translation/index.js similarity index 100% rename from ui/app/components/app/metamask-translation/index.js rename to ui/components/app/metamask-translation/index.js diff --git a/ui/app/components/app/metamask-translation/metamask-translation.js b/ui/components/app/metamask-translation/metamask-translation.js similarity index 100% rename from ui/app/components/app/metamask-translation/metamask-translation.js rename to ui/components/app/metamask-translation/metamask-translation.js diff --git a/ui/app/components/app/metamask-translation/metamask-translation.stories.js b/ui/components/app/metamask-translation/metamask-translation.stories.js similarity index 95% rename from ui/app/components/app/metamask-translation/metamask-translation.stories.js rename to ui/components/app/metamask-translation/metamask-translation.stories.js index 21d321ccc..429037810 100644 --- a/ui/app/components/app/metamask-translation/metamask-translation.stories.js +++ b/ui/components/app/metamask-translation/metamask-translation.stories.js @@ -1,7 +1,7 @@ import React from 'react'; import { select, object } from '@storybook/addon-knobs'; import { groupBy } from 'lodash'; -import en from '../../../../../app/_locales/en/messages.json'; +import en from '../../../../app/_locales/en/messages.json'; import MetaMaskTranslation from './metamask-translation'; export default { diff --git a/ui/app/components/app/modal/index.js b/ui/components/app/modal/index.js similarity index 100% rename from ui/app/components/app/modal/index.js rename to ui/components/app/modal/index.js diff --git a/ui/app/components/app/modal/index.scss b/ui/components/app/modal/index.scss similarity index 100% rename from ui/app/components/app/modal/index.scss rename to ui/components/app/modal/index.scss diff --git a/ui/app/components/app/modal/modal-content/index.js b/ui/components/app/modal/modal-content/index.js similarity index 100% rename from ui/app/components/app/modal/modal-content/index.js rename to ui/components/app/modal/modal-content/index.js diff --git a/ui/app/components/app/modal/modal-content/index.scss b/ui/components/app/modal/modal-content/index.scss similarity index 100% rename from ui/app/components/app/modal/modal-content/index.scss rename to ui/components/app/modal/modal-content/index.scss diff --git a/ui/app/components/app/modal/modal-content/modal-content.component.js b/ui/components/app/modal/modal-content/modal-content.component.js similarity index 100% rename from ui/app/components/app/modal/modal-content/modal-content.component.js rename to ui/components/app/modal/modal-content/modal-content.component.js diff --git a/ui/app/components/app/modal/modal-content/modal-content.component.test.js b/ui/components/app/modal/modal-content/modal-content.component.test.js similarity index 100% rename from ui/app/components/app/modal/modal-content/modal-content.component.test.js rename to ui/components/app/modal/modal-content/modal-content.component.test.js diff --git a/ui/app/components/app/modal/modal.component.js b/ui/components/app/modal/modal.component.js similarity index 100% rename from ui/app/components/app/modal/modal.component.js rename to ui/components/app/modal/modal.component.js diff --git a/ui/app/components/app/modal/modal.component.test.js b/ui/components/app/modal/modal.component.test.js similarity index 100% rename from ui/app/components/app/modal/modal.component.test.js rename to ui/components/app/modal/modal.component.test.js diff --git a/ui/app/components/app/modals/account-details-modal/account-details-modal.component.js b/ui/components/app/modals/account-details-modal/account-details-modal.component.js similarity index 97% rename from ui/app/components/app/modals/account-details-modal/account-details-modal.component.js rename to ui/components/app/modals/account-details-modal/account-details-modal.component.js index 7e36e0a6c..c314d6979 100644 --- a/ui/app/components/app/modals/account-details-modal/account-details-modal.component.js +++ b/ui/components/app/modals/account-details-modal/account-details-modal.component.js @@ -1,7 +1,7 @@ import React, { Component } from 'react'; import PropTypes from 'prop-types'; import AccountModalContainer from '../account-modal-container'; -import getAccountLink from '../../../../../lib/account-link'; +import getAccountLink from '../../../../helpers/utils/account-link'; import QrView from '../../../ui/qr-code'; import EditableLabel from '../../../ui/editable-label'; import Button from '../../../ui/button'; diff --git a/ui/app/components/app/modals/account-details-modal/account-details-modal.container.js b/ui/components/app/modals/account-details-modal/account-details-modal.container.js similarity index 100% rename from ui/app/components/app/modals/account-details-modal/account-details-modal.container.js rename to ui/components/app/modals/account-details-modal/account-details-modal.container.js diff --git a/ui/app/components/app/modals/account-details-modal/account-details-modal.test.js b/ui/components/app/modals/account-details-modal/account-details-modal.test.js similarity index 100% rename from ui/app/components/app/modals/account-details-modal/account-details-modal.test.js rename to ui/components/app/modals/account-details-modal/account-details-modal.test.js diff --git a/ui/app/components/app/modals/account-details-modal/index.js b/ui/components/app/modals/account-details-modal/index.js similarity index 100% rename from ui/app/components/app/modals/account-details-modal/index.js rename to ui/components/app/modals/account-details-modal/index.js diff --git a/ui/app/components/app/modals/account-details-modal/index.scss b/ui/components/app/modals/account-details-modal/index.scss similarity index 100% rename from ui/app/components/app/modals/account-details-modal/index.scss rename to ui/components/app/modals/account-details-modal/index.scss diff --git a/ui/app/components/app/modals/account-modal-container/account-modal-container.component.js b/ui/components/app/modals/account-modal-container/account-modal-container.component.js similarity index 100% rename from ui/app/components/app/modals/account-modal-container/account-modal-container.component.js rename to ui/components/app/modals/account-modal-container/account-modal-container.component.js diff --git a/ui/app/components/app/modals/account-modal-container/account-modal-container.container.js b/ui/components/app/modals/account-modal-container/account-modal-container.container.js similarity index 100% rename from ui/app/components/app/modals/account-modal-container/account-modal-container.container.js rename to ui/components/app/modals/account-modal-container/account-modal-container.container.js diff --git a/ui/app/components/app/modals/account-modal-container/index.js b/ui/components/app/modals/account-modal-container/index.js similarity index 100% rename from ui/app/components/app/modals/account-modal-container/index.js rename to ui/components/app/modals/account-modal-container/index.js diff --git a/ui/app/components/app/modals/account-modal-container/index.scss b/ui/components/app/modals/account-modal-container/index.scss similarity index 100% rename from ui/app/components/app/modals/account-modal-container/index.scss rename to ui/components/app/modals/account-modal-container/index.scss diff --git a/ui/app/components/app/modals/add-to-addressbook-modal/add-to-addressbook-modal.component.js b/ui/components/app/modals/add-to-addressbook-modal/add-to-addressbook-modal.component.js similarity index 100% rename from ui/app/components/app/modals/add-to-addressbook-modal/add-to-addressbook-modal.component.js rename to ui/components/app/modals/add-to-addressbook-modal/add-to-addressbook-modal.component.js diff --git a/ui/app/components/app/modals/add-to-addressbook-modal/add-to-addressbook-modal.container.js b/ui/components/app/modals/add-to-addressbook-modal/add-to-addressbook-modal.container.js similarity index 100% rename from ui/app/components/app/modals/add-to-addressbook-modal/add-to-addressbook-modal.container.js rename to ui/components/app/modals/add-to-addressbook-modal/add-to-addressbook-modal.container.js diff --git a/ui/app/components/app/modals/add-to-addressbook-modal/index.js b/ui/components/app/modals/add-to-addressbook-modal/index.js similarity index 100% rename from ui/app/components/app/modals/add-to-addressbook-modal/index.js rename to ui/components/app/modals/add-to-addressbook-modal/index.js diff --git a/ui/app/components/app/modals/add-to-addressbook-modal/index.scss b/ui/components/app/modals/add-to-addressbook-modal/index.scss similarity index 100% rename from ui/app/components/app/modals/add-to-addressbook-modal/index.scss rename to ui/components/app/modals/add-to-addressbook-modal/index.scss diff --git a/ui/app/components/app/modals/cancel-transaction/cancel-transaction-gas-fee/cancel-transaction-gas-fee.component.js b/ui/components/app/modals/cancel-transaction/cancel-transaction-gas-fee/cancel-transaction-gas-fee.component.js similarity index 100% rename from ui/app/components/app/modals/cancel-transaction/cancel-transaction-gas-fee/cancel-transaction-gas-fee.component.js rename to ui/components/app/modals/cancel-transaction/cancel-transaction-gas-fee/cancel-transaction-gas-fee.component.js diff --git a/ui/app/components/app/modals/cancel-transaction/cancel-transaction-gas-fee/cancel-transaction-gas-fee.component.test.js b/ui/components/app/modals/cancel-transaction/cancel-transaction-gas-fee/cancel-transaction-gas-fee.component.test.js similarity index 100% rename from ui/app/components/app/modals/cancel-transaction/cancel-transaction-gas-fee/cancel-transaction-gas-fee.component.test.js rename to ui/components/app/modals/cancel-transaction/cancel-transaction-gas-fee/cancel-transaction-gas-fee.component.test.js diff --git a/ui/app/components/app/modals/cancel-transaction/cancel-transaction-gas-fee/index.js b/ui/components/app/modals/cancel-transaction/cancel-transaction-gas-fee/index.js similarity index 100% rename from ui/app/components/app/modals/cancel-transaction/cancel-transaction-gas-fee/index.js rename to ui/components/app/modals/cancel-transaction/cancel-transaction-gas-fee/index.js diff --git a/ui/app/components/app/modals/cancel-transaction/cancel-transaction-gas-fee/index.scss b/ui/components/app/modals/cancel-transaction/cancel-transaction-gas-fee/index.scss similarity index 100% rename from ui/app/components/app/modals/cancel-transaction/cancel-transaction-gas-fee/index.scss rename to ui/components/app/modals/cancel-transaction/cancel-transaction-gas-fee/index.scss diff --git a/ui/app/components/app/modals/cancel-transaction/cancel-transaction.component.js b/ui/components/app/modals/cancel-transaction/cancel-transaction.component.js similarity index 95% rename from ui/app/components/app/modals/cancel-transaction/cancel-transaction.component.js rename to ui/components/app/modals/cancel-transaction/cancel-transaction.component.js index d45ba6198..9b436f7d9 100644 --- a/ui/app/components/app/modals/cancel-transaction/cancel-transaction.component.js +++ b/ui/components/app/modals/cancel-transaction/cancel-transaction.component.js @@ -1,7 +1,7 @@ import React, { PureComponent } from 'react'; import PropTypes from 'prop-types'; import Modal from '../../modal'; -import { TRANSACTION_STATUSES } from '../../../../../../shared/constants/transaction'; +import { TRANSACTION_STATUSES } from '../../../../../shared/constants/transaction'; import CancelTransactionGasFee from './cancel-transaction-gas-fee'; export default class CancelTransaction extends PureComponent { diff --git a/ui/app/components/app/modals/cancel-transaction/cancel-transaction.component.test.js b/ui/components/app/modals/cancel-transaction/cancel-transaction.component.test.js similarity index 100% rename from ui/app/components/app/modals/cancel-transaction/cancel-transaction.component.test.js rename to ui/components/app/modals/cancel-transaction/cancel-transaction.component.test.js diff --git a/ui/app/components/app/modals/cancel-transaction/cancel-transaction.container.js b/ui/components/app/modals/cancel-transaction/cancel-transaction.container.js similarity index 100% rename from ui/app/components/app/modals/cancel-transaction/cancel-transaction.container.js rename to ui/components/app/modals/cancel-transaction/cancel-transaction.container.js diff --git a/ui/app/components/app/modals/cancel-transaction/index.js b/ui/components/app/modals/cancel-transaction/index.js similarity index 100% rename from ui/app/components/app/modals/cancel-transaction/index.js rename to ui/components/app/modals/cancel-transaction/index.js diff --git a/ui/app/components/app/modals/cancel-transaction/index.scss b/ui/components/app/modals/cancel-transaction/index.scss similarity index 100% rename from ui/app/components/app/modals/cancel-transaction/index.scss rename to ui/components/app/modals/cancel-transaction/index.scss diff --git a/ui/app/components/app/modals/confirm-delete-network/confirm-delete-network.component.js b/ui/components/app/modals/confirm-delete-network/confirm-delete-network.component.js similarity index 100% rename from ui/app/components/app/modals/confirm-delete-network/confirm-delete-network.component.js rename to ui/components/app/modals/confirm-delete-network/confirm-delete-network.component.js diff --git a/ui/app/components/app/modals/confirm-delete-network/confirm-delete-network.container.js b/ui/components/app/modals/confirm-delete-network/confirm-delete-network.container.js similarity index 100% rename from ui/app/components/app/modals/confirm-delete-network/confirm-delete-network.container.js rename to ui/components/app/modals/confirm-delete-network/confirm-delete-network.container.js diff --git a/ui/app/components/app/modals/confirm-delete-network/confirm-delete-network.test.js b/ui/components/app/modals/confirm-delete-network/confirm-delete-network.test.js similarity index 100% rename from ui/app/components/app/modals/confirm-delete-network/confirm-delete-network.test.js rename to ui/components/app/modals/confirm-delete-network/confirm-delete-network.test.js diff --git a/ui/app/components/app/modals/confirm-delete-network/index.js b/ui/components/app/modals/confirm-delete-network/index.js similarity index 100% rename from ui/app/components/app/modals/confirm-delete-network/index.js rename to ui/components/app/modals/confirm-delete-network/index.js diff --git a/ui/app/components/app/modals/confirm-remove-account/confirm-remove-account.component.js b/ui/components/app/modals/confirm-remove-account/confirm-remove-account.component.js similarity index 97% rename from ui/app/components/app/modals/confirm-remove-account/confirm-remove-account.component.js rename to ui/components/app/modals/confirm-remove-account/confirm-remove-account.component.js index 8c2831c2c..decdc329f 100644 --- a/ui/app/components/app/modals/confirm-remove-account/confirm-remove-account.component.js +++ b/ui/components/app/modals/confirm-remove-account/confirm-remove-account.component.js @@ -3,7 +3,7 @@ import PropTypes from 'prop-types'; import Modal from '../../modal'; import { addressSummary } from '../../../../helpers/utils/util'; import Identicon from '../../../ui/identicon'; -import getAccountLink from '../../../../../lib/account-link'; +import getAccountLink from '../../../../helpers/utils/account-link'; export default class ConfirmRemoveAccount extends Component { static propTypes = { diff --git a/ui/app/components/app/modals/confirm-remove-account/confirm-remove-account.container.js b/ui/components/app/modals/confirm-remove-account/confirm-remove-account.container.js similarity index 100% rename from ui/app/components/app/modals/confirm-remove-account/confirm-remove-account.container.js rename to ui/components/app/modals/confirm-remove-account/confirm-remove-account.container.js diff --git a/ui/app/components/app/modals/confirm-remove-account/confirm-remove-account.test.js b/ui/components/app/modals/confirm-remove-account/confirm-remove-account.test.js similarity index 100% rename from ui/app/components/app/modals/confirm-remove-account/confirm-remove-account.test.js rename to ui/components/app/modals/confirm-remove-account/confirm-remove-account.test.js diff --git a/ui/app/components/app/modals/confirm-remove-account/index.js b/ui/components/app/modals/confirm-remove-account/index.js similarity index 100% rename from ui/app/components/app/modals/confirm-remove-account/index.js rename to ui/components/app/modals/confirm-remove-account/index.js diff --git a/ui/app/components/app/modals/confirm-remove-account/index.scss b/ui/components/app/modals/confirm-remove-account/index.scss similarity index 100% rename from ui/app/components/app/modals/confirm-remove-account/index.scss rename to ui/components/app/modals/confirm-remove-account/index.scss diff --git a/ui/app/components/app/modals/confirm-reset-account/confirm-reset-account.component.js b/ui/components/app/modals/confirm-reset-account/confirm-reset-account.component.js similarity index 100% rename from ui/app/components/app/modals/confirm-reset-account/confirm-reset-account.component.js rename to ui/components/app/modals/confirm-reset-account/confirm-reset-account.component.js diff --git a/ui/app/components/app/modals/confirm-reset-account/confirm-reset-account.container.js b/ui/components/app/modals/confirm-reset-account/confirm-reset-account.container.js similarity index 100% rename from ui/app/components/app/modals/confirm-reset-account/confirm-reset-account.container.js rename to ui/components/app/modals/confirm-reset-account/confirm-reset-account.container.js diff --git a/ui/app/components/app/modals/confirm-reset-account/confirm-reset-account.test.js b/ui/components/app/modals/confirm-reset-account/confirm-reset-account.test.js similarity index 100% rename from ui/app/components/app/modals/confirm-reset-account/confirm-reset-account.test.js rename to ui/components/app/modals/confirm-reset-account/confirm-reset-account.test.js diff --git a/ui/app/components/app/modals/confirm-reset-account/index.js b/ui/components/app/modals/confirm-reset-account/index.js similarity index 100% rename from ui/app/components/app/modals/confirm-reset-account/index.js rename to ui/components/app/modals/confirm-reset-account/index.js diff --git a/ui/app/components/app/modals/customize-nonce/customize-nonce.component.js b/ui/components/app/modals/customize-nonce/customize-nonce.component.js similarity index 100% rename from ui/app/components/app/modals/customize-nonce/customize-nonce.component.js rename to ui/components/app/modals/customize-nonce/customize-nonce.component.js diff --git a/ui/app/components/app/modals/customize-nonce/index.js b/ui/components/app/modals/customize-nonce/index.js similarity index 100% rename from ui/app/components/app/modals/customize-nonce/index.js rename to ui/components/app/modals/customize-nonce/index.js diff --git a/ui/app/components/app/modals/customize-nonce/index.scss b/ui/components/app/modals/customize-nonce/index.scss similarity index 100% rename from ui/app/components/app/modals/customize-nonce/index.scss rename to ui/components/app/modals/customize-nonce/index.scss diff --git a/ui/app/components/app/modals/deposit-ether-modal/deposit-ether-modal.component.js b/ui/components/app/modals/deposit-ether-modal/deposit-ether-modal.component.js similarity index 98% rename from ui/app/components/app/modals/deposit-ether-modal/deposit-ether-modal.component.js rename to ui/components/app/modals/deposit-ether-modal/deposit-ether-modal.component.js index 553f25973..3f1775a47 100644 --- a/ui/app/components/app/modals/deposit-ether-modal/deposit-ether-modal.component.js +++ b/ui/components/app/modals/deposit-ether-modal/deposit-ether-modal.component.js @@ -1,6 +1,6 @@ import PropTypes from 'prop-types'; import React, { Component } from 'react'; -import { NETWORK_TO_NAME_MAP } from '../../../../../../shared/constants/network'; +import { NETWORK_TO_NAME_MAP } from '../../../../../shared/constants/network'; import Button from '../../../ui/button'; export default class DepositEtherModal extends Component { diff --git a/ui/app/components/app/modals/deposit-ether-modal/deposit-ether-modal.container.js b/ui/components/app/modals/deposit-ether-modal/deposit-ether-modal.container.js similarity index 100% rename from ui/app/components/app/modals/deposit-ether-modal/deposit-ether-modal.container.js rename to ui/components/app/modals/deposit-ether-modal/deposit-ether-modal.container.js diff --git a/ui/app/components/app/modals/deposit-ether-modal/index.js b/ui/components/app/modals/deposit-ether-modal/index.js similarity index 100% rename from ui/app/components/app/modals/deposit-ether-modal/index.js rename to ui/components/app/modals/deposit-ether-modal/index.js diff --git a/ui/app/components/app/modals/deposit-ether-modal/index.scss b/ui/components/app/modals/deposit-ether-modal/index.scss similarity index 100% rename from ui/app/components/app/modals/deposit-ether-modal/index.scss rename to ui/components/app/modals/deposit-ether-modal/index.scss diff --git a/ui/app/components/app/modals/edit-approval-permission/edit-approval-permission.component.js b/ui/components/app/modals/edit-approval-permission/edit-approval-permission.component.js similarity index 100% rename from ui/app/components/app/modals/edit-approval-permission/edit-approval-permission.component.js rename to ui/components/app/modals/edit-approval-permission/edit-approval-permission.component.js diff --git a/ui/app/components/app/modals/edit-approval-permission/edit-approval-permission.container.js b/ui/components/app/modals/edit-approval-permission/edit-approval-permission.container.js similarity index 100% rename from ui/app/components/app/modals/edit-approval-permission/edit-approval-permission.container.js rename to ui/components/app/modals/edit-approval-permission/edit-approval-permission.container.js diff --git a/ui/app/components/app/modals/edit-approval-permission/index.js b/ui/components/app/modals/edit-approval-permission/index.js similarity index 100% rename from ui/app/components/app/modals/edit-approval-permission/index.js rename to ui/components/app/modals/edit-approval-permission/index.js diff --git a/ui/app/components/app/modals/edit-approval-permission/index.scss b/ui/components/app/modals/edit-approval-permission/index.scss similarity index 100% rename from ui/app/components/app/modals/edit-approval-permission/index.scss rename to ui/components/app/modals/edit-approval-permission/index.scss diff --git a/ui/app/components/app/modals/export-private-key-modal/export-private-key-modal.component.js b/ui/components/app/modals/export-private-key-modal/export-private-key-modal.component.js similarity index 100% rename from ui/app/components/app/modals/export-private-key-modal/export-private-key-modal.component.js rename to ui/components/app/modals/export-private-key-modal/export-private-key-modal.component.js diff --git a/ui/app/components/app/modals/export-private-key-modal/export-private-key-modal.container.js b/ui/components/app/modals/export-private-key-modal/export-private-key-modal.container.js similarity index 100% rename from ui/app/components/app/modals/export-private-key-modal/export-private-key-modal.container.js rename to ui/components/app/modals/export-private-key-modal/export-private-key-modal.container.js diff --git a/ui/app/components/app/modals/export-private-key-modal/index.js b/ui/components/app/modals/export-private-key-modal/index.js similarity index 100% rename from ui/app/components/app/modals/export-private-key-modal/index.js rename to ui/components/app/modals/export-private-key-modal/index.js diff --git a/ui/app/components/app/modals/export-private-key-modal/index.scss b/ui/components/app/modals/export-private-key-modal/index.scss similarity index 100% rename from ui/app/components/app/modals/export-private-key-modal/index.scss rename to ui/components/app/modals/export-private-key-modal/index.scss diff --git a/ui/app/components/app/modals/fade-modal.js b/ui/components/app/modals/fade-modal.js similarity index 100% rename from ui/app/components/app/modals/fade-modal.js rename to ui/components/app/modals/fade-modal.js diff --git a/ui/app/components/app/modals/hide-token-confirmation-modal/hide-token-confirmation-modal.js b/ui/components/app/modals/hide-token-confirmation-modal/hide-token-confirmation-modal.js similarity index 100% rename from ui/app/components/app/modals/hide-token-confirmation-modal/hide-token-confirmation-modal.js rename to ui/components/app/modals/hide-token-confirmation-modal/hide-token-confirmation-modal.js diff --git a/ui/app/components/app/modals/hide-token-confirmation-modal/index.js b/ui/components/app/modals/hide-token-confirmation-modal/index.js similarity index 100% rename from ui/app/components/app/modals/hide-token-confirmation-modal/index.js rename to ui/components/app/modals/hide-token-confirmation-modal/index.js diff --git a/ui/app/components/app/modals/hide-token-confirmation-modal/index.scss b/ui/components/app/modals/hide-token-confirmation-modal/index.scss similarity index 100% rename from ui/app/components/app/modals/hide-token-confirmation-modal/index.scss rename to ui/components/app/modals/hide-token-confirmation-modal/index.scss diff --git a/ui/app/components/app/modals/index.js b/ui/components/app/modals/index.js similarity index 100% rename from ui/app/components/app/modals/index.js rename to ui/components/app/modals/index.js diff --git a/ui/app/components/app/modals/index.scss b/ui/components/app/modals/index.scss similarity index 100% rename from ui/app/components/app/modals/index.scss rename to ui/components/app/modals/index.scss diff --git a/ui/app/components/app/modals/loading-network-error/index.js b/ui/components/app/modals/loading-network-error/index.js similarity index 100% rename from ui/app/components/app/modals/loading-network-error/index.js rename to ui/components/app/modals/loading-network-error/index.js diff --git a/ui/app/components/app/modals/loading-network-error/loading-network-error.component.js b/ui/components/app/modals/loading-network-error/loading-network-error.component.js similarity index 100% rename from ui/app/components/app/modals/loading-network-error/loading-network-error.component.js rename to ui/components/app/modals/loading-network-error/loading-network-error.component.js diff --git a/ui/app/components/app/modals/loading-network-error/loading-network-error.container.js b/ui/components/app/modals/loading-network-error/loading-network-error.container.js similarity index 100% rename from ui/app/components/app/modals/loading-network-error/loading-network-error.container.js rename to ui/components/app/modals/loading-network-error/loading-network-error.container.js diff --git a/ui/app/components/app/modals/metametrics-opt-in-modal/index.js b/ui/components/app/modals/metametrics-opt-in-modal/index.js similarity index 100% rename from ui/app/components/app/modals/metametrics-opt-in-modal/index.js rename to ui/components/app/modals/metametrics-opt-in-modal/index.js diff --git a/ui/app/components/app/modals/metametrics-opt-in-modal/index.scss b/ui/components/app/modals/metametrics-opt-in-modal/index.scss similarity index 100% rename from ui/app/components/app/modals/metametrics-opt-in-modal/index.scss rename to ui/components/app/modals/metametrics-opt-in-modal/index.scss diff --git a/ui/app/components/app/modals/metametrics-opt-in-modal/metametrics-opt-in-modal.component.js b/ui/components/app/modals/metametrics-opt-in-modal/metametrics-opt-in-modal.component.js similarity index 100% rename from ui/app/components/app/modals/metametrics-opt-in-modal/metametrics-opt-in-modal.component.js rename to ui/components/app/modals/metametrics-opt-in-modal/metametrics-opt-in-modal.component.js diff --git a/ui/app/components/app/modals/metametrics-opt-in-modal/metametrics-opt-in-modal.container.js b/ui/components/app/modals/metametrics-opt-in-modal/metametrics-opt-in-modal.container.js similarity index 100% rename from ui/app/components/app/modals/metametrics-opt-in-modal/metametrics-opt-in-modal.container.js rename to ui/components/app/modals/metametrics-opt-in-modal/metametrics-opt-in-modal.container.js diff --git a/ui/app/components/app/modals/metametrics-opt-in-modal/metametrics-opt-in-modal.test.js b/ui/components/app/modals/metametrics-opt-in-modal/metametrics-opt-in-modal.test.js similarity index 95% rename from ui/app/components/app/modals/metametrics-opt-in-modal/metametrics-opt-in-modal.test.js rename to ui/components/app/modals/metametrics-opt-in-modal/metametrics-opt-in-modal.test.js index fc45751b5..7b90b24ff 100644 --- a/ui/app/components/app/modals/metametrics-opt-in-modal/metametrics-opt-in-modal.test.js +++ b/ui/components/app/modals/metametrics-opt-in-modal/metametrics-opt-in-modal.test.js @@ -1,7 +1,7 @@ import React from 'react'; import sinon from 'sinon'; import { mount } from 'enzyme'; -import messages from '../../../../../../app/_locales/en/messages.json'; +import messages from '../../../../../app/_locales/en/messages.json'; import MetaMetricsOptIn from './metametrics-opt-in-modal.container'; describe('MetaMetrics Opt In', () => { diff --git a/ui/app/components/app/modals/modal.js b/ui/components/app/modals/modal.js similarity index 98% rename from ui/app/components/app/modals/modal.js rename to ui/components/app/modals/modal.js index 74373354c..ce4282df3 100644 --- a/ui/app/components/app/modals/modal.js +++ b/ui/components/app/modals/modal.js @@ -4,9 +4,9 @@ import React, { Component } from 'react'; import { connect } from 'react-redux'; import * as actions from '../../../store/actions'; import { resetCustomData as resetCustomGasData } from '../../../ducks/gas/gas.duck'; -import isMobileView from '../../../../lib/is-mobile-view'; -import { getEnvironmentType } from '../../../../../app/scripts/lib/util'; -import { ENVIRONMENT_TYPE_POPUP } from '../../../../../shared/constants/app'; +import isMobileView from '../../../helpers/utils/is-mobile-view'; +import { getEnvironmentType } from '../../../../app/scripts/lib/util'; +import { ENVIRONMENT_TYPE_POPUP } from '../../../../shared/constants/app'; // Modal Components import ConfirmCustomizeGasModal from '../gas-customization/gas-modal-page-container'; diff --git a/ui/app/components/app/modals/new-account-modal/index.js b/ui/components/app/modals/new-account-modal/index.js similarity index 100% rename from ui/app/components/app/modals/new-account-modal/index.js rename to ui/components/app/modals/new-account-modal/index.js diff --git a/ui/app/components/app/modals/new-account-modal/index.scss b/ui/components/app/modals/new-account-modal/index.scss similarity index 100% rename from ui/app/components/app/modals/new-account-modal/index.scss rename to ui/components/app/modals/new-account-modal/index.scss diff --git a/ui/app/components/app/modals/new-account-modal/new-account-modal.component.js b/ui/components/app/modals/new-account-modal/new-account-modal.component.js similarity index 100% rename from ui/app/components/app/modals/new-account-modal/new-account-modal.component.js rename to ui/components/app/modals/new-account-modal/new-account-modal.component.js diff --git a/ui/app/components/app/modals/new-account-modal/new-account-modal.container.js b/ui/components/app/modals/new-account-modal/new-account-modal.container.js similarity index 100% rename from ui/app/components/app/modals/new-account-modal/new-account-modal.container.js rename to ui/components/app/modals/new-account-modal/new-account-modal.container.js diff --git a/ui/app/components/app/modals/qr-scanner/index.js b/ui/components/app/modals/qr-scanner/index.js similarity index 100% rename from ui/app/components/app/modals/qr-scanner/index.js rename to ui/components/app/modals/qr-scanner/index.js diff --git a/ui/app/components/app/modals/qr-scanner/index.scss b/ui/components/app/modals/qr-scanner/index.scss similarity index 100% rename from ui/app/components/app/modals/qr-scanner/index.scss rename to ui/components/app/modals/qr-scanner/index.scss diff --git a/ui/app/components/app/modals/qr-scanner/qr-scanner.component.js b/ui/components/app/modals/qr-scanner/qr-scanner.component.js similarity index 97% rename from ui/app/components/app/modals/qr-scanner/qr-scanner.component.js rename to ui/components/app/modals/qr-scanner/qr-scanner.component.js index 7ca6a5089..6cad31f6e 100644 --- a/ui/app/components/app/modals/qr-scanner/qr-scanner.component.js +++ b/ui/components/app/modals/qr-scanner/qr-scanner.component.js @@ -2,10 +2,10 @@ import React, { Component } from 'react'; import PropTypes from 'prop-types'; import log from 'loglevel'; import { BrowserQRCodeReader } from '@zxing/library'; -import { getEnvironmentType } from '../../../../../../app/scripts/lib/util'; -import { ENVIRONMENT_TYPE_FULLSCREEN } from '../../../../../../shared/constants/app'; +import { getEnvironmentType } from '../../../../../app/scripts/lib/util'; +import { ENVIRONMENT_TYPE_FULLSCREEN } from '../../../../../shared/constants/app'; import Spinner from '../../../ui/spinner'; -import WebcamUtils from '../../../../../lib/webcam-utils'; +import WebcamUtils from '../../../../helpers/utils/webcam-utils'; import PageContainerFooter from '../../../ui/page-container/page-container-footer/page-container-footer.component'; const READY_STATE = { diff --git a/ui/app/components/app/modals/qr-scanner/qr-scanner.container.js b/ui/components/app/modals/qr-scanner/qr-scanner.container.js similarity index 100% rename from ui/app/components/app/modals/qr-scanner/qr-scanner.container.js rename to ui/components/app/modals/qr-scanner/qr-scanner.container.js diff --git a/ui/app/components/app/modals/reject-transactions/index.js b/ui/components/app/modals/reject-transactions/index.js similarity index 100% rename from ui/app/components/app/modals/reject-transactions/index.js rename to ui/components/app/modals/reject-transactions/index.js diff --git a/ui/app/components/app/modals/reject-transactions/index.scss b/ui/components/app/modals/reject-transactions/index.scss similarity index 100% rename from ui/app/components/app/modals/reject-transactions/index.scss rename to ui/components/app/modals/reject-transactions/index.scss diff --git a/ui/app/components/app/modals/reject-transactions/reject-transactions.component.js b/ui/components/app/modals/reject-transactions/reject-transactions.component.js similarity index 100% rename from ui/app/components/app/modals/reject-transactions/reject-transactions.component.js rename to ui/components/app/modals/reject-transactions/reject-transactions.component.js diff --git a/ui/app/components/app/modals/reject-transactions/reject-transactions.container.js b/ui/components/app/modals/reject-transactions/reject-transactions.container.js similarity index 100% rename from ui/app/components/app/modals/reject-transactions/reject-transactions.container.js rename to ui/components/app/modals/reject-transactions/reject-transactions.container.js diff --git a/ui/app/components/app/modals/reject-transactions/reject-transactions.test.js b/ui/components/app/modals/reject-transactions/reject-transactions.test.js similarity index 100% rename from ui/app/components/app/modals/reject-transactions/reject-transactions.test.js rename to ui/components/app/modals/reject-transactions/reject-transactions.test.js diff --git a/ui/app/components/app/modals/transaction-confirmed/index.js b/ui/components/app/modals/transaction-confirmed/index.js similarity index 100% rename from ui/app/components/app/modals/transaction-confirmed/index.js rename to ui/components/app/modals/transaction-confirmed/index.js diff --git a/ui/app/components/app/modals/transaction-confirmed/index.scss b/ui/components/app/modals/transaction-confirmed/index.scss similarity index 100% rename from ui/app/components/app/modals/transaction-confirmed/index.scss rename to ui/components/app/modals/transaction-confirmed/index.scss diff --git a/ui/app/components/app/modals/transaction-confirmed/transaction-confirmed.component.js b/ui/components/app/modals/transaction-confirmed/transaction-confirmed.component.js similarity index 100% rename from ui/app/components/app/modals/transaction-confirmed/transaction-confirmed.component.js rename to ui/components/app/modals/transaction-confirmed/transaction-confirmed.component.js diff --git a/ui/app/components/app/modals/transaction-confirmed/transaction-confirmed.container.js b/ui/components/app/modals/transaction-confirmed/transaction-confirmed.container.js similarity index 100% rename from ui/app/components/app/modals/transaction-confirmed/transaction-confirmed.container.js rename to ui/components/app/modals/transaction-confirmed/transaction-confirmed.container.js diff --git a/ui/app/components/app/modals/transaction-confirmed/transaction-confirmed.test.js b/ui/components/app/modals/transaction-confirmed/transaction-confirmed.test.js similarity index 100% rename from ui/app/components/app/modals/transaction-confirmed/transaction-confirmed.test.js rename to ui/components/app/modals/transaction-confirmed/transaction-confirmed.test.js diff --git a/ui/app/components/app/multiple-notifications/index.js b/ui/components/app/multiple-notifications/index.js similarity index 100% rename from ui/app/components/app/multiple-notifications/index.js rename to ui/components/app/multiple-notifications/index.js diff --git a/ui/app/components/app/multiple-notifications/index.scss b/ui/components/app/multiple-notifications/index.scss similarity index 100% rename from ui/app/components/app/multiple-notifications/index.scss rename to ui/components/app/multiple-notifications/index.scss diff --git a/ui/app/components/app/multiple-notifications/multiple-notifications.component.js b/ui/components/app/multiple-notifications/multiple-notifications.component.js similarity index 100% rename from ui/app/components/app/multiple-notifications/multiple-notifications.component.js rename to ui/components/app/multiple-notifications/multiple-notifications.component.js diff --git a/ui/app/components/app/network-display/index.js b/ui/components/app/network-display/index.js similarity index 100% rename from ui/app/components/app/network-display/index.js rename to ui/components/app/network-display/index.js diff --git a/ui/app/components/app/network-display/index.scss b/ui/components/app/network-display/index.scss similarity index 100% rename from ui/app/components/app/network-display/index.scss rename to ui/components/app/network-display/index.scss diff --git a/ui/app/components/app/network-display/network-display.js b/ui/components/app/network-display/network-display.js similarity index 98% rename from ui/app/components/app/network-display/network-display.js rename to ui/components/app/network-display/network-display.js index ba83bb5c9..87b851535 100644 --- a/ui/app/components/app/network-display/network-display.js +++ b/ui/components/app/network-display/network-display.js @@ -5,7 +5,7 @@ import { useSelector } from 'react-redux'; import { NETWORK_TYPE_RPC, NETWORK_TYPE_TO_ID_MAP, -} from '../../../../../shared/constants/network'; +} from '../../../../shared/constants/network'; import LoadingIndicator from '../../ui/loading-indicator'; import ColorIndicator from '../../ui/color-indicator'; diff --git a/ui/app/components/app/permission-page-container/index.js b/ui/components/app/permission-page-container/index.js similarity index 100% rename from ui/app/components/app/permission-page-container/index.js rename to ui/components/app/permission-page-container/index.js diff --git a/ui/app/components/app/permission-page-container/index.scss b/ui/components/app/permission-page-container/index.scss similarity index 100% rename from ui/app/components/app/permission-page-container/index.scss rename to ui/components/app/permission-page-container/index.scss diff --git a/ui/app/components/app/permission-page-container/permission-page-container-content/index.js b/ui/components/app/permission-page-container/permission-page-container-content/index.js similarity index 100% rename from ui/app/components/app/permission-page-container/permission-page-container-content/index.js rename to ui/components/app/permission-page-container/permission-page-container-content/index.js diff --git a/ui/app/components/app/permission-page-container/permission-page-container-content/permission-page-container-content.component.js b/ui/components/app/permission-page-container/permission-page-container-content/permission-page-container-content.component.js similarity index 100% rename from ui/app/components/app/permission-page-container/permission-page-container-content/permission-page-container-content.component.js rename to ui/components/app/permission-page-container/permission-page-container-content/permission-page-container-content.component.js diff --git a/ui/app/components/app/permission-page-container/permission-page-container.component.js b/ui/components/app/permission-page-container/permission-page-container.component.js similarity index 100% rename from ui/app/components/app/permission-page-container/permission-page-container.component.js rename to ui/components/app/permission-page-container/permission-page-container.component.js diff --git a/ui/app/components/app/permission-page-container/permission-page-container.container.js b/ui/components/app/permission-page-container/permission-page-container.container.js similarity index 100% rename from ui/app/components/app/permission-page-container/permission-page-container.container.js rename to ui/components/app/permission-page-container/permission-page-container.container.js diff --git a/ui/app/components/app/permissions-connect-footer/index.js b/ui/components/app/permissions-connect-footer/index.js similarity index 100% rename from ui/app/components/app/permissions-connect-footer/index.js rename to ui/components/app/permissions-connect-footer/index.js diff --git a/ui/app/components/app/permissions-connect-footer/index.scss b/ui/components/app/permissions-connect-footer/index.scss similarity index 100% rename from ui/app/components/app/permissions-connect-footer/index.scss rename to ui/components/app/permissions-connect-footer/index.scss diff --git a/ui/app/components/app/permissions-connect-footer/permissions-connect-footer.component.js b/ui/components/app/permissions-connect-footer/permissions-connect-footer.component.js similarity index 100% rename from ui/app/components/app/permissions-connect-footer/permissions-connect-footer.component.js rename to ui/components/app/permissions-connect-footer/permissions-connect-footer.component.js diff --git a/ui/app/components/app/permissions-connect-header/index.js b/ui/components/app/permissions-connect-header/index.js similarity index 100% rename from ui/app/components/app/permissions-connect-header/index.js rename to ui/components/app/permissions-connect-header/index.js diff --git a/ui/app/components/app/permissions-connect-header/index.scss b/ui/components/app/permissions-connect-header/index.scss similarity index 100% rename from ui/app/components/app/permissions-connect-header/index.scss rename to ui/components/app/permissions-connect-header/index.scss diff --git a/ui/app/components/app/permissions-connect-header/permissions-connect-header.component.js b/ui/components/app/permissions-connect-header/permissions-connect-header.component.js similarity index 100% rename from ui/app/components/app/permissions-connect-header/permissions-connect-header.component.js rename to ui/components/app/permissions-connect-header/permissions-connect-header.component.js diff --git a/ui/app/components/app/selected-account/index.js b/ui/components/app/selected-account/index.js similarity index 100% rename from ui/app/components/app/selected-account/index.js rename to ui/components/app/selected-account/index.js diff --git a/ui/app/components/app/selected-account/index.scss b/ui/components/app/selected-account/index.scss similarity index 100% rename from ui/app/components/app/selected-account/index.scss rename to ui/components/app/selected-account/index.scss diff --git a/ui/app/components/app/selected-account/selected-account-component.test.js b/ui/components/app/selected-account/selected-account-component.test.js similarity index 100% rename from ui/app/components/app/selected-account/selected-account-component.test.js rename to ui/components/app/selected-account/selected-account-component.test.js diff --git a/ui/app/components/app/selected-account/selected-account.component.js b/ui/components/app/selected-account/selected-account.component.js similarity index 100% rename from ui/app/components/app/selected-account/selected-account.component.js rename to ui/components/app/selected-account/selected-account.component.js diff --git a/ui/app/components/app/selected-account/selected-account.container.js b/ui/components/app/selected-account/selected-account.container.js similarity index 100% rename from ui/app/components/app/selected-account/selected-account.container.js rename to ui/components/app/selected-account/selected-account.container.js diff --git a/ui/app/components/app/sidebars/index.js b/ui/components/app/sidebars/index.js similarity index 100% rename from ui/app/components/app/sidebars/index.js rename to ui/components/app/sidebars/index.js diff --git a/ui/app/components/app/sidebars/index.scss b/ui/components/app/sidebars/index.scss similarity index 100% rename from ui/app/components/app/sidebars/index.scss rename to ui/components/app/sidebars/index.scss diff --git a/ui/app/components/app/sidebars/sidebar-content.scss b/ui/components/app/sidebars/sidebar-content.scss similarity index 100% rename from ui/app/components/app/sidebars/sidebar-content.scss rename to ui/components/app/sidebars/sidebar-content.scss diff --git a/ui/app/components/app/sidebars/sidebar.component.js b/ui/components/app/sidebars/sidebar.component.js similarity index 100% rename from ui/app/components/app/sidebars/sidebar.component.js rename to ui/components/app/sidebars/sidebar.component.js diff --git a/ui/app/components/app/sidebars/sidebar.component.test.js b/ui/components/app/sidebars/sidebar.component.test.js similarity index 100% rename from ui/app/components/app/sidebars/sidebar.component.test.js rename to ui/components/app/sidebars/sidebar.component.test.js diff --git a/ui/app/components/app/signature-request-original/index.js b/ui/components/app/signature-request-original/index.js similarity index 100% rename from ui/app/components/app/signature-request-original/index.js rename to ui/components/app/signature-request-original/index.js diff --git a/ui/app/components/app/signature-request-original/index.scss b/ui/components/app/signature-request-original/index.scss similarity index 100% rename from ui/app/components/app/signature-request-original/index.scss rename to ui/components/app/signature-request-original/index.scss diff --git a/ui/app/components/app/signature-request-original/signature-request-original.component.js b/ui/components/app/signature-request-original/signature-request-original.component.js similarity index 98% rename from ui/app/components/app/signature-request-original/signature-request-original.component.js rename to ui/components/app/signature-request-original/signature-request-original.component.js index ae62fcad9..07ef225cc 100644 --- a/ui/app/components/app/signature-request-original/signature-request-original.component.js +++ b/ui/components/app/signature-request-original/signature-request-original.component.js @@ -7,8 +7,8 @@ import { ObjectInspector } from 'react-inspector'; import { ENVIRONMENT_TYPE_NOTIFICATION, MESSAGE_TYPE, -} from '../../../../../shared/constants/app'; -import { getEnvironmentType } from '../../../../../app/scripts/lib/util'; +} from '../../../../shared/constants/app'; +import { getEnvironmentType } from '../../../../app/scripts/lib/util'; import Identicon from '../../ui/identicon'; import AccountListItem from '../account-list-item'; import { conversionUtil } from '../../../helpers/utils/conversion-util'; diff --git a/ui/app/components/app/signature-request-original/signature-request-original.container.js b/ui/components/app/signature-request-original/signature-request-original.container.js similarity index 96% rename from ui/app/components/app/signature-request-original/signature-request-original.container.js rename to ui/components/app/signature-request-original/signature-request-original.container.js index c32e30d66..f6181cc5b 100644 --- a/ui/app/components/app/signature-request-original/signature-request-original.container.js +++ b/ui/components/app/signature-request-original/signature-request-original.container.js @@ -2,7 +2,7 @@ import { connect } from 'react-redux'; import { compose } from 'redux'; import { withRouter } from 'react-router-dom'; -import { MESSAGE_TYPE } from '../../../../../shared/constants/app'; +import { MESSAGE_TYPE } from '../../../../shared/constants/app'; import { goHome } from '../../../store/actions'; import { accountsWithSendEtherInfoSelector, diff --git a/ui/app/components/app/signature-request/index.js b/ui/components/app/signature-request/index.js similarity index 100% rename from ui/app/components/app/signature-request/index.js rename to ui/components/app/signature-request/index.js diff --git a/ui/app/components/app/signature-request/index.scss b/ui/components/app/signature-request/index.scss similarity index 100% rename from ui/app/components/app/signature-request/index.scss rename to ui/components/app/signature-request/index.scss diff --git a/ui/app/components/app/signature-request/signature-request-footer/index.js b/ui/components/app/signature-request/signature-request-footer/index.js similarity index 100% rename from ui/app/components/app/signature-request/signature-request-footer/index.js rename to ui/components/app/signature-request/signature-request-footer/index.js diff --git a/ui/app/components/app/signature-request/signature-request-footer/index.scss b/ui/components/app/signature-request/signature-request-footer/index.scss similarity index 100% rename from ui/app/components/app/signature-request/signature-request-footer/index.scss rename to ui/components/app/signature-request/signature-request-footer/index.scss diff --git a/ui/app/components/app/signature-request/signature-request-footer/signature-request-footer.component.js b/ui/components/app/signature-request/signature-request-footer/signature-request-footer.component.js similarity index 100% rename from ui/app/components/app/signature-request/signature-request-footer/signature-request-footer.component.js rename to ui/components/app/signature-request/signature-request-footer/signature-request-footer.component.js diff --git a/ui/app/components/app/signature-request/signature-request-header/index.js b/ui/components/app/signature-request/signature-request-header/index.js similarity index 100% rename from ui/app/components/app/signature-request/signature-request-header/index.js rename to ui/components/app/signature-request/signature-request-header/index.js diff --git a/ui/app/components/app/signature-request/signature-request-header/index.scss b/ui/components/app/signature-request/signature-request-header/index.scss similarity index 100% rename from ui/app/components/app/signature-request/signature-request-header/index.scss rename to ui/components/app/signature-request/signature-request-header/index.scss diff --git a/ui/app/components/app/signature-request/signature-request-header/signature-request-header.component.js b/ui/components/app/signature-request/signature-request-header/signature-request-header.component.js similarity index 100% rename from ui/app/components/app/signature-request/signature-request-header/signature-request-header.component.js rename to ui/components/app/signature-request/signature-request-header/signature-request-header.component.js diff --git a/ui/app/components/app/signature-request/signature-request-message/index.js b/ui/components/app/signature-request/signature-request-message/index.js similarity index 100% rename from ui/app/components/app/signature-request/signature-request-message/index.js rename to ui/components/app/signature-request/signature-request-message/index.js diff --git a/ui/app/components/app/signature-request/signature-request-message/index.scss b/ui/components/app/signature-request/signature-request-message/index.scss similarity index 100% rename from ui/app/components/app/signature-request/signature-request-message/index.scss rename to ui/components/app/signature-request/signature-request-message/index.scss diff --git a/ui/app/components/app/signature-request/signature-request-message/signature-request-message.component.js b/ui/components/app/signature-request/signature-request-message/signature-request-message.component.js similarity index 100% rename from ui/app/components/app/signature-request/signature-request-message/signature-request-message.component.js rename to ui/components/app/signature-request/signature-request-message/signature-request-message.component.js diff --git a/ui/app/components/app/signature-request/signature-request.component.js b/ui/components/app/signature-request/signature-request.component.js similarity index 77% rename from ui/app/components/app/signature-request/signature-request.component.js rename to ui/components/app/signature-request/signature-request.component.js index 9515ac02a..37eefcfeb 100644 --- a/ui/app/components/app/signature-request/signature-request.component.js +++ b/ui/components/app/signature-request/signature-request.component.js @@ -1,6 +1,6 @@ import React, { PureComponent } from 'react'; import PropTypes from 'prop-types'; -import { getEnvironmentType } from '../../../../../app/scripts/lib/util'; +import { getEnvironmentType } from '../../../../app/scripts/lib/util'; import Identicon from '../../ui/identicon'; import Header from './signature-request-header'; import Footer from './signature-request-footer'; @@ -27,23 +27,25 @@ export default class SignatureRequest extends PureComponent { }; componentDidMount() { - const { clearConfirmTransaction, cancel } = this.props; - const { metricsEvent } = this.context; if (getEnvironmentType() === ENVIRONMENT_TYPE_NOTIFICATION) { - window.addEventListener('beforeunload', (event) => { - metricsEvent({ - eventOpts: { - category: 'Transactions', - action: 'Sign Request', - name: 'Cancel Sig Request Via Notification Close', - }, - }); - clearConfirmTransaction(); - cancel(event); - }); + window.addEventListener('beforeunload', this._beforeUnload); } } + _beforeUnload = (event) => { + const { clearConfirmTransaction, cancel } = this.props; + const { metricsEvent } = this.context; + metricsEvent({ + eventOpts: { + category: 'Transactions', + action: 'Sign Request', + name: 'Cancel Sig Request Via Notification Close', + }, + }); + clearConfirmTransaction(); + cancel(event); + }; + formatWallet(wallet) { return `${wallet.slice(0, 8)}...${wallet.slice( wallet.length - 8, @@ -63,6 +65,16 @@ export default class SignatureRequest extends PureComponent { const { address: fromAddress } = fromAccount; const { message, domain = {} } = JSON.parse(data); + const onSign = (event) => { + window.removeEventListener('beforeunload', this._beforeUnload); + sign(event); + }; + + const onCancel = (event) => { + window.removeEventListener('beforeunload', this._beforeUnload); + cancel(event); + }; + return (
@@ -86,7 +98,7 @@ export default class SignatureRequest extends PureComponent {
-