From b667fde2e344e96d7b14fb97a09089325403adaa Mon Sep 17 00:00:00 2001 From: MetaMask Bot Date: Fri, 26 May 2023 20:01:59 +0000 Subject: [PATCH 001/160] Version v10.32.0 --- CHANGELOG.md | 115 ++++++++++++++++++++++++++++++++++++++++++++++++++- package.json | 2 +- 2 files changed, 115 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 034155a79..f80b97e57 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,118 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [10.32.0] +### Uncategorized +- Master sync follow v10.31.0 ([#19309](https://github.com/MetaMask/metamask-extension/pull/19309)) +- Merge remote-tracking branch 'origin/develop' into master-sync +- NetworkController: Simplify event types ([#19252](https://github.com/MetaMask/metamask-extension/pull/19252)) +- Reset all Jest mocks in NetworkController tests ([#19295](https://github.com/MetaMask/metamask-extension/pull/19295)) +- feature(17901): disable hardware wallet test with trezor in mv3 ([#19287](https://github.com/MetaMask/metamask-extension/pull/19287)) +- Part of #18714: Replacing deprecated constants in `Icon` folder ([#19250](https://github.com/MetaMask/metamask-extension/pull/19250)) +- Refactor NC initializeProvider tests ([#19253](https://github.com/MetaMask/metamask-extension/pull/19253)) +- Refactor tests for refreshNetwork behavior ([#19238](https://github.com/MetaMask/metamask-extension/pull/19238)) +- Fixed Text Docs not rendering issue in Storybook ([#19248](https://github.com/MetaMask/metamask-extension/pull/19248)) +- added tooltip ([#19269](https://github.com/MetaMask/metamask-extension/pull/19269)) +- fix cancel reason event for signatures ([#19286](https://github.com/MetaMask/metamask-extension/pull/19286)) +- feature(17901): fix test/e2e/tests/add-account.spec.js ([#19280](https://github.com/MetaMask/metamask-extension/pull/19280)) +- Revert "limit connections (#18355)" ([#18355](https://github.com/MetaMask/metamask-extension/pull/18355)) +- Fix #19139 - Allow user to switch network when loading networking fails ([#19175](https://github.com/MetaMask/metamask-extension/pull/19175)) +- [MMI] Add code fences in signature-request ([#18770](https://github.com/MetaMask/metamask-extension/pull/18770)) +- [MMI] Added code fencing in transaction list ([#18071](https://github.com/MetaMask/metamask-extension/pull/18071)) +- feat(accounts): import account without password ([#19132](https://github.com/MetaMask/metamask-extension/pull/19132)) +- TEXT_ALIGN to TextAlign in UI folder ([#19235](https://github.com/MetaMask/metamask-extension/pull/19235)) +- UX: Multichain: Only show the account picker with a selected identity ([#19236](https://github.com/MetaMask/metamask-extension/pull/19236)) +- Multichain: UX: Snaps: Add Notifications to Global Menu ([#19204](https://github.com/MetaMask/metamask-extension/pull/19204)) +- Feat/18444/text align update app folder ([#19216](https://github.com/MetaMask/metamask-extension/pull/19216)) +- UX Multichain: updated ui for settings page ([#19167](https://github.com/MetaMask/metamask-extension/pull/19167)) +- update TEXT_ALIGN to TextAlign in component-library folder ([#19237](https://github.com/MetaMask/metamask-extension/pull/19237)) +- Moving `RESIZE` constant to textarea component folder ([#19240](https://github.com/MetaMask/metamask-extension/pull/19240)) +- UX Multichain: updated border top for activity list ([#19176](https://github.com/MetaMask/metamask-extension/pull/19176)) +- [MMI] Added code fences to the following controllers: app-state, metametrics, preferences ([#17894](https://github.com/MetaMask/metamask-extension/pull/17894)) +- [FLASK] Fix classnames for snaps components ([#19234](https://github.com/MetaMask/metamask-extension/pull/19234)) +- [MMI] Added code fencing in app menu bar ([#18069](https://github.com/MetaMask/metamask-extension/pull/18069)) +- [FLASK] Create E2E test for snaps network_access endowment ([#19213](https://github.com/MetaMask/metamask-extension/pull/19213)) +- [FLASK] Fix an issue with submitting an empty Snaps UI prompt ([#19227](https://github.com/MetaMask/metamask-extension/pull/19227)) +- Adding Modal and updating ModalContent component ([#19020](https://github.com/MetaMask/metamask-extension/pull/19020)) +- Add DS Popover component ([#18805](https://github.com/MetaMask/metamask-extension/pull/18805)) +- Deprecated Icon and ButtonIcon clean up ([#19220](https://github.com/MetaMask/metamask-extension/pull/19220)) +- Bump dependencies of network-controller ([#19172](https://github.com/MetaMask/metamask-extension/pull/19172)) +- fix: support alerts confirmation page without pending transactions ([#18983](https://github.com/MetaMask/metamask-extension/pull/18983)) +- feature(16691): mv3 e2e test for phishing warning page when sw restarts ([#19196](https://github.com/MetaMask/metamask-extension/pull/19196)) +- [Bug]: Updating and Adding ConfirmPageContainer Tests ([#19149](https://github.com/MetaMask/metamask-extension/pull/19149)) +- Master sync (following v10.30.2, v10.30.3 and v10.30.4) ([#19199](https://github.com/MetaMask/metamask-extension/pull/19199)) +- Fix contract interaction recipient and contract address ([#18855](https://github.com/MetaMask/metamask-extension/pull/18855)) +- [FLASK] Create E2E test for ethereum_provider endowment ([#19191](https://github.com/MetaMask/metamask-extension/pull/19191)) +- Cleanup PR: Renaming getNetworkName and moving that to utils file ([#19160](https://github.com/MetaMask/metamask-extension/pull/19160)) +- [Bug]: Enabling the display of token total in SetApprovalForAll ([#18863](https://github.com/MetaMask/metamask-extension/pull/18863)) +- Disable Previous Button on First Page ([#17610](https://github.com/MetaMask/metamask-extension/pull/17610)) +- Merge remote-tracking branch 'origin/develop' into master-sync +- disable pr labeler ([#19185](https://github.com/MetaMask/metamask-extension/pull/19185)) +- devDeps: storybook@7 ([#19092](https://github.com/MetaMask/metamask-extension/pull/19092)) +- Adding design-system enums and deprecating consts ([#19133](https://github.com/MetaMask/metamask-extension/pull/19133)) +- UX: Multichain: Don't filter out custom mainnet RPCs ([#19150](https://github.com/MetaMask/metamask-extension/pull/19150)) +- UX: Multichain: Fix prop error from invalid Box prop ([#19188](https://github.com/MetaMask/metamask-extension/pull/19188)) +- UX: Multichain: Ensure percentage of account name always shown ([#18976](https://github.com/MetaMask/metamask-extension/pull/18976)) +- test: sanitize url hostname check ([#19053](https://github.com/MetaMask/metamask-extension/pull/19053)) +- [MMI] Added code fences for account menu ([#17965](https://github.com/MetaMask/metamask-extension/pull/17965)) +- [MMI] Add MMI modals with their styles to the app/modals ([#18621](https://github.com/MetaMask/metamask-extension/pull/18621)) +- replaces mmi for institutional ([#19182](https://github.com/MetaMask/metamask-extension/pull/19182)) +- UX Multichain: updated assets to tokens in home page ([#19144](https://github.com/MetaMask/metamask-extension/pull/19144)) +- Fixes clear button size TextFieldSearch ([#19153](https://github.com/MetaMask/metamask-extension/pull/19153)) +- Enable token detection for the Aurora network, fix primary token for Aurora, update a URL ([#19009](https://github.com/MetaMask/metamask-extension/pull/19009)) +- [MMI] Added note to trader code fencing ([#18051](https://github.com/MetaMask/metamask-extension/pull/18051)) +- [MMI] adds wrong network notification ([#19168](https://github.com/MetaMask/metamask-extension/pull/19168)) +- Part of #18714 and #17670:set-approval-for-all-warnings ([#19115](https://github.com/MetaMask/metamask-extension/pull/19115)) +- Fix lint error ([#19157](https://github.com/MetaMask/metamask-extension/pull/19157)) +- Part of #18714 and #17670: Changes to nfts-detection-notice.js ([#19051](https://github.com/MetaMask/metamask-extension/pull/19051)) +- Changes to gas-items-details ([#19075](https://github.com/MetaMask/metamask-extension/pull/19075)) +- Part of ##18714 Replace deprecated design system typography consts with enums in: confirm-page-container.component.js ([#19065](https://github.com/MetaMask/metamask-extension/pull/19065)) +- [FLASK] `snaps-monorepo@0.33.1-flask.1` ([#18913](https://github.com/MetaMask/metamask-extension/pull/18913)) +- Part of #18714 Replace deprecated design system typography consts with enums in: 'srp-input' ([#19040](https://github.com/MetaMask/metamask-extension/pull/19040)) +- Refactor `lookupNetwork` unit tests ([#19070](https://github.com/MetaMask/metamask-extension/pull/19070)) +- UX: Multichain: Improve networks selector ([#19083](https://github.com/MetaMask/metamask-extension/pull/19083)) +- [MMI] Started adding styles imports with code fences ([#17943](https://github.com/MetaMask/metamask-extension/pull/17943)) +- Skip injection on snaps iframe ([#19096](https://github.com/MetaMask/metamask-extension/pull/19096)) +- Update useDraftTransactionGasValues ([#19105](https://github.com/MetaMask/metamask-extension/pull/19105)) +- [FLASK] Create E2E test for snap_GetEntropy ([#18998](https://github.com/MetaMask/metamask-extension/pull/18998)) +- fix: use approvals selector fn in permission selectors ([#19095](https://github.com/MetaMask/metamask-extension/pull/19095)) +- Add `getCurrentChainId` argument to `SignatureController` ([#19078](https://github.com/MetaMask/metamask-extension/pull/19078)) +- feat: Refactor Transaction Confirmation selector ([#18796](https://github.com/MetaMask/metamask-extension/pull/18796)) +- Fix script to build migrations by having it use the `.ts` template ([#18878](https://github.com/MetaMask/metamask-extension/pull/18878)) +- Only recognize "blocked" status for built-in networks ([#19069](https://github.com/MetaMask/metamask-extension/pull/19069)) +- removed mmi fencing from copy icon in header ([#19087](https://github.com/MetaMask/metamask-extension/pull/19087)) +- Re-enable tests for subscription-based RPC methods ([#18994](https://github.com/MetaMask/metamask-extension/pull/18994)) +- builds.yml: add env var EDITOR_URL ([#19074](https://github.com/MetaMask/metamask-extension/pull/19074)) +- Adopt ApprovalType from core ([#18567](https://github.com/MetaMask/metamask-extension/pull/18567)) +- Part of #17670 & #18714: Replace Typography with Text component in token-details-page.js ([#18741](https://github.com/MetaMask/metamask-extension/pull/18741)) +- Changes to edit-gas-display.component.js ([#19037](https://github.com/MetaMask/metamask-extension/pull/19037)) +- Adding ModalFocus component ([#18979](https://github.com/MetaMask/metamask-extension/pull/18979)) +- Some style, accessibility and sematic html updates to modal sub components ([#19034](https://github.com/MetaMask/metamask-extension/pull/19034)) +- Made builds.yml variable errors more helpful ([#19066](https://github.com/MetaMask/metamask-extension/pull/19066)) +- remove pre commit hook for branch names ([#19077](https://github.com/MetaMask/metamask-extension/pull/19077)) +- Set network status to "unknown" when ID is invalid ([#19068](https://github.com/MetaMask/metamask-extension/pull/19068)) +- Replaced all fa-icon-circle with INFO icon ([#17539](https://github.com/MetaMask/metamask-extension/pull/17539)) +- UX Multichain: updated margin top for assets tab ([#19071](https://github.com/MetaMask/metamask-extension/pull/19071)) +- Fix popover scroll button WhatsNewPopup hiding ([#19017](https://github.com/MetaMask/metamask-extension/pull/19017)) +- Fix #19060 - Ensure there's multiple accounts before focusing search ([#19062](https://github.com/MetaMask/metamask-extension/pull/19062)) +- Fix #19059 - Show network picker when locked ([#19063](https://github.com/MetaMask/metamask-extension/pull/19063)) +- UX: Multichain: Update deprecated variables ([#19058](https://github.com/MetaMask/metamask-extension/pull/19058)) +- UX: Multichain: Disable network and account picker when necessary ([#18909](https://github.com/MetaMask/metamask-extension/pull/18909)) +- Changes to custody-labels.js ([#19038](https://github.com/MetaMask/metamask-extension/pull/19038)) +- devDeps: react-devtools@4.16.0->4.27.6 ([#18869](https://github.com/MetaMask/metamask-extension/pull/18869)) +- UX: Multichain: Ensure network picker renders properly for long and short names ([#18974](https://github.com/MetaMask/metamask-extension/pull/18974)) +- Fix #18916 - UX: Multichain: Network picker design updates ([#18962](https://github.com/MetaMask/metamask-extension/pull/18962)) +- Part of #17670 & #18714: Replace Typography with Text component: nft-details.js ([#18771](https://github.com/MetaMask/metamask-extension/pull/18771)) +- [MMI] adds mmi logic in home view ([#18960](https://github.com/MetaMask/metamask-extension/pull/18960)) +- UX: Multichain: Account Details Fixes ([#18999](https://github.com/MetaMask/metamask-extension/pull/18999)) +- Working on some lint issues in 2 files. ([#18633](https://github.com/MetaMask/metamask-extension/pull/18633)) +- devDeps: storybook-dark-mode@1.1.2->2.1.1 ([#18866](https://github.com/MetaMask/metamask-extension/pull/18866)) +- UX Multichain: Added extra margin for native token ([#18988](https://github.com/MetaMask/metamask-extension/pull/18988)) +- Changes to confirm-data and confirm-hexdata ([#19041](https://github.com/MetaMask/metamask-extension/pull/19041)) +- Update slider.component.js ([#19035](https://github.com/MetaMask/metamask-extension/pull/19035)) +- Label PRs based on the labels of the associated issue ([#17603](https://github.com/MetaMask/metamask-extension/pull/17603)) +- Add reveal to export private key ([#18170](https://github.com/MetaMask/metamask-extension/pull/18170)) + ## [10.31.0] ### Added - Add extra friction to enable eth_sign in advanced settings ([#18848](https://github.com/MetaMask/metamask-extension/pull/18848)) @@ -3757,7 +3869,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Uncategorized - Added the ability to restore accounts from seed words. -[Unreleased]: https://github.com/MetaMask/metamask-extension/compare/v10.31.0...HEAD +[Unreleased]: https://github.com/MetaMask/metamask-extension/compare/v10.32.0...HEAD +[10.32.0]: https://github.com/MetaMask/metamask-extension/compare/v10.31.0...v10.32.0 [10.31.0]: https://github.com/MetaMask/metamask-extension/compare/v10.30.4...v10.31.0 [10.30.4]: https://github.com/MetaMask/metamask-extension/compare/v10.30.3...v10.30.4 [10.30.3]: https://github.com/MetaMask/metamask-extension/compare/v10.30.2...v10.30.3 diff --git a/package.json b/package.json index 735079d22..fcae5a660 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "metamask-crx", - "version": "10.31.0", + "version": "10.32.0", "private": true, "repository": { "type": "git", From edf2cc41cb5f7f9c82285cef3fc70be36e18bdb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ant=C3=B3nio=20Regadas?= Date: Mon, 29 May 2023 16:38:28 +0100 Subject: [PATCH 002/160] [MMI] adds mmi code fences to mm controller (#18279) * adds code fencing * MMI adds mmi-controller * MMI prettier * chore: create keyring builder for CustodyKeyrings * updates code fence to build-mmi * adds dependencies * fix import and prettier * lint * clean up * clean up * removes old methods and adds new * comment for now * adds two missing methods * runs yarn dedupe * adds missing import * bump target values * lavamoat policy update * bump values in coverage targets * prettier import order * coverage report update * clean up * yarn update * yarn dedupe * ran lavamoat:auto * adds zlib entry to storybook/main.js * adds browserify-zlib * clean up * clean up * prettier * prettier * eslint fix * fix paths * fix prettier * fix file name for mocha * adds to config * rename * adds file to configs * test lavamoat clean up * run dedupe * sets value in storybook main.js as false * runs lavamoat auto * updates mmi packages to lighter versions * updates mmi packages * lavamoat auto * adds finalized tx status * lavamoat auto * yarn dedupe * clean up * moving stuff into mmi controller * clean up * updates tresholds * yarn lock review * updates the mmi controller --------- Co-authored-by: Shane Terence Odlum --- .eslintrc.js | 2 + .mocharc.js | 1 + app/scripts/controllers/mmi-controller.js | 612 ++++++++++++++++++ .../controllers/mmi-controller.test.js | 129 ++++ app/scripts/metamask-controller.js | 203 +++++- app/scripts/mmi-keyring-builder-factory.js | 17 + coverage-targets.js | 8 +- jest.config.js | 1 + package.json | 5 + shared/constants/transaction.ts | 12 + yarn.lock | 45 +- 11 files changed, 1024 insertions(+), 11 deletions(-) create mode 100644 app/scripts/controllers/mmi-controller.js create mode 100644 app/scripts/controllers/mmi-controller.test.js create mode 100644 app/scripts/mmi-keyring-builder-factory.js diff --git a/.eslintrc.js b/.eslintrc.js index 89578fa19..1236df167 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -237,6 +237,7 @@ module.exports = { ], excludedFiles: [ 'app/scripts/controllers/app-state.test.js', + 'app/scripts/controllers/mmi-controller.test.js', 'app/scripts/controllers/network/**/*.test.js', 'app/scripts/controllers/permissions/**/*.test.js', 'app/scripts/lib/**/*.test.js', @@ -265,6 +266,7 @@ module.exports = { files: [ '**/__snapshots__/*.snap', 'app/scripts/controllers/app-state.test.js', + 'app/scripts/controllers/mmi-controller.test.js', 'app/scripts/controllers/network/**/*.test.js', 'app/scripts/controllers/network/**/*.test.ts', 'app/scripts/controllers/network/provider-api-tests/*.ts', diff --git a/.mocharc.js b/.mocharc.js index a34a05fc8..a8843b0e1 100644 --- a/.mocharc.js +++ b/.mocharc.js @@ -8,6 +8,7 @@ module.exports = { './app/scripts/controllers/app-state.test.js', './app/scripts/controllers/network/**/*.test.js', './app/scripts/controllers/permissions/**/*.test.js', + './app/scripts/controllers/mmi-controller.test.js', './app/scripts/constants/error-utils.test.js', ], recursive: true, diff --git a/app/scripts/controllers/mmi-controller.js b/app/scripts/controllers/mmi-controller.js new file mode 100644 index 000000000..35e56c338 --- /dev/null +++ b/app/scripts/controllers/mmi-controller.js @@ -0,0 +1,612 @@ +import EventEmitter from 'events'; +import log from 'loglevel'; +import { captureException } from '@sentry/browser'; +import { + PersonalMessageManager, + TypedMessageManager, +} from '@metamask/message-manager'; +import { CUSTODIAN_TYPES } from '@metamask-institutional/custody-keyring'; +import { + updateCustodianTransactions, + custodianEventHandlerFactory, +} from '@metamask-institutional/extension'; +import { + REFRESH_TOKEN_CHANGE_EVENT, + INTERACTIVE_REPLACEMENT_TOKEN_CHANGE_EVENT, +} from '@metamask-institutional/sdk'; +import { handleMmiPortfolio } from '@metamask-institutional/portfolio-dashboard'; +import { toChecksumHexAddress } from '../../../shared/modules/hexstring-utils'; +import { CHAIN_IDS } from '../../../shared/constants/network'; +import { + BUILD_QUOTE_ROUTE, + CONNECT_HARDWARE_ROUTE, +} from '../../../ui/helpers/constants/routes'; +import { getPermissionBackgroundApiMethods } from './permissions'; + +export default class MMIController extends EventEmitter { + constructor(opts) { + super(); + + this.opts = opts; + this.mmiConfigurationController = opts.mmiConfigurationController; + this.keyringController = opts.keyringController; + this.txController = opts.txController; + this.securityProviderRequest = opts.securityProviderRequest; + this.preferencesController = opts.preferencesController; + this.appStateController = opts.appStateController; + this.transactionUpdateController = opts.transactionUpdateController; + this.custodyController = opts.custodyController; + this.institutionalFeaturesController = opts.institutionalFeaturesController; + this.getState = opts.getState; + this.getPendingNonce = opts.getPendingNonce; + this.accountTracker = opts.accountTracker; + this.metaMetricsController = opts.metaMetricsController; + this.networkController = opts.networkController; + this.permissionController = opts.permissionController; + this.platform = opts.platform; + this.extension = opts.extension; + + this.personalMessageManager = new PersonalMessageManager( + undefined, + undefined, + this.securityProviderRequest, + ); + this.typedMessageManager = new TypedMessageManager( + undefined, + undefined, + this.securityProviderRequest, + ); + + // Prepare event listener after transactionUpdateController gets initiated + this.transactionUpdateController.prepareEventListener( + this.custodianEventHandlerFactory.bind(this), + ); + + // Get configuration from MMIConfig controller + if (!process.env.IN_TEST) { + this.mmiConfigurationController.storeConfiguration().then(() => { + // This must happen after the configuration is fetched + // Otherwise websockets will always be disabled in the first run + + this.transactionUpdateController.subscribeToEvents(); + }); + } + } // End of constructor + + async persistKeyringsAfterRefreshTokenChange() { + this.keyringController.persistAllKeyrings(); + } + + async trackTransactionEventFromCustodianEvent(txMeta, event) { + this.txController._trackTransactionMetricsEvent(txMeta, event); + } + + async addKeyringIfNotExists(type) { + let keyring = await this.keyringController.getKeyringsByType(type)[0]; + if (!keyring) { + keyring = await this.keyringController.addNewKeyring(type); + } + return keyring; + } + + custodianEventHandlerFactory() { + return custodianEventHandlerFactory({ + log, + getState: () => this.getState(), + getPendingNonce: (address) => this.getPendingNonce(address), + setTxHash: (txId, txHash) => this.txController.setTxHash(txId, txHash), + typedMessageManager: this.typedMessageManager, + personalMessageManager: this.personalMessageManager, + txStateManager: this.txController.txStateManager, + custodyController: this.custodyController, + trackTransactionEvent: + this.trackTransactionEventFromCustodianEvent.bind(this), + }); + } + + async storeCustodianSupportedChains(address) { + const custodyType = this.custodyController.getCustodyTypeByAddress( + toChecksumHexAddress(address), + ); + const keyring = await this.addKeyringIfNotExists(custodyType); + + const supportedChains = await keyring.getSupportedChains(address); + + if (supportedChains?.status === 401) { + return; + } + + const accountDetails = this.custodyController.getAccountDetails(address); + + await this.custodyController.storeSupportedChainsForAddress( + toChecksumHexAddress(address), + supportedChains, + accountDetails.custodianName, + ); + } + + async onSubmitPassword() { + // Create a keyring for each custodian type + let addresses = []; + const custodyTypes = this.custodyController.getAllCustodyTypes(); + for (const type of custodyTypes) { + try { + const keyring = await this.addKeyringIfNotExists(type); + + keyring.on(REFRESH_TOKEN_CHANGE_EVENT, () => { + log.info(`Refresh token change event for ${type}`); + this.persistKeyringsAfterRefreshTokenChange(); + }); + + // Trigger this event, listen to sdk, sdk change the state and then Ui is listening for the state changed + keyring.on(INTERACTIVE_REPLACEMENT_TOKEN_CHANGE_EVENT, (payload) => { + log.info(`Interactive refresh token change event for ${payload}`); + this.appStateController.showInteractiveReplacementTokenBanner( + payload, + ); + }); + + // store the supported chains for this custodian type + const accounts = await keyring.getAccounts(); + addresses = addresses.concat(...accounts); + for (const address of accounts) { + try { + await this.storeCustodianSupportedChains(address); + } catch (error) { + captureException(error); + log.error('Error while unlocking extension.', error); + } + } + + const txList = this.txController.txStateManager.getTransactions( + {}, + [], + false, + ); // Includes all transactions, but we are looping through keyrings. Currently filtering is done in updateCustodianTransactions :-/ + + try { + updateCustodianTransactions({ + keyring, + type, + txList, + getPendingNonce: this.getPendingNonce.bind(this), + txStateManager: this.txController.txStateManager, + setTxHash: this.txController.setTxHash.bind(this.txController), + custodyController: this.custodyController, + transactionUpdateController: this.transactionUpdateController, + }); + } catch (error) { + log.error('Error doing offline transaction updates', error); + captureException(error); + } + } catch (error) { + log.error( + `Error while unlocking extension with custody type ${type}`, + error, + ); + captureException(error); + } + } + + try { + await this.mmiConfigurationController.storeConfiguration(); + } catch (error) { + log.error('Error while unlocking extension.', error); + } + + try { + await this.transactionUpdateController.subscribeToEvents(); + } catch (error) { + log.error('Error while unlocking extension.', error); + } + + const mmiConfigData = + await this.mmiConfigurationController.store.getState(); + + if ( + mmiConfigData && + mmiConfigData.mmiConfiguration.features?.websocketApi + ) { + this.transactionUpdateController.getCustomerProofForAddresses(addresses); + } + + try { + if (this.institutionalFeaturesController.getComplianceProjectId()) { + this.institutionalFeaturesController.startPolling(); + } + } catch (e) { + log.error('Failed to start Compliance polling'); + log.error(e); + } + } + + async connectCustodyAddresses(custodianType, custodianName, accounts) { + if (!custodianType) { + throw new Error('No custodian'); + } + + const custodian = CUSTODIAN_TYPES[custodianType.toUpperCase()]; + if (!custodian) { + throw new Error('No such custodian'); + } + + const newAccounts = Object.keys(accounts); + + // Check if any address is already added + const identities = Object.keys( + this.preferencesController.store.getState().identities, + ); + if (newAccounts.some((address) => identities.indexOf(address) !== -1)) { + throw new Error('Cannot import duplicate accounts'); + } + + const keyring = await this.addKeyringIfNotExists( + custodian.keyringClass.type, + ); + + keyring.on(REFRESH_TOKEN_CHANGE_EVENT, () => { + log.info(`Refresh token change event for ${keyring.type}`); + this.persistKeyringsAfterRefreshTokenChange(); + }); + + // Trigger this event, listen to sdk, sdk change the state and then Ui is listening for the state changed + keyring.on(INTERACTIVE_REPLACEMENT_TOKEN_CHANGE_EVENT, (payload) => { + log.info(`Interactive refresh token change event for ${payload}`); + this.appStateController.showInteractiveReplacementTokenBanner(payload); + }); + + if (!keyring) { + throw new Error('Unable to get keyring'); + } + const oldAccounts = await this.keyringController.getAccounts(); + + await keyring.setSelectedAddresses( + newAccounts.map((item) => ({ + address: toChecksumHexAddress(item), + name: accounts[item].name, + custodianDetails: accounts[item].custodianDetails, + labels: accounts[item].labels, + token: accounts[item].token, + apiUrl: accounts[item].apiUrl, + custodyType: custodian.keyringClass.type, + chainId: accounts[item].chainId, + })), + ); + this.custodyController.setAccountDetails( + newAccounts.map((item) => ({ + address: toChecksumHexAddress(item), + name: accounts[item].name, + custodianDetails: accounts[item].custodianDetails, + labels: accounts[item].labels, + apiUrl: accounts[item].apiUrl, + custodyType: custodian.keyringClass.type, + custodianName, + chainId: accounts[item].chainId, + })), + ); + + newAccounts.forEach( + async () => await this.keyringController.addNewAccount(keyring), + ); + + const allAccounts = await this.keyringController.getAccounts(); + + this.preferencesController.setAddresses(allAccounts); + const accountsToTrack = [ + ...new Set(oldAccounts.concat(allAccounts.map((a) => a.toLowerCase()))), + ]; + + allAccounts.forEach((address) => { + if (!oldAccounts.includes(address.toLowerCase())) { + const label = newAccounts + .filter((item) => item.toLowerCase() === address) + .map((item) => accounts[item].name)[0]; + this.preferencesController.setAccountLabel(address, label); + } + }); + + this.accountTracker.syncWithAddresses(accountsToTrack); + + for (const address of newAccounts) { + try { + await this.storeCustodianSupportedChains(address); + } catch (error) { + captureException(error); + } + } + + // FIXME: status maps are not a thing anymore + this.custodyController.storeCustodyStatusMap( + custodian.name, + keyring.getStatusMap(), + ); + + // MMI - get a WS stream for this account + const mmiConfigData = + await this.mmiConfigurationController.store.getState(); + + if ( + mmiConfigData && + mmiConfigData.mmiConfiguration.features?.websocketApi + ) { + this.transactionUpdateController.getCustomerProofForAddresses( + newAccounts, + ); + } + + return newAccounts; + } + + async getCustodianAccounts( + token, + apiUrl, + custodianType, + getNonImportedAccounts, + ) { + let currentCustodyType; + if (!custodianType) { + const address = this.preferencesController.getSelectedAddress(); + currentCustodyType = this.custodyController.getCustodyTypeByAddress( + toChecksumHexAddress(address), + ); + } + + let keyring; + + if (custodianType) { + const custodian = CUSTODIAN_TYPES[custodianType.toUpperCase()]; + if (!custodian) { + throw new Error('No such custodian'); + } + + keyring = await this.addKeyringIfNotExists(custodian.keyringClass.type); + } else if (currentCustodyType) { + keyring = await this.addKeyringIfNotExists(currentCustodyType); + } else { + throw new Error('No custodian specified'); + } + + const accounts = await keyring.getCustodianAccounts( + token, + apiUrl, + null, + getNonImportedAccounts, + ); + return accounts; + } + + async getCustodianAccountsByAddress(token, apiUrl, address, custodianType) { + let keyring; + + if (custodianType) { + const custodian = CUSTODIAN_TYPES[custodianType.toUpperCase()]; + if (!custodian) { + throw new Error('No such custodian'); + } + + keyring = await this.addKeyringIfNotExists(custodian.keyringClass.type); + } else { + throw new Error('No custodian specified'); + } + + const accounts = await keyring.getCustodianAccounts(token, apiUrl, address); + return accounts; + } + + async getCustodianTransactionDeepLink(address, txId) { + const custodyType = this.custodyController.getCustodyTypeByAddress( + toChecksumHexAddress(address), + ); + const keyring = await this.addKeyringIfNotExists(custodyType); + return keyring.getTransactionDeepLink(address, txId); + } + + async getCustodianConfirmDeepLink(txId) { + const txMeta = this.txController.txStateManager.getTransaction(txId); + + const address = txMeta.txParams.from; + const custodyType = this.custodyController.getCustodyTypeByAddress( + toChecksumHexAddress(address), + ); + const keyring = await this.addKeyringIfNotExists(custodyType); + return { + deepLink: await keyring.getTransactionDeepLink( + txMeta.txParams.from, + txMeta.custodyId, + ), + custodyId: txMeta.custodyId, + }; + } + + async getCustodianSignMessageDeepLink(from, custodyTxId) { + const custodyType = this.custodyController.getCustodyTypeByAddress( + toChecksumHexAddress(from), + ); + const keyring = await this.addKeyringIfNotExists(custodyType); + return keyring.getTransactionDeepLink(from, custodyTxId); + } + + async getCustodianToken(custodianType) { + let currentCustodyType; + + const address = this.preferencesController.getSelectedAddress(); + + if (!custodianType) { + const resultCustody = this.custodyController.getCustodyTypeByAddress( + toChecksumHexAddress(address), + ); + currentCustodyType = resultCustody; + } + let keyring = await this.keyringController.getKeyringsByType( + currentCustodyType || `Custody - ${custodianType}`, + )[0]; + if (!keyring) { + keyring = await this.keyringController.addNewKeyring( + currentCustodyType || `Custody - ${custodianType}`, + ); + } + const { authDetails } = keyring.getAccountDetails(address); + return keyring ? authDetails.jwt || authDetails.refreshToken : ''; + } + + // Based on a custodian name, get all the tokens associated with that custodian + async getCustodianJWTList(custodianName) { + console.log('getCustodianJWTList', custodianName); + + const { identities } = this.preferencesController.store.getState(); + + const { mmiConfiguration } = + this.mmiConfigurationController.store.getState(); + + const addresses = Object.keys(identities); + const tokenList = []; + + const { custodians } = mmiConfiguration; + + const custodian = custodians.find((item) => item.name === custodianName); + + if (!custodian) { + return []; + } + + const keyrings = await this.keyringController.getKeyringsByType( + `Custody - ${custodian.type}`, + ); + + for (const address of addresses) { + for (const keyring of keyrings) { + // Narrow down to custodian Type + const accountDetails = keyring.getAccountDetails(address); + + if (!accountDetails) { + log.debug(`${address} does not belong to ${custodian.type} keyring`); + continue; + } + + const custodyAccountDetails = + this.custodyController.getAccountDetails(address); + + if ( + !custodyAccountDetails || + custodyAccountDetails.custodianName !== custodianName + ) { + log.debug(`${address} does not belong to ${custodianName} keyring`); + continue; + } + + const { authDetails } = accountDetails; + + let token; + if (authDetails.jwt) { + token = authDetails.jwt; + } else if (authDetails.refreshToken) { + token = authDetails.refreshToken; + } + + if (!tokenList.includes(token)) { + tokenList.push(token); + } + } + } + return tokenList; + } + + async getAllCustodianAccountsWithToken(custodyType, token) { + const keyring = await this.keyringController.getKeyringsByType( + `Custody - ${custodyType}`, + )[0]; + return keyring ? keyring.getAllAccountsWithToken(token) : []; + } + + async setCustodianNewRefreshToken({ address, newAuthDetails }) { + const custodyType = this.custodyController.getCustodyTypeByAddress( + toChecksumHexAddress(address), + ); + + const keyring = await this.addKeyringIfNotExists(custodyType); + + await keyring.replaceRefreshTokenAuthDetails(address, newAuthDetails); + } + + async handleMmiCheckIfTokenIsPresent(req) { + const { token, apiUrl } = req.params; + const custodyType = 'Custody - JSONRPC'; // Only JSONRPC is supported for now + + // This can only work if the extension is unlocked + await this.appStateController.getUnlockPromise(true); + + const keyring = await this.addKeyringIfNotExists(custodyType); + + return await this.custodyController.handleMmiCheckIfTokenIsPresent({ + token, + apiUrl, + keyring, + }); + } + + async setMmiPortfolioCookie() { + await this.appStateController.getUnlockPromise(true); + const keyringAccounts = await this.keyringController.getAccounts(); + const { identities } = this.preferencesController.store.getState(); + const { metaMetricsId } = this.metaMetricsController.store.getState(); + const getAccountDetails = (address) => + this.custodyController.getAccountDetails(address); + const extensionId = this.extension.runtime.id; + const networks = [ + ...this.preferencesController.getRpcMethodPreferences(), + { chainId: CHAIN_IDS.MAINNET }, + { chainId: CHAIN_IDS.GOERLI }, + ]; + + handleMmiPortfolio({ + keyringAccounts, + identities, + metaMetricsId, + networks, + getAccountDetails, + extensionId, + }); + } + + async setAccountAndNetwork(origin, address, chainId) { + await this.appStateController.getUnlockPromise(true); + const selectedAddress = this.preferencesController.getSelectedAddress(); + if (selectedAddress.toLowerCase() !== address.toLowerCase()) { + this.preferencesController.setSelectedAddress(address); + } + const selectedChainId = parseInt( + this.networkController.getCurrentChainId(), + 16, + ); + if (selectedChainId !== chainId && chainId === 1) { + this.networkController.setProviderType('mainnet'); + } else if (selectedChainId !== chainId) { + const network = this.preferencesController + .getFrequentRpcListDetail() + .find((item) => parseInt(item.chainId, 16) === chainId); + this.networkController.setRpcTarget( + network.rpcUrl, + network.chainId, + network.ticker, + network.nickname, + ); + } + getPermissionBackgroundApiMethods( + this.permissionController, + ).addPermittedAccount(origin, address); + + return true; + } + + async handleMmiOpenSwaps(origin, address, chainId) { + await this.setAccountAndNetwork(origin, address, chainId); + this.platform.openExtensionInBrowser(BUILD_QUOTE_ROUTE); + return true; + } + + async handleMmiOpenAddHardwareWallet() { + await this.appStateController.getUnlockPromise(true); + this.platform.openExtensionInBrowser(CONNECT_HARDWARE_ROUTE); + return true; + } +} diff --git a/app/scripts/controllers/mmi-controller.test.js b/app/scripts/controllers/mmi-controller.test.js new file mode 100644 index 000000000..f6f9cc5f7 --- /dev/null +++ b/app/scripts/controllers/mmi-controller.test.js @@ -0,0 +1,129 @@ +/* eslint-disable */ +import { KeyringController } from '@metamask/eth-keyring-controller'; +import { MmiConfigurationController } from '@metamask-institutional/custody-keyring'; +import { TransactionUpdateController } from '@metamask-institutional/transaction-update'; + +import MMIController from './mmi-controller'; +import TransactionController from './transactions'; +import PreferencesController from './preferences'; +import AppStateController from './app-state'; + +describe('MMIController', function () { + let mmiController; + + beforeEach(function () { + mmiController = new MMIController({ + mmiConfigurationController: new MmiConfigurationController(), + keyringController: new KeyringController({ + initState: {}, + }), + transactionUpdateController: new TransactionUpdateController({ + getCustodyKeyring: jest.fn(), + }), + txController: new TransactionController({ + initState: {}, + provider: { + chainId: 'fail', + nickname: '', + rpcTarget: 'https://api.myetherwallet.com/eth', + ticker: 'ETH', + type: 'rinkeby', + }, + getCurrentChainId: jest.fn(), + getNetworkId: jest.fn(), + onNetworkStateChange: jest.fn(), + }), + preferencesController: new PreferencesController({ + initState: {}, + onInfuraIsBlocked: jest.fn(), + onInfuraIsUnblocked: jest.fn(), + provider: {}, + }), + appStateController: new AppStateController({ + addUnlockListener: jest.fn(), + isUnlocked: jest.fn(() => true), + initState: {}, + onInactiveTimeout: jest.fn(), + showUnlockRequest: jest.fn(), + preferencesStore: { + subscribe: jest.fn(), + getState: jest.fn(() => ({ + preferences: { + autoLockTimeLimit: 0, + }, + })), + }, + qrHardwareStore: { + subscribe: jest.fn(), + }, + messenger: { + call: jest.fn(() => ({ + catch: jest.fn(), + })), + }, + }), + custodianEventHandlerFactory: jest.fn(), + }); + }); + + describe('mmiController constructor', function () { + it('should instantiate correctly', function () { + expect(mmiController).toBeInstanceOf(MMIController); + }); + + it('should have all required properties', function () { + expect(mmiController.opts).toBeDefined(); + expect(mmiController.mmiConfigurationController).toBeDefined(); + expect(mmiController.preferencesController).toBeDefined(); + expect(mmiController.transactionUpdateController).toBeDefined(); + }); + }); + + describe('persistKeyringsAfterRefreshTokenChange', function () { + it('should call keyringController.persistAllKeyrings', async function () { + mmiController.keyringController.persistAllKeyrings = jest.fn(); + + await mmiController.persistKeyringsAfterRefreshTokenChange(); + + expect( + mmiController.keyringController.persistAllKeyrings, + ).toHaveBeenCalled(); + }); + }); + + describe('trackTransactionEventFromCustodianEvent', function () { + it('should call txController._trackTransactionMetricsEvent', function () { + const txMeta = {}; + const event = 'event'; + mmiController.txController._trackTransactionMetricsEvent = jest.fn(); + + mmiController.trackTransactionEventFromCustodianEvent(txMeta, event); + + expect( + mmiController.txController._trackTransactionMetricsEvent, + ).toHaveBeenCalledWith(txMeta, event); + }); + }); + + describe('custodianEventHandlerFactory', function () { + it('should call custodianEventHandlerFactory', async function () { + mmiController.custodianEventHandlerFactory = jest.fn(); + + mmiController.custodianEventHandlerFactory(); + + expect(mmiController.custodianEventHandlerFactory).toHaveBeenCalled(); + }); + }); + + describe('storeCustodianSupportedChains', function () { + it('should call storeCustodianSupportedChains', async function () { + mmiController.storeCustodianSupportedChains = jest.fn(); + + mmiController.storeCustodianSupportedChains('0x1'); + + expect(mmiController.storeCustodianSupportedChains).toHaveBeenCalledWith( + '0x1', + ); + }); + }); +}); diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index 892f0ec4d..09c7b8803 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -63,8 +63,28 @@ import { } from '@metamask/snaps-controllers'; ///: END:ONLY_INCLUDE_IN +///: BEGIN:ONLY_INCLUDE_IN(build-mmi) +import { + CUSTODIAN_TYPES, + MmiConfigurationController, +} from '@metamask-institutional/custody-keyring'; +import { InstitutionalFeaturesController } from '@metamask-institutional/institutional-features'; +import { CustodyController } from '@metamask-institutional/custody-controller'; +import { TransactionUpdateController } from '@metamask-institutional/transaction-update'; +///: END:ONLY_INCLUDE_IN import { SignatureController } from '@metamask/signature-controller'; + +///: BEGIN:ONLY_INCLUDE_IN(desktop) +// eslint-disable-next-line import/order +import { DesktopController } from '@metamask/desktop/dist/controllers/desktop'; +///: END:ONLY_INCLUDE_IN + import { ApprovalType } from '@metamask/controller-utils'; + +///: BEGIN:ONLY_INCLUDE_IN(build-mmi) +import { toChecksumHexAddress } from '../../shared/modules/hexstring-utils'; +///: END:ONLY_INCLUDE_IN + import { AssetType, TransactionStatus, @@ -116,15 +136,16 @@ import { STATIC_MAINNET_TOKEN_LIST } from '../../shared/constants/tokens'; import { getTokenValueParam } from '../../shared/lib/metamask-controller-utils'; import { isManifestV3 } from '../../shared/modules/mv3.utils'; import { hexToDecimal } from '../../shared/modules/conversion.utils'; -///: BEGIN:ONLY_INCLUDE_IN(desktop) -// eslint-disable-next-line import/order -import { DesktopController } from '@metamask/desktop/dist/controllers/desktop'; -///: END:ONLY_INCLUDE_IN import { ACTION_QUEUE_METRICS_E2E_TEST } from '../../shared/constants/test-flags'; + import { onMessageReceived, checkForMultipleVersionsRunning, } from './detect-multiple-instances'; +///: BEGIN:ONLY_INCLUDE_IN(build-mmi) +import MMIController from './controllers/mmi-controller'; +import { mmiKeyringBuilderFactory } from './mmi-keyring-builder-factory'; +///: END:ONLY_INCLUDE_IN import ComposableObservableStore from './lib/ComposableObservableStore'; import AccountTracker from './lib/account-tracker'; import createDupeReqFilterMiddleware from './lib/createDupeReqFilterMiddleware'; @@ -264,6 +285,13 @@ export default class MetamaskController extends EventEmitter { ], }); + ///: BEGIN:ONLY_INCLUDE_IN(build-mmi) + this.mmiConfigurationController = new MmiConfigurationController({ + initState: initState.MmiConfigurationController, + mmiConfigurationServiceUrl: process.env.MMI_CONFIGURATION_SERVICE_URL, + }); + ///: END:ONLY_INCLUDE_IN + const networkControllerMessenger = this.controllerMessenger.getRestricted({ name: 'NetworkController', allowedEvents: [ @@ -273,6 +301,7 @@ export default class MetamaskController extends EventEmitter { 'NetworkController:infuraIsUnblocked', ], }); + this.networkController = new NetworkController({ messenger: networkControllerMessenger, state: initState.NetworkController, @@ -725,9 +754,21 @@ export default class MetamaskController extends EventEmitter { keyringOverrides?.lattice || LatticeKeyring, QRHardwareKeyring, ]; + additionalKeyrings = additionalKeyringTypes.map((keyringType) => keyringBuilderFactory(keyringType), ); + + ///: BEGIN:ONLY_INCLUDE_IN(build-mmi) + for (const custodianType of Object.keys(CUSTODIAN_TYPES)) { + additionalKeyrings.push( + mmiKeyringBuilderFactory( + CUSTODIAN_TYPES[custodianType].keyringClass, + { mmiConfigurationController: this.mmiConfigurationController }, + ), + ); + } + ///: END:ONLY_INCLUDE_IN } this.keyringController = new KeyringController({ @@ -984,6 +1025,22 @@ export default class MetamaskController extends EventEmitter { preferencesStore: this.preferencesController.store, }); + ///: BEGIN:ONLY_INCLUDE_IN(build-mmi) + this.custodyController = new CustodyController({ + initState: initState.CustodyController, + }); + this.institutionalFeaturesController = new InstitutionalFeaturesController({ + initState: initState.InstitutionalFeaturesController, + showConfirmRequest: opts.showUserConfirmation, + }); + this.transactionUpdateController = new TransactionUpdateController({ + initState: initState.TransactionUpdateController, + getCustodyKeyring: this.getCustodyKeyringIfExists.bind(this), + mmiConfigurationController: this.mmiConfigurationController, + captureException, + }); + ///: END:ONLY_INCLUDE_IN + this.backupController = new BackupController({ preferencesController: this.preferencesController, addressBookController: this.addressBookController, @@ -1054,6 +1111,9 @@ export default class MetamaskController extends EventEmitter { getDeviceModel: this.getDeviceModel.bind(this), getTokenStandardAndDetails: this.getTokenStandardAndDetails.bind(this), securityProviderRequest: this.securityProviderRequest.bind(this), + ///: BEGIN:ONLY_INCLUDE_IN(build-mmi) + transactionUpdateController: this.transactionUpdateController, + ///: END:ONLY_INCLUDE_IN messenger: this.controllerMessenger.getRestricted({ name: 'TransactionController', allowedActions: [ @@ -1064,6 +1124,28 @@ export default class MetamaskController extends EventEmitter { }), }); + ///: BEGIN:ONLY_INCLUDE_IN(build-mmi) + this.mmiController = new MMIController({ + mmiConfigurationController: this.mmiConfigurationController, + keyringController: this.keyringController, + txController: this.txController, + securityProviderRequest: this.securityProviderRequest.bind(this), + preferencesController: this.preferencesController, + appStateController: this.appStateController, + transactionUpdateController: this.transactionUpdateController, + custodyController: this.custodyController, + institutionalFeaturesController: this.institutionalFeaturesController, + getState: this.getState.bind(this), + getPendingNonce: this.getPendingNonce.bind(this), + accountTracker: this.accountTracker, + metaMetricsController: this.metaMetricsController, + networkController: this.networkController, + permissionController: this.permissionController, + platform: this.platform, + extension: this.extension, + }); + ///: END:ONLY_INCLUDE_IN + this.txController.on(`tx:status-update`, async (txId, status) => { if ( status === TransactionStatus.confirmed || @@ -1431,6 +1513,13 @@ export default class MetamaskController extends EventEmitter { ///: BEGIN:ONLY_INCLUDE_IN(desktop) DesktopController: this.desktopController.store, ///: END:ONLY_INCLUDE_IN + + ///: BEGIN:ONLY_INCLUDE_IN(build-mmi) + CustodyController: this.custodyController.store, + InstitutionalFeaturesController: + this.institutionalFeaturesController.store, + MmiConfigurationController: this.mmiConfigurationController.store, + ///: END:ONLY_INCLUDE_IN ...resetOnRestartStore, }); @@ -1467,6 +1556,13 @@ export default class MetamaskController extends EventEmitter { ///: BEGIN:ONLY_INCLUDE_IN(desktop) DesktopController: this.desktopController.store, ///: END:ONLY_INCLUDE_IN + + ///: BEGIN:ONLY_INCLUDE_IN(build-mmi) + CustodyController: this.custodyController.store, + InstitutionalFeaturesController: + this.institutionalFeaturesController.store, + MmiConfigurationController: this.mmiConfigurationController.store, + ///: END:ONLY_INCLUDE_IN ...resetOnRestartStore, }, controllerMessenger: this.controllerMessenger, @@ -2236,6 +2332,72 @@ export default class MetamaskController extends EventEmitter { rejectPermissionsRequest: this.rejectPermissionsRequest, ...getPermissionBackgroundApiMethods(permissionController), + ///: BEGIN:ONLY_INCLUDE_IN(build-mmi) + connectCustodyAddresses: + this.mmiController.connectCustodyAddresses.bind(this), + getCustodianAccounts: this.mmiController.getCustodianAccounts.bind(this), + getCustodianAccountsByAddress: + this.mmiController.getCustodianAccountsByAddress.bind(this), + getCustodianTransactionDeepLink: + this.mmiController.getCustodianTransactionDeepLink.bind(this), + getCustodianConfirmDeepLink: + this.mmiController.getCustodianConfirmDeepLink.bind(this), + getCustodianSignMessageDeepLink: + this.mmiController.getCustodianSignMessageDeepLink.bind(this), + getCustodianToken: this.mmiController.getCustodianToken.bind(this), + getCustodianJWTList: this.mmiController.getCustodianJWTList.bind(this), + setWaitForConfirmDeepLinkDialog: + this.custodyController.setWaitForConfirmDeepLinkDialog.bind( + this.custodyController, + ), + setCustodianConnectRequest: + this.custodyController.setCustodianConnectRequest.bind( + this.custodyController, + ), + getCustodianConnectRequest: + this.custodyController.getCustodianConnectRequest.bind( + this.custodyController, + ), + getAllCustodianAccountsWithToken: + this.mmiController.getAllCustodianAccountsWithToken.bind(this), + getMmiConfiguration: + this.mmiConfigurationController.getConfiguration.bind( + this.mmiConfigurationController, + ), + setComplianceAuthData: + this.institutionalFeaturesController.setComplianceAuthData.bind( + this.institutionalFeaturesController, + ), + deleteComplianceAuthData: + this.institutionalFeaturesController.deleteComplianceAuthData.bind( + this.institutionalFeaturesController, + ), + generateComplianceReport: + this.institutionalFeaturesController.generateComplianceReport.bind( + this.institutionalFeaturesController, + ), + syncReportsInProgress: + this.institutionalFeaturesController.syncReportsInProgress.bind( + this.institutionalFeaturesController, + ), + + removeConnectInstitutionalFeature: + this.institutionalFeaturesController.removeConnectInstitutionalFeature.bind( + this.institutionalFeaturesController, + ), + + getComplianceHistoricalReportsByAddress: + this.institutionalFeaturesController.getComplianceHistoricalReportsByAddress.bind( + this.institutionalFeaturesController, + ), + removeAddTokenConnectRequest: + this.institutionalFeaturesController.removeAddTokenConnectRequest.bind( + this.institutionalFeaturesController, + ), + setCustodianNewRefreshToken: + this.mmiController.setCustodianNewRefreshToken.bind(this), + ///: END:ONLY_INCLUDE_IN + ///: BEGIN:ONLY_INCLUDE_IN(snaps) // snaps removeSnapError: this.controllerMessenger.call.bind( @@ -2666,6 +2828,10 @@ export default class MetamaskController extends EventEmitter { async submitPassword(password) { await this.keyringController.submitPassword(password); + ///: BEGIN:ONLY_INCLUDE_IN(build-mmi) + this.mmiController.onSubmitPassword(); + ///: END:ONLY_INCLUDE_IN + try { await this.blockTracker.checkForLatestBlock(); } catch (error) { @@ -2785,6 +2951,16 @@ export default class MetamaskController extends EventEmitter { return keyring.mnemonic; } + ///: BEGIN:ONLY_INCLUDE_IN(build-mmi) + async getCustodyKeyringIfExists(address) { + const custodyType = this.custodyController.getCustodyTypeByAddress( + toChecksumHexAddress(address), + ); + const keyring = this.keyringController.getKeyringsByType(custodyType)[0]; + return keyring?.getAccountDetails(address) ? keyring : undefined; + } + ///: END:ONLY_INCLUDE_IN + // // Hardware // @@ -3173,6 +3349,10 @@ export default class MetamaskController extends EventEmitter { // Remove account from the account tracker controller this.accountTracker.removeAccount([address]); + ///: BEGIN:ONLY_INCLUDE_IN(build-mmi) + this.custodyController.removeAccount(address); + ///: END:ONLY_INCLUDE_IN(build-mmi) + const keyring = await this.keyringController.getKeyringForAccount(address); // Remove account from the keyring await this.keyringController.removeAccount(address); @@ -3731,6 +3911,21 @@ export default class MetamaskController extends EventEmitter { this.alertController.setWeb3ShimUsageRecorded.bind( this.alertController, ), + + ///: BEGIN:ONLY_INCLUDE_IN(build-mmi) + handleMmiAuthenticate: + this.institutionalFeaturesController.handleMmiAuthenticate.bind( + this.institutionalFeaturesController, + ), + handleMmiCheckIfTokenIsPresent: + this.mmiController.handleMmiCheckIfTokenIsPresent.bind(this), + handleMmiPortfolio: this.mmiController.setMmiPortfolioCookie.bind(this), + handleMmiOpenSwaps: this.mmiController.handleMmiOpenSwaps.bind(this), + handleMmiSetAccountAndNetwork: + this.mmiController.setAccountAndNetwork.bind(this), + handleMmiOpenAddHardwareWallet: + this.mmiController.handleMmiOpenAddHardwareWallet.bind(this), + ///: END:ONLY_INCLUDE_IN }), ); diff --git a/app/scripts/mmi-keyring-builder-factory.js b/app/scripts/mmi-keyring-builder-factory.js new file mode 100644 index 000000000..a532df071 --- /dev/null +++ b/app/scripts/mmi-keyring-builder-factory.js @@ -0,0 +1,17 @@ +/** + * Get builder function for MMI keyrings which require an additional `opts` + * parameter, used to pass MMI configuration. + * + * Returns a builder function for `Keyring` with a `type` property. + * + * @param {Keyring} Keyring - The Keyring class for the builder. + * @param {Keyring} opts - Optional parameters to be passed to the builder. + * @returns {Function} A builder function for the given Keyring. + */ +export function mmiKeyringBuilderFactory(Keyring, opts) { + const builder = () => new Keyring(opts); + + builder.type = Keyring.type; + + return builder; +} diff --git a/coverage-targets.js b/coverage-targets.js index c9b4ac370..bc651cd24 100644 --- a/coverage-targets.js +++ b/coverage-targets.js @@ -6,10 +6,10 @@ // subset of files to check against these targets. module.exports = { global: { - lines: 71.15, - branches: 59.17, - statements: 70.6, - functions: 63.82, + lines: 70.94, + branches: 59.11, + statements: 70.38, + functions: 63.65, }, transforms: { branches: 100, diff --git a/jest.config.js b/jest.config.js index 35c9f342c..814ea874e 100644 --- a/jest.config.js +++ b/jest.config.js @@ -37,6 +37,7 @@ module.exports = { testMatch: [ '/app/scripts/constants/error-utils.test.js', '/app/scripts/controllers/app-state.test.js', + '/app/scripts/controllers/mmi-controller.test.js', '/app/scripts/controllers/network/**/*.test.js', '/app/scripts/controllers/network/**/*.test.ts', '/app/scripts/controllers/permissions/**/*.test.js', diff --git a/package.json b/package.json index 735079d22..c5dfbd8df 100644 --- a/package.json +++ b/package.json @@ -216,8 +216,13 @@ "@keystonehq/metamask-airgapped-keyring": "^0.9.2", "@lavamoat/snow": "^1.5.0", "@material-ui/core": "^4.11.0", + "@metamask-institutional/custody-controller": "0.2.6", + "@metamask-institutional/custody-keyring": "0.0.23", "@metamask-institutional/extension": "^0.1.3", + "@metamask-institutional/institutional-features": "^1.1.8", "@metamask-institutional/portfolio-dashboard": "^1.1.3", + "@metamask-institutional/sdk": "^0.1.17", + "@metamask-institutional/transaction-update": "^0.1.21", "@metamask/address-book-controller": "^2.0.0", "@metamask/announcement-controller": "^3.0.0", "@metamask/approval-controller": "^2.1.0", diff --git a/shared/constants/transaction.ts b/shared/constants/transaction.ts index dad1a72e1..1d7021402 100644 --- a/shared/constants/transaction.ts +++ b/shared/constants/transaction.ts @@ -165,6 +165,18 @@ export const IN_PROGRESS_TRANSACTION_STATUSES = [ TransactionStatus.pending, ]; +///: BEGIN:ONLY_INCLUDE_IN(build-mmi) +/** + * Status for finalized transactions. + */ +export const FINALIZED_TRANSACTION_STATUSES = [ + TransactionStatus.rejected, + TransactionStatus.failed, + TransactionStatus.dropped, + TransactionStatus.confirmed, +]; +///: END:ONLY_INCLUDE_IN + /** * Transaction Group Status is a MetaMask construct to track the status of groups * of transactions. diff --git a/yarn.lock b/yarn.lock index 1f2740503..ea09b52aa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -62,6 +62,13 @@ __metadata: languageName: node linkType: hard +"@auth0/auth0-spa-js@npm:^2.0.4": + version: 2.0.5 + resolution: "@auth0/auth0-spa-js@npm:2.0.5" + checksum: 3354ccfb2cd85657f0fe584f769cc2646c03f58fbc67859220dc9f8c359e9118b3f141b7ed9e75088b55cbaf047ee0351d3d00f7df00e108905259ab8ea6fe62 + languageName: node + linkType: hard + "@aw-web-design/x-default-browser@npm:1.4.88": version: 1.4.88 resolution: "@aw-web-design/x-default-browser@npm:1.4.88" @@ -3660,7 +3667,7 @@ __metadata: languageName: node linkType: hard -"@metamask-institutional/custody-controller@npm:^0.2.5": +"@metamask-institutional/custody-controller@npm:0.2.6, @metamask-institutional/custody-controller@npm:^0.2.5": version: 0.2.6 resolution: "@metamask-institutional/custody-controller@npm:0.2.6" dependencies: @@ -3673,6 +3680,22 @@ __metadata: languageName: node linkType: hard +"@metamask-institutional/custody-keyring@npm:0.0.23": + version: 0.0.23 + resolution: "@metamask-institutional/custody-keyring@npm:0.0.23" + dependencies: + "@ethereumjs/tx": ^4.1.1 + "@ethereumjs/util": ^8.0.5 + "@metamask-institutional/configuration-client": ^1.0.6 + "@metamask-institutional/sdk": ^0.1.15 + "@metamask-institutional/types": ^1.0.2 + "@metamask/obs-store": ^8.0.0 + crypto: ^1.0.1 + lodash.clonedeep: ^4.5.0 + checksum: eae1003ddfd262526d28c23d6dbdfbc6d42879bb989c9bcf97416d3964aaa6ce202a0803c46256fb1afc1399592176ba2fdfcbd2043c4f1275f5079e067c3a78 + languageName: node + linkType: hard + "@metamask-institutional/custody-keyring@npm:^0.0.22": version: 0.0.22 resolution: "@metamask-institutional/custody-keyring@npm:0.0.22" @@ -3706,6 +3729,17 @@ __metadata: languageName: node linkType: hard +"@metamask-institutional/institutional-features@npm:^1.1.8": + version: 1.1.8 + resolution: "@metamask-institutional/institutional-features@npm:1.1.8" + dependencies: + "@auth0/auth0-spa-js": ^2.0.4 + "@metamask-institutional/custody-keyring": ^0.0.22 + "@metamask/obs-store": ^8.0.0 + checksum: 3942afd436673d19d16e139c4a989a7c099604b915ef63901ee77c52c9087848256d45db0b27950ac2181f9a9db16b231b3d9de89007c244db08b767668a617f + languageName: node + linkType: hard + "@metamask-institutional/portfolio-dashboard@npm:^1.1.3": version: 1.1.3 resolution: "@metamask-institutional/portfolio-dashboard@npm:1.1.3" @@ -3713,7 +3747,7 @@ __metadata: languageName: node linkType: hard -"@metamask-institutional/sdk@npm:^0.1.14, @metamask-institutional/sdk@npm:^0.1.15, @metamask-institutional/sdk@npm:^0.1.16": +"@metamask-institutional/sdk@npm:^0.1.14, @metamask-institutional/sdk@npm:^0.1.15, @metamask-institutional/sdk@npm:^0.1.16, @metamask-institutional/sdk@npm:^0.1.17": version: 0.1.17 resolution: "@metamask-institutional/sdk@npm:0.1.17" dependencies: @@ -3734,7 +3768,7 @@ __metadata: languageName: node linkType: hard -"@metamask-institutional/transaction-update@npm:^0.1.20": +"@metamask-institutional/transaction-update@npm:^0.1.20, @metamask-institutional/transaction-update@npm:^0.1.21": version: 0.1.21 resolution: "@metamask-institutional/transaction-update@npm:0.1.21" dependencies: @@ -23796,8 +23830,13 @@ __metadata: "@lavamoat/lavapack": ^5.0.0 "@lavamoat/snow": ^1.5.0 "@material-ui/core": ^4.11.0 + "@metamask-institutional/custody-controller": 0.2.6 + "@metamask-institutional/custody-keyring": 0.0.23 "@metamask-institutional/extension": ^0.1.3 + "@metamask-institutional/institutional-features": ^1.1.8 "@metamask-institutional/portfolio-dashboard": ^1.1.3 + "@metamask-institutional/sdk": ^0.1.17 + "@metamask-institutional/transaction-update": ^0.1.21 "@metamask/address-book-controller": ^2.0.0 "@metamask/announcement-controller": ^3.0.0 "@metamask/approval-controller": ^2.1.0 From 97a983418290cd97f2176ffda82887f053f1d8e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Albert=20Oliv=C3=A9?= Date: Mon, 29 May 2023 17:50:56 +0200 Subject: [PATCH 003/160] =?UTF-8?q?[MMI]=C2=A0Add=20confirm-transaction-ba?= =?UTF-8?q?se=20code=20fences=20(#18795)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Added code fences * Continue working on this ticket * Fixed policies * Added compliance-row component * Fixed tests and css * Fixed invalid locale * Fixing linting * Add optional check * Fixing issues * Fixed storybook * Added missing dependency * ran lavamoat auto * ran dedupe and lavamoat * lint * Removed compliance row * Removed unneeded package * Removed unneeded proptyes * updates mmi packages * updating lavamoat * formatting main * Fixed conflicts * updates lock file * Moved code fences to have them all in the same place * Updated yarn.lock and lavamoat * remove linebreak * Improved logic in order to not have many code fences and improve readability * Fixing proptypes issues with eslint * runs lavamoat auto * Testing fixes issue e2e tests * Testing issues * Reverting code fences container * Fixing issue with binding * Added code fences in proptypes * Reverting code fences --------- Co-authored-by: Antonio Regadas Co-authored-by: António Regadas --- lavamoat/browserify/beta/policy.json | 103 ++++++++ lavamoat/browserify/desktop/policy.json | 103 ++++++++ lavamoat/browserify/flask/policy.json | 103 ++++++++ lavamoat/browserify/main/policy.json | 103 ++++++++ .../confirm-transaction-base.component.js | 224 +++++++++++++----- .../confirm-transaction-base.container.js | 88 +++++-- ui/selectors/institutional/selectors.js | 13 + 7 files changed, 653 insertions(+), 84 deletions(-) diff --git a/lavamoat/browserify/beta/policy.json b/lavamoat/browserify/beta/policy.json index f818bbd0e..316c0bb86 100644 --- a/lavamoat/browserify/beta/policy.json +++ b/lavamoat/browserify/beta/policy.json @@ -783,6 +783,109 @@ "@babel/runtime": true } }, + "@metamask-institutional/extension": { + "globals": { + "console.log": true, + "fetch": true + }, + "packages": { + "@ethereumjs/tx>@ethereumjs/util": true, + "@metamask-institutional/extension>@metamask-institutional/custody-controller": true, + "@metamask-institutional/extension>@metamask-institutional/sdk": true, + "@metamask-institutional/extension>@metamask-institutional/types": true + } + }, + "@metamask-institutional/extension>@metamask-institutional/custody-controller": { + "packages": { + "@ethereumjs/tx>@ethereumjs/util": true, + "@metamask-institutional/extension>@metamask-institutional/custody-keyring": true, + "@metamask/obs-store": true + } + }, + "@metamask-institutional/extension>@metamask-institutional/custody-keyring": { + "globals": { + "console.log": true, + "console.warn": true + }, + "packages": { + "@ethereumjs/tx>@ethereumjs/util": true, + "@metamask-institutional/extension>@metamask-institutional/custody-keyring>@metamask-institutional/configuration-client": true, + "@metamask-institutional/extension>@metamask-institutional/sdk": true, + "@metamask-institutional/extension>@metamask-institutional/types": true, + "@metamask/obs-store": true, + "browserify>crypto-browserify": true, + "browserify>events": true, + "gulp-sass>lodash.clonedeep": true + } + }, + "@metamask-institutional/extension>@metamask-institutional/custody-keyring>@metamask-institutional/configuration-client": { + "globals": { + "console.log": true, + "fetch": true + } + }, + "@metamask-institutional/extension>@metamask-institutional/sdk": { + "globals": { + "URLSearchParams": true, + "console.debug": true, + "console.log": true, + "console.warn": true, + "fetch": true + }, + "packages": { + "@metamask-institutional/extension>@metamask-institutional/sdk>@metamask-institutional/simplecache": true, + "@metamask-institutional/extension>@metamask-institutional/sdk>bignumber.js": true, + "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken": true, + "browserify>crypto-browserify": true, + "browserify>events": true + } + }, + "@metamask-institutional/extension>@metamask-institutional/sdk>bignumber.js": { + "globals": { + "crypto": true, + "define": true + } + }, + "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken": { + "packages": { + "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws": true, + "browserify>buffer": true, + "browserify>crypto-browserify": true, + "browserify>process": true, + "lodash": true, + "mocha>ms": true, + "semver": true + } + }, + "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws": { + "packages": { + "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws>jwa": true, + "browserify>buffer": true, + "browserify>process": true, + "browserify>stream-browserify": true, + "browserify>util": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws>jwa": { + "packages": { + "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws>jwa>buffer-equal-constant-time": true, + "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws>jwa>ecdsa-sig-formatter": true, + "browserify>crypto-browserify": true, + "browserify>util": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws>jwa>buffer-equal-constant-time": { + "packages": { + "browserify>buffer": true + } + }, + "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws>jwa>ecdsa-sig-formatter": { + "packages": { + "ethereumjs-wallet>safe-buffer": true + } + }, "@metamask/address-book-controller": { "packages": { "@metamask/base-controller": true, diff --git a/lavamoat/browserify/desktop/policy.json b/lavamoat/browserify/desktop/policy.json index 5236b5b26..eb47cfbee 100644 --- a/lavamoat/browserify/desktop/policy.json +++ b/lavamoat/browserify/desktop/policy.json @@ -783,6 +783,109 @@ "@babel/runtime": true } }, + "@metamask-institutional/extension": { + "globals": { + "console.log": true, + "fetch": true + }, + "packages": { + "@ethereumjs/tx>@ethereumjs/util": true, + "@metamask-institutional/extension>@metamask-institutional/custody-controller": true, + "@metamask-institutional/extension>@metamask-institutional/sdk": true, + "@metamask-institutional/extension>@metamask-institutional/types": true + } + }, + "@metamask-institutional/extension>@metamask-institutional/custody-controller": { + "packages": { + "@ethereumjs/tx>@ethereumjs/util": true, + "@metamask-institutional/extension>@metamask-institutional/custody-keyring": true, + "@metamask/obs-store": true + } + }, + "@metamask-institutional/extension>@metamask-institutional/custody-keyring": { + "globals": { + "console.log": true, + "console.warn": true + }, + "packages": { + "@ethereumjs/tx>@ethereumjs/util": true, + "@metamask-institutional/extension>@metamask-institutional/custody-keyring>@metamask-institutional/configuration-client": true, + "@metamask-institutional/extension>@metamask-institutional/sdk": true, + "@metamask-institutional/extension>@metamask-institutional/types": true, + "@metamask/obs-store": true, + "browserify>crypto-browserify": true, + "browserify>events": true, + "gulp-sass>lodash.clonedeep": true + } + }, + "@metamask-institutional/extension>@metamask-institutional/custody-keyring>@metamask-institutional/configuration-client": { + "globals": { + "console.log": true, + "fetch": true + } + }, + "@metamask-institutional/extension>@metamask-institutional/sdk": { + "globals": { + "URLSearchParams": true, + "console.debug": true, + "console.log": true, + "console.warn": true, + "fetch": true + }, + "packages": { + "@metamask-institutional/extension>@metamask-institutional/sdk>@metamask-institutional/simplecache": true, + "@metamask-institutional/extension>@metamask-institutional/sdk>bignumber.js": true, + "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken": true, + "browserify>crypto-browserify": true, + "browserify>events": true + } + }, + "@metamask-institutional/extension>@metamask-institutional/sdk>bignumber.js": { + "globals": { + "crypto": true, + "define": true + } + }, + "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken": { + "packages": { + "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws": true, + "browserify>buffer": true, + "browserify>crypto-browserify": true, + "browserify>process": true, + "lodash": true, + "mocha>ms": true, + "semver": true + } + }, + "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws": { + "packages": { + "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws>jwa": true, + "browserify>buffer": true, + "browserify>process": true, + "browserify>stream-browserify": true, + "browserify>util": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws>jwa": { + "packages": { + "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws>jwa>buffer-equal-constant-time": true, + "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws>jwa>ecdsa-sig-formatter": true, + "browserify>crypto-browserify": true, + "browserify>util": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws>jwa>buffer-equal-constant-time": { + "packages": { + "browserify>buffer": true + } + }, + "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws>jwa>ecdsa-sig-formatter": { + "packages": { + "ethereumjs-wallet>safe-buffer": true + } + }, "@metamask/address-book-controller": { "packages": { "@metamask/base-controller": true, diff --git a/lavamoat/browserify/flask/policy.json b/lavamoat/browserify/flask/policy.json index 5236b5b26..eb47cfbee 100644 --- a/lavamoat/browserify/flask/policy.json +++ b/lavamoat/browserify/flask/policy.json @@ -783,6 +783,109 @@ "@babel/runtime": true } }, + "@metamask-institutional/extension": { + "globals": { + "console.log": true, + "fetch": true + }, + "packages": { + "@ethereumjs/tx>@ethereumjs/util": true, + "@metamask-institutional/extension>@metamask-institutional/custody-controller": true, + "@metamask-institutional/extension>@metamask-institutional/sdk": true, + "@metamask-institutional/extension>@metamask-institutional/types": true + } + }, + "@metamask-institutional/extension>@metamask-institutional/custody-controller": { + "packages": { + "@ethereumjs/tx>@ethereumjs/util": true, + "@metamask-institutional/extension>@metamask-institutional/custody-keyring": true, + "@metamask/obs-store": true + } + }, + "@metamask-institutional/extension>@metamask-institutional/custody-keyring": { + "globals": { + "console.log": true, + "console.warn": true + }, + "packages": { + "@ethereumjs/tx>@ethereumjs/util": true, + "@metamask-institutional/extension>@metamask-institutional/custody-keyring>@metamask-institutional/configuration-client": true, + "@metamask-institutional/extension>@metamask-institutional/sdk": true, + "@metamask-institutional/extension>@metamask-institutional/types": true, + "@metamask/obs-store": true, + "browserify>crypto-browserify": true, + "browserify>events": true, + "gulp-sass>lodash.clonedeep": true + } + }, + "@metamask-institutional/extension>@metamask-institutional/custody-keyring>@metamask-institutional/configuration-client": { + "globals": { + "console.log": true, + "fetch": true + } + }, + "@metamask-institutional/extension>@metamask-institutional/sdk": { + "globals": { + "URLSearchParams": true, + "console.debug": true, + "console.log": true, + "console.warn": true, + "fetch": true + }, + "packages": { + "@metamask-institutional/extension>@metamask-institutional/sdk>@metamask-institutional/simplecache": true, + "@metamask-institutional/extension>@metamask-institutional/sdk>bignumber.js": true, + "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken": true, + "browserify>crypto-browserify": true, + "browserify>events": true + } + }, + "@metamask-institutional/extension>@metamask-institutional/sdk>bignumber.js": { + "globals": { + "crypto": true, + "define": true + } + }, + "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken": { + "packages": { + "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws": true, + "browserify>buffer": true, + "browserify>crypto-browserify": true, + "browserify>process": true, + "lodash": true, + "mocha>ms": true, + "semver": true + } + }, + "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws": { + "packages": { + "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws>jwa": true, + "browserify>buffer": true, + "browserify>process": true, + "browserify>stream-browserify": true, + "browserify>util": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws>jwa": { + "packages": { + "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws>jwa>buffer-equal-constant-time": true, + "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws>jwa>ecdsa-sig-formatter": true, + "browserify>crypto-browserify": true, + "browserify>util": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws>jwa>buffer-equal-constant-time": { + "packages": { + "browserify>buffer": true + } + }, + "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws>jwa>ecdsa-sig-formatter": { + "packages": { + "ethereumjs-wallet>safe-buffer": true + } + }, "@metamask/address-book-controller": { "packages": { "@metamask/base-controller": true, diff --git a/lavamoat/browserify/main/policy.json b/lavamoat/browserify/main/policy.json index f818bbd0e..316c0bb86 100644 --- a/lavamoat/browserify/main/policy.json +++ b/lavamoat/browserify/main/policy.json @@ -783,6 +783,109 @@ "@babel/runtime": true } }, + "@metamask-institutional/extension": { + "globals": { + "console.log": true, + "fetch": true + }, + "packages": { + "@ethereumjs/tx>@ethereumjs/util": true, + "@metamask-institutional/extension>@metamask-institutional/custody-controller": true, + "@metamask-institutional/extension>@metamask-institutional/sdk": true, + "@metamask-institutional/extension>@metamask-institutional/types": true + } + }, + "@metamask-institutional/extension>@metamask-institutional/custody-controller": { + "packages": { + "@ethereumjs/tx>@ethereumjs/util": true, + "@metamask-institutional/extension>@metamask-institutional/custody-keyring": true, + "@metamask/obs-store": true + } + }, + "@metamask-institutional/extension>@metamask-institutional/custody-keyring": { + "globals": { + "console.log": true, + "console.warn": true + }, + "packages": { + "@ethereumjs/tx>@ethereumjs/util": true, + "@metamask-institutional/extension>@metamask-institutional/custody-keyring>@metamask-institutional/configuration-client": true, + "@metamask-institutional/extension>@metamask-institutional/sdk": true, + "@metamask-institutional/extension>@metamask-institutional/types": true, + "@metamask/obs-store": true, + "browserify>crypto-browserify": true, + "browserify>events": true, + "gulp-sass>lodash.clonedeep": true + } + }, + "@metamask-institutional/extension>@metamask-institutional/custody-keyring>@metamask-institutional/configuration-client": { + "globals": { + "console.log": true, + "fetch": true + } + }, + "@metamask-institutional/extension>@metamask-institutional/sdk": { + "globals": { + "URLSearchParams": true, + "console.debug": true, + "console.log": true, + "console.warn": true, + "fetch": true + }, + "packages": { + "@metamask-institutional/extension>@metamask-institutional/sdk>@metamask-institutional/simplecache": true, + "@metamask-institutional/extension>@metamask-institutional/sdk>bignumber.js": true, + "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken": true, + "browserify>crypto-browserify": true, + "browserify>events": true + } + }, + "@metamask-institutional/extension>@metamask-institutional/sdk>bignumber.js": { + "globals": { + "crypto": true, + "define": true + } + }, + "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken": { + "packages": { + "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws": true, + "browserify>buffer": true, + "browserify>crypto-browserify": true, + "browserify>process": true, + "lodash": true, + "mocha>ms": true, + "semver": true + } + }, + "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws": { + "packages": { + "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws>jwa": true, + "browserify>buffer": true, + "browserify>process": true, + "browserify>stream-browserify": true, + "browserify>util": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws>jwa": { + "packages": { + "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws>jwa>buffer-equal-constant-time": true, + "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws>jwa>ecdsa-sig-formatter": true, + "browserify>crypto-browserify": true, + "browserify>util": true, + "ethereumjs-wallet>safe-buffer": true + } + }, + "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws>jwa>buffer-equal-constant-time": { + "packages": { + "browserify>buffer": true + } + }, + "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws>jwa>ecdsa-sig-formatter": { + "packages": { + "ethereumjs-wallet>safe-buffer": true + } + }, "@metamask/address-book-controller": { "packages": { "@metamask/base-controller": true, diff --git a/ui/pages/confirm-transaction-base/confirm-transaction-base.component.js b/ui/pages/confirm-transaction-base/confirm-transaction-base.component.js index 6934f0b04..850b2e490 100644 --- a/ui/pages/confirm-transaction-base/confirm-transaction-base.component.js +++ b/ui/pages/confirm-transaction-base/confirm-transaction-base.component.js @@ -133,13 +133,15 @@ export default class ConfirmTransactionBase extends Component { hardwareWalletRequiresConnection: PropTypes.bool, isMultiLayerFeeNetwork: PropTypes.bool, isBuyableChain: PropTypes.bool, - ///: BEGIN:ONLY_INCLUDE_IN(build-mmi) - accountType: PropTypes.string, - isNoteToTraderSupported: PropTypes.bool, - ///: END:ONLY_INCLUDE_IN isApprovalOrRejection: PropTypes.bool, assetStandard: PropTypes.string, useCurrencyRateCheck: PropTypes.bool, + isNotification: PropTypes.bool, + accountType: PropTypes.string, + setWaitForConfirmDeepLinkDialog: PropTypes.func, + showTransactionsFailedModal: PropTypes.func, + showCustodianDeepLink: PropTypes.func, + isNoteToTraderSupported: PropTypes.bool, }; state = { @@ -593,36 +595,81 @@ export default class ConfirmTransactionBase extends Component { } handleSubmit() { + let submit = this.handleMainSubmit.bind(this); + + ///: BEGIN:ONLY_INCLUDE_IN(build-mmi) + submit = this.handleMMISubmit.bind(this); + ///: END:ONLY_INCLUDE_IN + + submit(); + } + + handleMainSubmit() { const { sendTransaction, txData, history, mostRecentOverviewPage, updateCustomNonce, - maxFeePerGas, - customTokenAmount, - dappProposedTokenAmount, - currentTokenBalance, - maxPriorityFeePerGas, - baseFeePerGas, - methodData, - addToAddressBookIfNew, - toAccounts, - toAddress, - ///: BEGIN:ONLY_INCLUDE_IN(build-mmi) - accountType, - isNoteToTraderSupported, - ///: END:ONLY_INCLUDE_IN } = this.props; - const { - submitting, - ///: BEGIN:ONLY_INCLUDE_IN(build-mmi) - noteText, - ///: END:ONLY_INCLUDE_IN - } = this.state; - const { name } = methodData; - ///: BEGIN:ONLY_INCLUDE_IN(build-mmi) + this.updateTxData(); + + this.setState( + { + submitting: true, + submitError: null, + }, + () => { + this._removeBeforeUnload(); + + sendTransaction(txData) + .then(() => { + if (!this._isMounted) { + return; + } + + this.setState( + { + submitting: false, + }, + () => { + history.push(mostRecentOverviewPage); + updateCustomNonce(''); + }, + ); + }) + .catch((error) => { + if (!this._isMounted) { + return; + } + this.setState({ + submitting: false, + submitError: error.message, + }); + updateCustomNonce(''); + }); + }, + ); + } + + handleMMISubmit() { + const { + sendTransaction, + txData, + history, + mostRecentOverviewPage, + updateCustomNonce, + unapprovedTxCount, + accountType, + isNotification, + setWaitForConfirmDeepLinkDialog, + showTransactionsFailedModal, + fromAddress, + isNoteToTraderSupported, + } = this.props; + const { noteText } = this.state; + if (accountType === 'custody') { txData.custodyStatus = 'created'; @@ -632,7 +679,92 @@ export default class ConfirmTransactionBase extends Component { }; } } - ///: END:ONLY_INCLUDE_IN + + this.updateTxData(); + + this.setState( + { + submitting: true, + submitError: null, + }, + () => { + this._removeBeforeUnload(); + + if (txData.custodyStatus) { + setWaitForConfirmDeepLinkDialog(true); + } + + sendTransaction(txData) + .then(() => { + if (!this._isMounted) { + return; + } + + if (txData.custodyStatus) { + this.props.showCustodianDeepLink({ + fromAddress, + closeNotification: isNotification && unapprovedTxCount === 1, + txId: txData.id, + onDeepLinkFetched: () => { + this.context.trackEvent({ + category: 'MMI', + event: 'Show deeplink for transaction', + }); + }, + onDeepLinkShown: () => { + this.props.clearConfirmTransaction(); + this.setState({ submitting: false }, () => { + history.push(mostRecentOverviewPage); + updateCustomNonce(''); + }); + }, + }); + } else { + this.setState( + { + submitting: false, + }, + () => { + history.push(mostRecentOverviewPage); + updateCustomNonce(''); + }, + ); + } + }) + .catch((error) => { + if (!this._isMounted) { + return; + } + + showTransactionsFailedModal(error.message, isNotification); + + this.setState({ + submitting: false, + submitError: error.message, + }); + setWaitForConfirmDeepLinkDialog(true); + updateCustomNonce(''); + }); + }, + ); + } + + updateTxData() { + const { + txData, + maxFeePerGas, + customTokenAmount, + dappProposedTokenAmount, + currentTokenBalance, + maxPriorityFeePerGas, + baseFeePerGas, + addToAddressBookIfNew, + toAccounts, + toAddress, + methodData, + } = this.props; + const { submitting } = this.state; + const { name } = methodData; if (txData.type === TransactionType.simpleSend) { addToAddressBookIfNew(toAddress, toAccounts); @@ -678,44 +810,6 @@ export default class ConfirmTransactionBase extends Component { maxPriorityFeePerGas, }; } - - this.setState( - { - submitting: true, - submitError: null, - }, - () => { - this._removeBeforeUnload(); - - sendTransaction(txData) - .then(() => { - if (!this._isMounted) { - return; - } - - this.setState( - { - submitting: false, - }, - () => { - history.push(mostRecentOverviewPage); - updateCustomNonce(''); - }, - ); - }) - .catch((error) => { - if (!this._isMounted) { - return; - } - - this.setState({ - submitting: false, - submitError: error.message, - }); - updateCustomNonce(''); - }); - }, - ); } handleSetApprovalForAll() { diff --git a/ui/pages/confirm-transaction-base/confirm-transaction-base.container.js b/ui/pages/confirm-transaction-base/confirm-transaction-base.container.js index aba96a1d2..9514ccea6 100644 --- a/ui/pages/confirm-transaction-base/confirm-transaction-base.container.js +++ b/ui/pages/confirm-transaction-base/confirm-transaction-base.container.js @@ -1,7 +1,10 @@ import { connect } from 'react-redux'; import { compose } from 'redux'; import { withRouter } from 'react-router-dom'; - +///: BEGIN:ONLY_INCLUDE_IN(build-mmi) +import { showCustodianDeepLink } from '@metamask-institutional/extension'; +import { mmiActionsFactory } from '../../store/institutional/institution-background'; +///: END:ONLY_INCLUDE_IN import { clearConfirmTransaction } from '../../ducks/confirm-transaction/confirm-transaction.duck'; import { @@ -48,7 +51,12 @@ import { getSendToAccounts, getProviderConfig, } from '../../ducks/metamask/metamask'; -import { addHexPrefix } from '../../../app/scripts/lib/util'; +import { + addHexPrefix, + ///: BEGIN:ONLY_INCLUDE_IN(build-mmi) + getEnvironmentType, + ///: END:ONLY_INCLUDE_IN +} from '../../../app/scripts/lib/util'; import { parseStandardTokenTransactionData, @@ -63,8 +71,11 @@ import { import { getGasLoadingAnimationIsShowing } from '../../ducks/app/app'; import { isLegacyTransaction } from '../../helpers/utils/transactions.util'; import { CUSTOM_GAS_ESTIMATE } from '../../../shared/constants/gas'; + ///: BEGIN:ONLY_INCLUDE_IN(build-mmi) import { getAccountType } from '../../selectors/selectors'; +import { ENVIRONMENT_TYPE_NOTIFICATION } from '../../../shared/constants/app'; +import { getIsNoteToTraderSupported } from '../../selectors/institutional/selectors'; ///: END:ONLY_INCLUDE_IN import { TransactionStatus, @@ -100,6 +111,11 @@ const mapStateToProps = (state, ownProps) => { const { id: paramsTransactionId } = params; const isMainnet = getIsMainnet(state); + ///: BEGIN:ONLY_INCLUDE_IN(build-mmi) + const envType = getEnvironmentType(); + const isNotification = envType === ENVIRONMENT_TYPE_NOTIFICATION; + ///: END:ONLY_INCLUDE_IN + const isGasEstimatesLoading = getIsGasEstimatesLoading(state); const gasLoadingAnimationIsShowing = getGasLoadingAnimationIsShowing(state); const isBuyableChain = getIsBuyableChain(state); @@ -199,29 +215,20 @@ const mapStateToProps = (state, ownProps) => { txParamsAreDappSuggested(fullTxData); const fromAddressIsLedger = isAddressLedger(state, fromAddress); const nativeCurrency = getNativeCurrency(state); + ///: BEGIN:ONLY_INCLUDE_IN(build-mmi) + const accountType = getAccountType(state, fromAddress); + const fromChecksumHexAddress = toChecksumHexAddress(fromAddress); + const isNoteToTraderSupported = getIsNoteToTraderSupported( + state, + fromChecksumHexAddress, + ); + ///: END:ONLY_INCLUDE_IN const hardwareWalletRequiresConnection = doesAddressRequireLedgerHidConnection(state, fromAddress); const isMultiLayerFeeNetwork = getIsMultiLayerFeeNetwork(state); - ///: BEGIN:ONLY_INCLUDE_IN(build-mmi) - const accountType = getAccountType(state); - - const fromChecksumHexAddress = toChecksumHexAddress(fromAddress); - let isNoteToTraderSupported = false; - if ( - state.metamask.custodyAccountDetails && - state.metamask.custodyAccountDetails[fromChecksumHexAddress] - ) { - const { custodianName } = - state.metamask.custodyAccountDetails[fromChecksumHexAddress]; - isNoteToTraderSupported = state.metamask.mmiConfiguration?.custodians?.find( - (custodian) => custodian.name === custodianName, - )?.isNoteToTraderSupported; - } - ///: END:ONLY_INCLUDE_IN - return { balance, fromAddress, @@ -275,11 +282,15 @@ const mapStateToProps = (state, ownProps) => { ///: BEGIN:ONLY_INCLUDE_IN(build-mmi) accountType, isNoteToTraderSupported, + isNotification, ///: END:ONLY_INCLUDE_IN }; }; export const mapDispatchToProps = (dispatch) => { + ///: BEGIN:ONLY_INCLUDE_IN(build-mmi) + const mmiActions = mmiActionsFactory(); + ///: END:ONLY_INCLUDE_IN return { tryReverseResolveAddress: (address) => { return dispatch(tryReverseResolveAddress(address)); @@ -316,6 +327,45 @@ export const mapDispatchToProps = (dispatch) => { dispatch(addToAddressBook(hexPrefixedAddress, nickname)); } }, + ///: BEGIN:ONLY_INCLUDE_IN(build-mmi) + getCustodianConfirmDeepLink: (id) => + dispatch(mmiActions.getCustodianConfirmDeepLink(id)), + showCustodyConfirmLink: ({ link, address, closeNotification, custodyId }) => + dispatch( + mmiActions.showCustodyConfirmLink({ + link, + address, + closeNotification, + custodyId, + }), + ), + showTransactionsFailedModal: (errorMessage, closeNotification) => + dispatch( + showModal({ + name: 'TRANSACTION_FAILED', + errorMessage, + closeNotification, + }), + ), + showCustodianDeepLink: ({ + txId, + fromAddress, + closeNotification, + onDeepLinkFetched, + onDeepLinkShown, + }) => + showCustodianDeepLink({ + dispatch, + mmiActions, + txId, + fromAddress, + closeNotification, + onDeepLinkFetched, + onDeepLinkShown, + }), + setWaitForConfirmDeepLinkDialog: (wait) => + dispatch(mmiActions.setWaitForConfirmDeepLinkDialog(wait)), + ///: END:ONLY_INCLUDE_IN }; }; diff --git a/ui/selectors/institutional/selectors.js b/ui/selectors/institutional/selectors.js index f08295453..d869b7f23 100644 --- a/ui/selectors/institutional/selectors.js +++ b/ui/selectors/institutional/selectors.js @@ -78,3 +78,16 @@ export function getMMIConfiguration(state) { export function getInteractiveReplacementToken(state) { return state.metamask.interactiveReplacementToken || {}; } + +export function getIsNoteToTraderSupported(state, fromChecksumHexAddress) { + let isNoteToTraderSupported = false; + if (state.metamask.custodyAccountDetails?.[fromChecksumHexAddress]) { + const { custodianName } = + state.metamask.custodyAccountDetails[fromChecksumHexAddress]; + + isNoteToTraderSupported = state.metamask.mmiConfiguration?.custodians?.find( + (custodian) => custodian.name === custodianName, + )?.isNoteToTraderSupported; + } + return isNoteToTraderSupported; +} From cdaa21b3cbcbe9834d8230a1a58a42d7ba9e9457 Mon Sep 17 00:00:00 2001 From: Dhruv <79097544+dhruvv173@users.noreply.github.com> Date: Tue, 30 May 2023 04:46:11 +0530 Subject: [PATCH 004/160] Changes to Popover folder (#19245) --- .../popover/popover.stories.tsx | 70 +++++++++---------- .../component-library/popover/popover.tsx | 4 +- 2 files changed, 37 insertions(+), 37 deletions(-) diff --git a/ui/components/component-library/popover/popover.stories.tsx b/ui/components/component-library/popover/popover.stories.tsx index 776b13737..ca297daf8 100644 --- a/ui/components/component-library/popover/popover.stories.tsx +++ b/ui/components/component-library/popover/popover.stories.tsx @@ -1,12 +1,12 @@ import React, { useState, useEffect } from 'react'; -import { ComponentStory, ComponentMeta } from '@storybook/react'; +import { StoryFn, Meta } from '@storybook/react'; import Box from '../../ui/box/box'; import { AlignItems, BackgroundColor, BorderColor, Color, - DISPLAY, + Display, JustifyContent, TextAlign, } from '../../../helpers/constants/design-system'; @@ -41,9 +41,9 @@ export default { args: { children: 'Popover', }, -} as ComponentMeta; +} as Meta; -const Template: ComponentStory = (args) => { +const Template: StoryFn = (args) => { const [referenceElement, setReferenceElement] = useState(); const [isOpen, setIsOpen] = useState(true); @@ -98,7 +98,7 @@ DefaultStory.args = { hasArrow: true, }; -export const ReferenceElement: ComponentStory = (args) => { +export const ReferenceElement: StoryFn = (args) => { const [referenceElement, setReferenceElement] = useState(); const setBoxRef = (ref) => { @@ -125,7 +125,7 @@ export const ReferenceElement: ComponentStory = (args) => { ); }; -export const Children: ComponentStory = (args) => { +export const Children: StoryFn = (args) => { const [referenceElement, setReferenceElement] = useState(); const setBoxRef = (ref) => { @@ -154,7 +154,7 @@ export const Children: ComponentStory = (args) => { ); }; -export const Position: ComponentStory = (args) => { +export const Position: StoryFn = (args) => { const [referenceElement, setReferenceElement] = useState(); const [referenceAutoElement, setReferenceAutoElement] = useState(); @@ -176,7 +176,7 @@ export const Position: ComponentStory = (args) => { minHeight: '400px', }} borderColor={BorderColor.borderDefault} - display={DISPLAY.FLEX} + display={Display.Flex} justifyContent={JustifyContent.center} alignItems={AlignItems.center} marginBottom={4} @@ -185,7 +185,7 @@ export const Position: ComponentStory = (args) => { ref={setBoxRef} backgroundColor={BackgroundColor.primaryMuted} style={{ width: 400, height: 200 }} - display={DISPLAY.FLEX} + display={Display.Flex} justifyContent={JustifyContent.center} alignItems={AlignItems.center} textAlign={TextAlign.Center} @@ -316,7 +316,7 @@ export const Position: ComponentStory = (args) => { width: '200vw', height: '200vh', }} - display={DISPLAY.FLEX} + display={Display.Flex} justifyContent={JustifyContent.center} alignItems={AlignItems.center} > @@ -324,7 +324,7 @@ export const Position: ComponentStory = (args) => { ref={setRefAuto} backgroundColor={BackgroundColor.primaryMuted} style={{ width: 400, height: 200 }} - display={DISPLAY.FLEX} + display={Display.Flex} justifyContent={JustifyContent.center} alignItems={AlignItems.center} textAlign={TextAlign.Center} @@ -346,7 +346,7 @@ export const Position: ComponentStory = (args) => { ); }; -export const IsPortal: ComponentStory = (args) => { +export const IsPortal: StoryFn = (args) => { const [referenceElement, setReferenceElement] = useState(); const setBoxRef = (ref) => { @@ -384,7 +384,7 @@ export const IsPortal: ComponentStory = (args) => { ); }; -export const HasArrow: ComponentStory = (args) => { +export const HasArrow: StoryFn = (args) => { const [referenceElement, setReferenceElement] = useState(); const setBoxRef = (ref) => { @@ -419,7 +419,7 @@ export const HasArrow: ComponentStory = (args) => { ); }; -export const IsOpen: ComponentStory = (args) => { +export const IsOpen: StoryFn = (args) => { const [referenceElement, setReferenceElement] = useState(); const [isOpen, setIsOpen] = useState(true); @@ -438,7 +438,7 @@ export const IsOpen: ComponentStory = (args) => { backgroundColor={BackgroundColor.primaryMuted} style={{ width: 200, height: 200 }} onClick={handleClick} - display={DISPLAY.FLEX} + display={Display.Flex} justifyContent={JustifyContent.center} alignItems={AlignItems.center} > @@ -468,7 +468,7 @@ export const IsOpen: ComponentStory = (args) => { ); }; -export const Flip: ComponentStory = (args) => { +export const Flip: StoryFn = (args) => { const [referenceElement, setReferenceElement] = useState(); const setBoxRef = (ref) => { @@ -478,7 +478,7 @@ export const Flip: ComponentStory = (args) => { return ( @@ -486,7 +486,7 @@ export const Flip: ComponentStory = (args) => { ref={setBoxRef} backgroundColor={BackgroundColor.primaryMuted} style={{ width: 200, height: 200 }} - display={DISPLAY.FLEX} + display={Display.Flex} justifyContent={JustifyContent.center} alignItems={AlignItems.center} > @@ -515,7 +515,7 @@ export const Flip: ComponentStory = (args) => { ); }; -export const PreventOverflow: ComponentStory = (args) => { +export const PreventOverflow: StoryFn = (args) => { const [referenceElement, setReferenceElement] = useState(); const setBoxRef = (ref) => { @@ -525,7 +525,7 @@ export const PreventOverflow: ComponentStory = (args) => { return ( @@ -533,7 +533,7 @@ export const PreventOverflow: ComponentStory = (args) => { ref={setBoxRef} backgroundColor={BackgroundColor.primaryMuted} style={{ width: 200, height: 200 }} - display={DISPLAY.FLEX} + display={Display.Flex} justifyContent={JustifyContent.center} alignItems={AlignItems.center} textAlign={TextAlign.Center} @@ -563,7 +563,7 @@ export const PreventOverflow: ComponentStory = (args) => { ); }; -export const ReferenceHidden: ComponentStory = (args) => { +export const ReferenceHidden: StoryFn = (args) => { const [referenceElement, setReferenceElement] = useState(); const setBoxRef = (ref) => { @@ -573,14 +573,14 @@ export const ReferenceHidden: ComponentStory = (args) => { return ( = (args) => { ); }; -export const MatchWidth: ComponentStory = (args) => { +export const MatchWidth: StoryFn = (args) => { const [referenceElement, setReferenceElement] = useState(); const setBoxRef = (ref) => { @@ -640,7 +640,7 @@ export const MatchWidth: ComponentStory = (args) => { ); }; -export const Role: ComponentStory = (args) => { +export const Role: StoryFn = (args) => { const [referenceElement, setReferenceElement] = useState(); const setBoxRef = (ref) => { @@ -650,14 +650,14 @@ export const Role: ComponentStory = (args) => { return ( = (args) => { ); }; -export const Offset: ComponentStory = (args) => { +export const Offset: StoryFn = (args) => { const [referenceElement, setReferenceElement] = useState(); const setBoxRef = (ref) => { @@ -696,14 +696,14 @@ export const Offset: ComponentStory = (args) => { return ( = (args) => { ); }; -export const onPressEscKey: ComponentStory = (args) => { +export const onPressEscKey: StoryFn = (args) => { const [referenceElement, setReferenceElement] = useState(); const [isOpen, setIsOpen] = useState(false); @@ -768,7 +768,7 @@ export const onPressEscKey: ComponentStory = (args) => { ); }; -export const WithPopoverHeader: ComponentStory = (args) => { +export const WithPopoverHeader: StoryFn = (args) => { const [refTitleElement, setRefTitleElement] = useState(); const [isOpen, setIsOpen] = useState(true); @@ -809,7 +809,7 @@ export const WithPopoverHeader: ComponentStory = (args) => { ); }; -export const MouseEventDemo: ComponentStory = (args) => { +export const MouseEventDemo: StoryFn = (args) => { const [referenceElement, setReferenceElement] = useState(); const [isOpen, setIsOpen] = useState(false); @@ -846,7 +846,7 @@ export const MouseEventDemo: ComponentStory = (args) => { ); }; -export const OnFocusBlur: ComponentStory = (args) => { +export const OnFocusBlur: StoryFn = (args) => { const [referenceElement, setReferenceElement] = useState(); const [isOpen, setIsOpen] = useState(false); diff --git a/ui/components/component-library/popover/popover.tsx b/ui/components/component-library/popover/popover.tsx index fb35f7401..992f48f75 100644 --- a/ui/components/component-library/popover/popover.tsx +++ b/ui/components/component-library/popover/popover.tsx @@ -7,7 +7,7 @@ import { BackgroundColor, BorderColor, BorderRadius, - DISPLAY, + Display, JustifyContent, } from '../../../helpers/constants/design-system'; import Box from '../../ui/box/box'; @@ -112,7 +112,7 @@ export const Popover = ({ borderColor={BorderColor.borderMuted} className={classnames('mm-popover__arrow')} ref={setArrowElement} - display={DISPLAY.FLEX} + display={Display.Flex} justifyContent={JustifyContent.center} alignItems={AlignItems.center} style={styles.arrow} From f2356b29a5b8d1e51d614fceabed35d8ad7a1a4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ant=C3=B3nio=20Regadas?= Date: Tue, 30 May 2023 13:08:07 +0100 Subject: [PATCH 005/160] updates values (#19336) --- coverage-targets.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/coverage-targets.js b/coverage-targets.js index bc651cd24..631a8b6e7 100644 --- a/coverage-targets.js +++ b/coverage-targets.js @@ -6,10 +6,10 @@ // subset of files to check against these targets. module.exports = { global: { - lines: 70.94, - branches: 59.11, - statements: 70.38, - functions: 63.65, + lines: 70.85, + branches: 59.07, + statements: 70.3, + functions: 63.52, }, transforms: { branches: 100, From dfafdbb6bda8c86eae0b4c665707ff2477e99a7b Mon Sep 17 00:00:00 2001 From: legobeat <109787230+legobeat@users.noreply.github.com> Date: Tue, 30 May 2023 12:39:38 +0000 Subject: [PATCH 006/160] =?UTF-8?q?Revert=20"[MMI]=C2=A0Add=20confirm-tran?= =?UTF-8?q?saction-base=20code=20fences=20(#18795)"=20(#19328)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 97a983418290cd97f2176ffda82887f053f1d8e9. Co-authored-by: António Regadas --- lavamoat/browserify/beta/policy.json | 103 -------- lavamoat/browserify/desktop/policy.json | 103 -------- lavamoat/browserify/flask/policy.json | 103 -------- lavamoat/browserify/main/policy.json | 103 -------- .../confirm-transaction-base.component.js | 236 ++++++------------ .../confirm-transaction-base.container.js | 88 ++----- ui/selectors/institutional/selectors.js | 13 - 7 files changed, 90 insertions(+), 659 deletions(-) diff --git a/lavamoat/browserify/beta/policy.json b/lavamoat/browserify/beta/policy.json index 316c0bb86..f818bbd0e 100644 --- a/lavamoat/browserify/beta/policy.json +++ b/lavamoat/browserify/beta/policy.json @@ -783,109 +783,6 @@ "@babel/runtime": true } }, - "@metamask-institutional/extension": { - "globals": { - "console.log": true, - "fetch": true - }, - "packages": { - "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask-institutional/extension>@metamask-institutional/custody-controller": true, - "@metamask-institutional/extension>@metamask-institutional/sdk": true, - "@metamask-institutional/extension>@metamask-institutional/types": true - } - }, - "@metamask-institutional/extension>@metamask-institutional/custody-controller": { - "packages": { - "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask-institutional/extension>@metamask-institutional/custody-keyring": true, - "@metamask/obs-store": true - } - }, - "@metamask-institutional/extension>@metamask-institutional/custody-keyring": { - "globals": { - "console.log": true, - "console.warn": true - }, - "packages": { - "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask-institutional/extension>@metamask-institutional/custody-keyring>@metamask-institutional/configuration-client": true, - "@metamask-institutional/extension>@metamask-institutional/sdk": true, - "@metamask-institutional/extension>@metamask-institutional/types": true, - "@metamask/obs-store": true, - "browserify>crypto-browserify": true, - "browserify>events": true, - "gulp-sass>lodash.clonedeep": true - } - }, - "@metamask-institutional/extension>@metamask-institutional/custody-keyring>@metamask-institutional/configuration-client": { - "globals": { - "console.log": true, - "fetch": true - } - }, - "@metamask-institutional/extension>@metamask-institutional/sdk": { - "globals": { - "URLSearchParams": true, - "console.debug": true, - "console.log": true, - "console.warn": true, - "fetch": true - }, - "packages": { - "@metamask-institutional/extension>@metamask-institutional/sdk>@metamask-institutional/simplecache": true, - "@metamask-institutional/extension>@metamask-institutional/sdk>bignumber.js": true, - "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken": true, - "browserify>crypto-browserify": true, - "browserify>events": true - } - }, - "@metamask-institutional/extension>@metamask-institutional/sdk>bignumber.js": { - "globals": { - "crypto": true, - "define": true - } - }, - "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken": { - "packages": { - "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws": true, - "browserify>buffer": true, - "browserify>crypto-browserify": true, - "browserify>process": true, - "lodash": true, - "mocha>ms": true, - "semver": true - } - }, - "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws": { - "packages": { - "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws>jwa": true, - "browserify>buffer": true, - "browserify>process": true, - "browserify>stream-browserify": true, - "browserify>util": true, - "ethereumjs-wallet>safe-buffer": true - } - }, - "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws>jwa": { - "packages": { - "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws>jwa>buffer-equal-constant-time": true, - "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws>jwa>ecdsa-sig-formatter": true, - "browserify>crypto-browserify": true, - "browserify>util": true, - "ethereumjs-wallet>safe-buffer": true - } - }, - "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws>jwa>buffer-equal-constant-time": { - "packages": { - "browserify>buffer": true - } - }, - "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws>jwa>ecdsa-sig-formatter": { - "packages": { - "ethereumjs-wallet>safe-buffer": true - } - }, "@metamask/address-book-controller": { "packages": { "@metamask/base-controller": true, diff --git a/lavamoat/browserify/desktop/policy.json b/lavamoat/browserify/desktop/policy.json index eb47cfbee..5236b5b26 100644 --- a/lavamoat/browserify/desktop/policy.json +++ b/lavamoat/browserify/desktop/policy.json @@ -783,109 +783,6 @@ "@babel/runtime": true } }, - "@metamask-institutional/extension": { - "globals": { - "console.log": true, - "fetch": true - }, - "packages": { - "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask-institutional/extension>@metamask-institutional/custody-controller": true, - "@metamask-institutional/extension>@metamask-institutional/sdk": true, - "@metamask-institutional/extension>@metamask-institutional/types": true - } - }, - "@metamask-institutional/extension>@metamask-institutional/custody-controller": { - "packages": { - "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask-institutional/extension>@metamask-institutional/custody-keyring": true, - "@metamask/obs-store": true - } - }, - "@metamask-institutional/extension>@metamask-institutional/custody-keyring": { - "globals": { - "console.log": true, - "console.warn": true - }, - "packages": { - "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask-institutional/extension>@metamask-institutional/custody-keyring>@metamask-institutional/configuration-client": true, - "@metamask-institutional/extension>@metamask-institutional/sdk": true, - "@metamask-institutional/extension>@metamask-institutional/types": true, - "@metamask/obs-store": true, - "browserify>crypto-browserify": true, - "browserify>events": true, - "gulp-sass>lodash.clonedeep": true - } - }, - "@metamask-institutional/extension>@metamask-institutional/custody-keyring>@metamask-institutional/configuration-client": { - "globals": { - "console.log": true, - "fetch": true - } - }, - "@metamask-institutional/extension>@metamask-institutional/sdk": { - "globals": { - "URLSearchParams": true, - "console.debug": true, - "console.log": true, - "console.warn": true, - "fetch": true - }, - "packages": { - "@metamask-institutional/extension>@metamask-institutional/sdk>@metamask-institutional/simplecache": true, - "@metamask-institutional/extension>@metamask-institutional/sdk>bignumber.js": true, - "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken": true, - "browserify>crypto-browserify": true, - "browserify>events": true - } - }, - "@metamask-institutional/extension>@metamask-institutional/sdk>bignumber.js": { - "globals": { - "crypto": true, - "define": true - } - }, - "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken": { - "packages": { - "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws": true, - "browserify>buffer": true, - "browserify>crypto-browserify": true, - "browserify>process": true, - "lodash": true, - "mocha>ms": true, - "semver": true - } - }, - "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws": { - "packages": { - "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws>jwa": true, - "browserify>buffer": true, - "browserify>process": true, - "browserify>stream-browserify": true, - "browserify>util": true, - "ethereumjs-wallet>safe-buffer": true - } - }, - "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws>jwa": { - "packages": { - "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws>jwa>buffer-equal-constant-time": true, - "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws>jwa>ecdsa-sig-formatter": true, - "browserify>crypto-browserify": true, - "browserify>util": true, - "ethereumjs-wallet>safe-buffer": true - } - }, - "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws>jwa>buffer-equal-constant-time": { - "packages": { - "browserify>buffer": true - } - }, - "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws>jwa>ecdsa-sig-formatter": { - "packages": { - "ethereumjs-wallet>safe-buffer": true - } - }, "@metamask/address-book-controller": { "packages": { "@metamask/base-controller": true, diff --git a/lavamoat/browserify/flask/policy.json b/lavamoat/browserify/flask/policy.json index eb47cfbee..5236b5b26 100644 --- a/lavamoat/browserify/flask/policy.json +++ b/lavamoat/browserify/flask/policy.json @@ -783,109 +783,6 @@ "@babel/runtime": true } }, - "@metamask-institutional/extension": { - "globals": { - "console.log": true, - "fetch": true - }, - "packages": { - "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask-institutional/extension>@metamask-institutional/custody-controller": true, - "@metamask-institutional/extension>@metamask-institutional/sdk": true, - "@metamask-institutional/extension>@metamask-institutional/types": true - } - }, - "@metamask-institutional/extension>@metamask-institutional/custody-controller": { - "packages": { - "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask-institutional/extension>@metamask-institutional/custody-keyring": true, - "@metamask/obs-store": true - } - }, - "@metamask-institutional/extension>@metamask-institutional/custody-keyring": { - "globals": { - "console.log": true, - "console.warn": true - }, - "packages": { - "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask-institutional/extension>@metamask-institutional/custody-keyring>@metamask-institutional/configuration-client": true, - "@metamask-institutional/extension>@metamask-institutional/sdk": true, - "@metamask-institutional/extension>@metamask-institutional/types": true, - "@metamask/obs-store": true, - "browserify>crypto-browserify": true, - "browserify>events": true, - "gulp-sass>lodash.clonedeep": true - } - }, - "@metamask-institutional/extension>@metamask-institutional/custody-keyring>@metamask-institutional/configuration-client": { - "globals": { - "console.log": true, - "fetch": true - } - }, - "@metamask-institutional/extension>@metamask-institutional/sdk": { - "globals": { - "URLSearchParams": true, - "console.debug": true, - "console.log": true, - "console.warn": true, - "fetch": true - }, - "packages": { - "@metamask-institutional/extension>@metamask-institutional/sdk>@metamask-institutional/simplecache": true, - "@metamask-institutional/extension>@metamask-institutional/sdk>bignumber.js": true, - "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken": true, - "browserify>crypto-browserify": true, - "browserify>events": true - } - }, - "@metamask-institutional/extension>@metamask-institutional/sdk>bignumber.js": { - "globals": { - "crypto": true, - "define": true - } - }, - "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken": { - "packages": { - "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws": true, - "browserify>buffer": true, - "browserify>crypto-browserify": true, - "browserify>process": true, - "lodash": true, - "mocha>ms": true, - "semver": true - } - }, - "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws": { - "packages": { - "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws>jwa": true, - "browserify>buffer": true, - "browserify>process": true, - "browserify>stream-browserify": true, - "browserify>util": true, - "ethereumjs-wallet>safe-buffer": true - } - }, - "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws>jwa": { - "packages": { - "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws>jwa>buffer-equal-constant-time": true, - "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws>jwa>ecdsa-sig-formatter": true, - "browserify>crypto-browserify": true, - "browserify>util": true, - "ethereumjs-wallet>safe-buffer": true - } - }, - "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws>jwa>buffer-equal-constant-time": { - "packages": { - "browserify>buffer": true - } - }, - "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws>jwa>ecdsa-sig-formatter": { - "packages": { - "ethereumjs-wallet>safe-buffer": true - } - }, "@metamask/address-book-controller": { "packages": { "@metamask/base-controller": true, diff --git a/lavamoat/browserify/main/policy.json b/lavamoat/browserify/main/policy.json index 316c0bb86..f818bbd0e 100644 --- a/lavamoat/browserify/main/policy.json +++ b/lavamoat/browserify/main/policy.json @@ -783,109 +783,6 @@ "@babel/runtime": true } }, - "@metamask-institutional/extension": { - "globals": { - "console.log": true, - "fetch": true - }, - "packages": { - "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask-institutional/extension>@metamask-institutional/custody-controller": true, - "@metamask-institutional/extension>@metamask-institutional/sdk": true, - "@metamask-institutional/extension>@metamask-institutional/types": true - } - }, - "@metamask-institutional/extension>@metamask-institutional/custody-controller": { - "packages": { - "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask-institutional/extension>@metamask-institutional/custody-keyring": true, - "@metamask/obs-store": true - } - }, - "@metamask-institutional/extension>@metamask-institutional/custody-keyring": { - "globals": { - "console.log": true, - "console.warn": true - }, - "packages": { - "@ethereumjs/tx>@ethereumjs/util": true, - "@metamask-institutional/extension>@metamask-institutional/custody-keyring>@metamask-institutional/configuration-client": true, - "@metamask-institutional/extension>@metamask-institutional/sdk": true, - "@metamask-institutional/extension>@metamask-institutional/types": true, - "@metamask/obs-store": true, - "browserify>crypto-browserify": true, - "browserify>events": true, - "gulp-sass>lodash.clonedeep": true - } - }, - "@metamask-institutional/extension>@metamask-institutional/custody-keyring>@metamask-institutional/configuration-client": { - "globals": { - "console.log": true, - "fetch": true - } - }, - "@metamask-institutional/extension>@metamask-institutional/sdk": { - "globals": { - "URLSearchParams": true, - "console.debug": true, - "console.log": true, - "console.warn": true, - "fetch": true - }, - "packages": { - "@metamask-institutional/extension>@metamask-institutional/sdk>@metamask-institutional/simplecache": true, - "@metamask-institutional/extension>@metamask-institutional/sdk>bignumber.js": true, - "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken": true, - "browserify>crypto-browserify": true, - "browserify>events": true - } - }, - "@metamask-institutional/extension>@metamask-institutional/sdk>bignumber.js": { - "globals": { - "crypto": true, - "define": true - } - }, - "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken": { - "packages": { - "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws": true, - "browserify>buffer": true, - "browserify>crypto-browserify": true, - "browserify>process": true, - "lodash": true, - "mocha>ms": true, - "semver": true - } - }, - "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws": { - "packages": { - "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws>jwa": true, - "browserify>buffer": true, - "browserify>process": true, - "browserify>stream-browserify": true, - "browserify>util": true, - "ethereumjs-wallet>safe-buffer": true - } - }, - "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws>jwa": { - "packages": { - "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws>jwa>buffer-equal-constant-time": true, - "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws>jwa>ecdsa-sig-formatter": true, - "browserify>crypto-browserify": true, - "browserify>util": true, - "ethereumjs-wallet>safe-buffer": true - } - }, - "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws>jwa>buffer-equal-constant-time": { - "packages": { - "browserify>buffer": true - } - }, - "@metamask-institutional/extension>@metamask-institutional/sdk>jsonwebtoken>jws>jwa>ecdsa-sig-formatter": { - "packages": { - "ethereumjs-wallet>safe-buffer": true - } - }, "@metamask/address-book-controller": { "packages": { "@metamask/base-controller": true, diff --git a/ui/pages/confirm-transaction-base/confirm-transaction-base.component.js b/ui/pages/confirm-transaction-base/confirm-transaction-base.component.js index 850b2e490..6934f0b04 100644 --- a/ui/pages/confirm-transaction-base/confirm-transaction-base.component.js +++ b/ui/pages/confirm-transaction-base/confirm-transaction-base.component.js @@ -133,15 +133,13 @@ export default class ConfirmTransactionBase extends Component { hardwareWalletRequiresConnection: PropTypes.bool, isMultiLayerFeeNetwork: PropTypes.bool, isBuyableChain: PropTypes.bool, + ///: BEGIN:ONLY_INCLUDE_IN(build-mmi) + accountType: PropTypes.string, + isNoteToTraderSupported: PropTypes.bool, + ///: END:ONLY_INCLUDE_IN isApprovalOrRejection: PropTypes.bool, assetStandard: PropTypes.string, useCurrencyRateCheck: PropTypes.bool, - isNotification: PropTypes.bool, - accountType: PropTypes.string, - setWaitForConfirmDeepLinkDialog: PropTypes.func, - showTransactionsFailedModal: PropTypes.func, - showCustodianDeepLink: PropTypes.func, - isNoteToTraderSupported: PropTypes.bool, }; state = { @@ -595,81 +593,36 @@ export default class ConfirmTransactionBase extends Component { } handleSubmit() { - let submit = this.handleMainSubmit.bind(this); + const { + sendTransaction, + txData, + history, + mostRecentOverviewPage, + updateCustomNonce, + maxFeePerGas, + customTokenAmount, + dappProposedTokenAmount, + currentTokenBalance, + maxPriorityFeePerGas, + baseFeePerGas, + methodData, + addToAddressBookIfNew, + toAccounts, + toAddress, + ///: BEGIN:ONLY_INCLUDE_IN(build-mmi) + accountType, + isNoteToTraderSupported, + ///: END:ONLY_INCLUDE_IN + } = this.props; + const { + submitting, + ///: BEGIN:ONLY_INCLUDE_IN(build-mmi) + noteText, + ///: END:ONLY_INCLUDE_IN + } = this.state; + const { name } = methodData; ///: BEGIN:ONLY_INCLUDE_IN(build-mmi) - submit = this.handleMMISubmit.bind(this); - ///: END:ONLY_INCLUDE_IN - - submit(); - } - - handleMainSubmit() { - const { - sendTransaction, - txData, - history, - mostRecentOverviewPage, - updateCustomNonce, - } = this.props; - - this.updateTxData(); - - this.setState( - { - submitting: true, - submitError: null, - }, - () => { - this._removeBeforeUnload(); - - sendTransaction(txData) - .then(() => { - if (!this._isMounted) { - return; - } - - this.setState( - { - submitting: false, - }, - () => { - history.push(mostRecentOverviewPage); - updateCustomNonce(''); - }, - ); - }) - .catch((error) => { - if (!this._isMounted) { - return; - } - this.setState({ - submitting: false, - submitError: error.message, - }); - updateCustomNonce(''); - }); - }, - ); - } - - handleMMISubmit() { - const { - sendTransaction, - txData, - history, - mostRecentOverviewPage, - updateCustomNonce, - unapprovedTxCount, - accountType, - isNotification, - setWaitForConfirmDeepLinkDialog, - showTransactionsFailedModal, - fromAddress, - isNoteToTraderSupported, - } = this.props; - const { noteText } = this.state; - if (accountType === 'custody') { txData.custodyStatus = 'created'; @@ -679,92 +632,7 @@ export default class ConfirmTransactionBase extends Component { }; } } - - this.updateTxData(); - - this.setState( - { - submitting: true, - submitError: null, - }, - () => { - this._removeBeforeUnload(); - - if (txData.custodyStatus) { - setWaitForConfirmDeepLinkDialog(true); - } - - sendTransaction(txData) - .then(() => { - if (!this._isMounted) { - return; - } - - if (txData.custodyStatus) { - this.props.showCustodianDeepLink({ - fromAddress, - closeNotification: isNotification && unapprovedTxCount === 1, - txId: txData.id, - onDeepLinkFetched: () => { - this.context.trackEvent({ - category: 'MMI', - event: 'Show deeplink for transaction', - }); - }, - onDeepLinkShown: () => { - this.props.clearConfirmTransaction(); - this.setState({ submitting: false }, () => { - history.push(mostRecentOverviewPage); - updateCustomNonce(''); - }); - }, - }); - } else { - this.setState( - { - submitting: false, - }, - () => { - history.push(mostRecentOverviewPage); - updateCustomNonce(''); - }, - ); - } - }) - .catch((error) => { - if (!this._isMounted) { - return; - } - - showTransactionsFailedModal(error.message, isNotification); - - this.setState({ - submitting: false, - submitError: error.message, - }); - setWaitForConfirmDeepLinkDialog(true); - updateCustomNonce(''); - }); - }, - ); - } - - updateTxData() { - const { - txData, - maxFeePerGas, - customTokenAmount, - dappProposedTokenAmount, - currentTokenBalance, - maxPriorityFeePerGas, - baseFeePerGas, - addToAddressBookIfNew, - toAccounts, - toAddress, - methodData, - } = this.props; - const { submitting } = this.state; - const { name } = methodData; + ///: END:ONLY_INCLUDE_IN if (txData.type === TransactionType.simpleSend) { addToAddressBookIfNew(toAddress, toAccounts); @@ -810,6 +678,44 @@ export default class ConfirmTransactionBase extends Component { maxPriorityFeePerGas, }; } + + this.setState( + { + submitting: true, + submitError: null, + }, + () => { + this._removeBeforeUnload(); + + sendTransaction(txData) + .then(() => { + if (!this._isMounted) { + return; + } + + this.setState( + { + submitting: false, + }, + () => { + history.push(mostRecentOverviewPage); + updateCustomNonce(''); + }, + ); + }) + .catch((error) => { + if (!this._isMounted) { + return; + } + + this.setState({ + submitting: false, + submitError: error.message, + }); + updateCustomNonce(''); + }); + }, + ); } handleSetApprovalForAll() { diff --git a/ui/pages/confirm-transaction-base/confirm-transaction-base.container.js b/ui/pages/confirm-transaction-base/confirm-transaction-base.container.js index 9514ccea6..aba96a1d2 100644 --- a/ui/pages/confirm-transaction-base/confirm-transaction-base.container.js +++ b/ui/pages/confirm-transaction-base/confirm-transaction-base.container.js @@ -1,10 +1,7 @@ import { connect } from 'react-redux'; import { compose } from 'redux'; import { withRouter } from 'react-router-dom'; -///: BEGIN:ONLY_INCLUDE_IN(build-mmi) -import { showCustodianDeepLink } from '@metamask-institutional/extension'; -import { mmiActionsFactory } from '../../store/institutional/institution-background'; -///: END:ONLY_INCLUDE_IN + import { clearConfirmTransaction } from '../../ducks/confirm-transaction/confirm-transaction.duck'; import { @@ -51,12 +48,7 @@ import { getSendToAccounts, getProviderConfig, } from '../../ducks/metamask/metamask'; -import { - addHexPrefix, - ///: BEGIN:ONLY_INCLUDE_IN(build-mmi) - getEnvironmentType, - ///: END:ONLY_INCLUDE_IN -} from '../../../app/scripts/lib/util'; +import { addHexPrefix } from '../../../app/scripts/lib/util'; import { parseStandardTokenTransactionData, @@ -71,11 +63,8 @@ import { import { getGasLoadingAnimationIsShowing } from '../../ducks/app/app'; import { isLegacyTransaction } from '../../helpers/utils/transactions.util'; import { CUSTOM_GAS_ESTIMATE } from '../../../shared/constants/gas'; - ///: BEGIN:ONLY_INCLUDE_IN(build-mmi) import { getAccountType } from '../../selectors/selectors'; -import { ENVIRONMENT_TYPE_NOTIFICATION } from '../../../shared/constants/app'; -import { getIsNoteToTraderSupported } from '../../selectors/institutional/selectors'; ///: END:ONLY_INCLUDE_IN import { TransactionStatus, @@ -111,11 +100,6 @@ const mapStateToProps = (state, ownProps) => { const { id: paramsTransactionId } = params; const isMainnet = getIsMainnet(state); - ///: BEGIN:ONLY_INCLUDE_IN(build-mmi) - const envType = getEnvironmentType(); - const isNotification = envType === ENVIRONMENT_TYPE_NOTIFICATION; - ///: END:ONLY_INCLUDE_IN - const isGasEstimatesLoading = getIsGasEstimatesLoading(state); const gasLoadingAnimationIsShowing = getGasLoadingAnimationIsShowing(state); const isBuyableChain = getIsBuyableChain(state); @@ -215,20 +199,29 @@ const mapStateToProps = (state, ownProps) => { txParamsAreDappSuggested(fullTxData); const fromAddressIsLedger = isAddressLedger(state, fromAddress); const nativeCurrency = getNativeCurrency(state); - ///: BEGIN:ONLY_INCLUDE_IN(build-mmi) - const accountType = getAccountType(state, fromAddress); - const fromChecksumHexAddress = toChecksumHexAddress(fromAddress); - const isNoteToTraderSupported = getIsNoteToTraderSupported( - state, - fromChecksumHexAddress, - ); - ///: END:ONLY_INCLUDE_IN const hardwareWalletRequiresConnection = doesAddressRequireLedgerHidConnection(state, fromAddress); const isMultiLayerFeeNetwork = getIsMultiLayerFeeNetwork(state); + ///: BEGIN:ONLY_INCLUDE_IN(build-mmi) + const accountType = getAccountType(state); + + const fromChecksumHexAddress = toChecksumHexAddress(fromAddress); + let isNoteToTraderSupported = false; + if ( + state.metamask.custodyAccountDetails && + state.metamask.custodyAccountDetails[fromChecksumHexAddress] + ) { + const { custodianName } = + state.metamask.custodyAccountDetails[fromChecksumHexAddress]; + isNoteToTraderSupported = state.metamask.mmiConfiguration?.custodians?.find( + (custodian) => custodian.name === custodianName, + )?.isNoteToTraderSupported; + } + ///: END:ONLY_INCLUDE_IN + return { balance, fromAddress, @@ -282,15 +275,11 @@ const mapStateToProps = (state, ownProps) => { ///: BEGIN:ONLY_INCLUDE_IN(build-mmi) accountType, isNoteToTraderSupported, - isNotification, ///: END:ONLY_INCLUDE_IN }; }; export const mapDispatchToProps = (dispatch) => { - ///: BEGIN:ONLY_INCLUDE_IN(build-mmi) - const mmiActions = mmiActionsFactory(); - ///: END:ONLY_INCLUDE_IN return { tryReverseResolveAddress: (address) => { return dispatch(tryReverseResolveAddress(address)); @@ -327,45 +316,6 @@ export const mapDispatchToProps = (dispatch) => { dispatch(addToAddressBook(hexPrefixedAddress, nickname)); } }, - ///: BEGIN:ONLY_INCLUDE_IN(build-mmi) - getCustodianConfirmDeepLink: (id) => - dispatch(mmiActions.getCustodianConfirmDeepLink(id)), - showCustodyConfirmLink: ({ link, address, closeNotification, custodyId }) => - dispatch( - mmiActions.showCustodyConfirmLink({ - link, - address, - closeNotification, - custodyId, - }), - ), - showTransactionsFailedModal: (errorMessage, closeNotification) => - dispatch( - showModal({ - name: 'TRANSACTION_FAILED', - errorMessage, - closeNotification, - }), - ), - showCustodianDeepLink: ({ - txId, - fromAddress, - closeNotification, - onDeepLinkFetched, - onDeepLinkShown, - }) => - showCustodianDeepLink({ - dispatch, - mmiActions, - txId, - fromAddress, - closeNotification, - onDeepLinkFetched, - onDeepLinkShown, - }), - setWaitForConfirmDeepLinkDialog: (wait) => - dispatch(mmiActions.setWaitForConfirmDeepLinkDialog(wait)), - ///: END:ONLY_INCLUDE_IN }; }; diff --git a/ui/selectors/institutional/selectors.js b/ui/selectors/institutional/selectors.js index d869b7f23..f08295453 100644 --- a/ui/selectors/institutional/selectors.js +++ b/ui/selectors/institutional/selectors.js @@ -78,16 +78,3 @@ export function getMMIConfiguration(state) { export function getInteractiveReplacementToken(state) { return state.metamask.interactiveReplacementToken || {}; } - -export function getIsNoteToTraderSupported(state, fromChecksumHexAddress) { - let isNoteToTraderSupported = false; - if (state.metamask.custodyAccountDetails?.[fromChecksumHexAddress]) { - const { custodianName } = - state.metamask.custodyAccountDetails[fromChecksumHexAddress]; - - isNoteToTraderSupported = state.metamask.mmiConfiguration?.custodians?.find( - (custodian) => custodian.name === custodianName, - )?.isNoteToTraderSupported; - } - return isNoteToTraderSupported; -} From 8dc6bf1111161772939c7b439cb4ff127736f910 Mon Sep 17 00:00:00 2001 From: Danica Shen Date: Tue, 30 May 2023 13:44:56 +0100 Subject: [PATCH 007/160] feature(17901): fix address-book `Sends to an address book entry` e2e against MV3 build (#19330) * feature(17901): fix address-book `Sends to an address book entry` e2e against MV3 build * feature(17901): add balance guide for send-eth e2e as well --------- Co-authored-by: legobeat <109787230+legobeat@users.noreply.github.com> --- test/e2e/helpers.js | 20 +++++++++++++++++++ test/e2e/tests/address-book.spec.js | 10 ++++++++-- test/e2e/tests/contract-interactions.spec.js | 15 +++++++------- test/e2e/tests/metamask-responsive-ui.spec.js | 7 ++----- test/e2e/tests/navigate-transactions.spec.js | 13 ++++++------ test/e2e/tests/onboarding.spec.js | 7 ++----- test/e2e/tests/send-eth.spec.js | 11 ++++++++-- test/e2e/tests/send-hex-address.spec.js | 19 ++++++++---------- test/e2e/tests/simple-send.spec.js | 5 ++++- 9 files changed, 67 insertions(+), 40 deletions(-) diff --git a/test/e2e/helpers.js b/test/e2e/helpers.js index aaa2d8b16..ed062a98e 100644 --- a/test/e2e/helpers.js +++ b/test/e2e/helpers.js @@ -511,6 +511,24 @@ const TEST_SEED_PHRASE = const TEST_SEED_PHRASE_TWO = 'phrase upgrade clock rough situate wedding elder clever doctor stamp excess tent'; +// Usually happens when onboarded to make sure the state is retrieved from metamaskState properly +const assertAccountBalanceForDOM = async (driver, ganacheServer) => { + const balance = await ganacheServer.getBalance(); + const balanceElement = await driver.findElement( + '[data-testid="eth-overview__primary-currency"]', + ); + assert.equal(`${balance}\nETH`, await balanceElement.getText()); +}; + +// Usually happens after txn is made +const locateAccountBalanceDOM = async (driver, ganacheServer) => { + const balance = await ganacheServer.getBalance(); + await driver.waitForSelector({ + css: '[data-testid="eth-overview__primary-currency"]', + text: `${balance} ETH`, + }); +}; + module.exports = { DAPP_URL, DAPP_ONE_URL, @@ -537,4 +555,6 @@ module.exports = { defaultGanacheOptions, sendTransaction, findAnotherAccountFromAccountList, + assertAccountBalanceForDOM, + locateAccountBalanceDOM, }; diff --git a/test/e2e/tests/address-book.spec.js b/test/e2e/tests/address-book.spec.js index af1214521..b1c40f409 100644 --- a/test/e2e/tests/address-book.spec.js +++ b/test/e2e/tests/address-book.spec.js @@ -1,5 +1,9 @@ const { strict: assert } = require('assert'); -const { convertToHexValue, withFixtures } = require('../helpers'); +const { + convertToHexValue, + withFixtures, + assertAccountBalanceForDOM, +} = require('../helpers'); const FixtureBuilder = require('../fixture-builder'); describe('Address Book', function () { @@ -12,6 +16,7 @@ describe('Address Book', function () { }, ], }; + it('Sends to an address book entry', async function () { await withFixtures( { @@ -33,11 +38,12 @@ describe('Address Book', function () { ganacheOptions, title: this.test.title, }, - async ({ driver }) => { + async ({ driver, ganacheServer }) => { await driver.navigate(); await driver.fill('#password', 'correct horse battery staple'); await driver.press('#password', driver.Key.ENTER); + await assertAccountBalanceForDOM(driver, ganacheServer); await driver.clickElement('[data-testid="eth-overview-send"]'); const recipientRowTitle = await driver.findElement( '.send__select-recipient-wrapper__group-item__title', diff --git a/test/e2e/tests/contract-interactions.spec.js b/test/e2e/tests/contract-interactions.spec.js index 780b21c5f..02e95d7bd 100644 --- a/test/e2e/tests/contract-interactions.spec.js +++ b/test/e2e/tests/contract-interactions.spec.js @@ -1,5 +1,9 @@ -const { strict: assert } = require('assert'); -const { convertToHexValue, withFixtures, openDapp } = require('../helpers'); +const { + convertToHexValue, + withFixtures, + openDapp, + locateAccountBalanceDOM, +} = require('../helpers'); const { SMART_CONTRACTS } = require('../seeder/smart-contracts'); const FixtureBuilder = require('../fixture-builder'); @@ -89,12 +93,7 @@ describe('Deploy contract and call contract methods', function () { // renders the correct ETH balance await driver.switchToWindow(extension); - const balance = await ganacheServer.getBalance(); - const balanceElement = await driver.waitForSelector({ - css: '[data-testid="eth-overview__primary-currency"]', - text: balance, - }); - assert.equal(`${balance}\nETH`, await balanceElement.getText()); + await locateAccountBalanceDOM(driver, ganacheServer); }, ); }); diff --git a/test/e2e/tests/metamask-responsive-ui.spec.js b/test/e2e/tests/metamask-responsive-ui.spec.js index fe2ae4c1a..5d69b8c7c 100644 --- a/test/e2e/tests/metamask-responsive-ui.spec.js +++ b/test/e2e/tests/metamask-responsive-ui.spec.js @@ -3,6 +3,7 @@ const { TEST_SEED_PHRASE_TWO, convertToHexValue, withFixtures, + assertAccountBalanceForDOM, } = require('../helpers'); const FixtureBuilder = require('../fixture-builder'); @@ -108,11 +109,7 @@ describe('MetaMask Responsive UI', function () { await driver.press('#confirm-password', driver.Key.ENTER); // balance renders - const balance = await ganacheServer.getBalance(); - await driver.waitForSelector({ - css: '[data-testid="eth-overview__primary-currency"]', - text: `${balance} ETH`, - }); + await assertAccountBalanceForDOM(driver, ganacheServer); }, ); }); diff --git a/test/e2e/tests/navigate-transactions.spec.js b/test/e2e/tests/navigate-transactions.spec.js index 438ef5028..507071f4a 100644 --- a/test/e2e/tests/navigate-transactions.spec.js +++ b/test/e2e/tests/navigate-transactions.spec.js @@ -1,5 +1,10 @@ const { strict: assert } = require('assert'); -const { convertToHexValue, withFixtures, openDapp } = require('../helpers'); +const { + convertToHexValue, + withFixtures, + openDapp, + locateAccountBalanceDOM, +} = require('../helpers'); const FixtureBuilder = require('../fixture-builder'); describe('Navigate transactions', function () { @@ -227,11 +232,7 @@ describe('Navigate transactions', function () { // reject transactions await driver.clickElement({ text: 'Reject 4', tag: 'a' }); await driver.clickElement({ text: 'Reject all', tag: 'button' }); - const balance = await ganacheServer.getBalance(); - const balanceElement = await driver.findElement( - '[data-testid="eth-overview__primary-currency"]', - ); - assert.equal(`${balance}\nETH`, await balanceElement.getText()); + await locateAccountBalanceDOM(driver, ganacheServer); }, ); }); diff --git a/test/e2e/tests/onboarding.spec.js b/test/e2e/tests/onboarding.spec.js index a585d4896..e00b96a61 100644 --- a/test/e2e/tests/onboarding.spec.js +++ b/test/e2e/tests/onboarding.spec.js @@ -9,6 +9,7 @@ const { importSRPOnboardingFlow, importWrongSRPOnboardingFlow, testSRPDropdownIterations, + assertAccountBalanceForDOM, } = require('../helpers'); const FixtureBuilder = require('../fixture-builder'); @@ -304,11 +305,7 @@ describe('MetaMask onboarding', function () { ); assert.equal(await networkDisplay.getText(), networkName); - const balance = await secondaryGanacheServer.getBalance(); - const balanceElement = await driver.findElement( - '[data-testid="eth-overview__primary-currency"]', - ); - assert.equal(`${balance}\nETH`, await balanceElement.getText()); + await assertAccountBalanceForDOM(driver, secondaryGanacheServer); }, ); }); diff --git a/test/e2e/tests/send-eth.spec.js b/test/e2e/tests/send-eth.spec.js index dd2ae8650..7869e52cb 100644 --- a/test/e2e/tests/send-eth.spec.js +++ b/test/e2e/tests/send-eth.spec.js @@ -1,6 +1,11 @@ const { strict: assert } = require('assert'); const { SMART_CONTRACTS } = require('../seeder/smart-contracts'); -const { convertToHexValue, withFixtures, openDapp } = require('../helpers'); +const { + convertToHexValue, + withFixtures, + openDapp, + assertAccountBalanceForDOM, +} = require('../helpers'); const FixtureBuilder = require('../fixture-builder'); describe('Send ETH from inside MetaMask using default gas', function () { @@ -20,11 +25,13 @@ describe('Send ETH from inside MetaMask using default gas', function () { ganacheOptions, title: this.test.title, }, - async ({ driver }) => { + async ({ driver, ganacheServer }) => { await driver.navigate(); await driver.fill('#password', 'correct horse battery staple'); await driver.press('#password', driver.Key.ENTER); + await assertAccountBalanceForDOM(driver, ganacheServer); + await driver.clickElement('[data-testid="eth-overview-send"]'); await driver.fill( diff --git a/test/e2e/tests/send-hex-address.spec.js b/test/e2e/tests/send-hex-address.spec.js index c971f4f01..b1d8edfad 100644 --- a/test/e2e/tests/send-hex-address.spec.js +++ b/test/e2e/tests/send-hex-address.spec.js @@ -1,5 +1,9 @@ const { strict: assert } = require('assert'); -const { convertToHexValue, withFixtures } = require('../helpers'); +const { + convertToHexValue, + withFixtures, + assertAccountBalanceForDOM, +} = require('../helpers'); const { SMART_CONTRACTS } = require('../seeder/smart-contracts'); const FixtureBuilder = require('../fixture-builder'); @@ -133,11 +137,7 @@ describe('Send ERC20 to a 40 character hexadecimal address', function () { await driver.navigate(); await driver.fill('#password', 'correct horse battery staple'); await driver.press('#password', driver.Key.ENTER); - const balanceAfterDeployment = await ganacheServer.getBalance(); - await driver.waitForSelector({ - css: '[data-testid="eth-overview__primary-currency"]', - text: `${balanceAfterDeployment} ETH`, - }); + await assertAccountBalanceForDOM(driver, ganacheServer); // Send TST await driver.clickElement('[data-testid="home__asset-tab"]'); @@ -198,11 +198,8 @@ describe('Send ERC20 to a 40 character hexadecimal address', function () { await driver.navigate(); await driver.fill('#password', 'correct horse battery staple'); await driver.press('#password', driver.Key.ENTER); - const balanceAfterDeployment = await ganacheServer.getBalance(); - await driver.waitForSelector({ - css: '[data-testid="eth-overview__primary-currency"]', - text: `${balanceAfterDeployment} ETH`, - }); + + await assertAccountBalanceForDOM(driver, ganacheServer); // Send TST await driver.clickElement('[data-testid="home__asset-tab"]'); diff --git a/test/e2e/tests/simple-send.spec.js b/test/e2e/tests/simple-send.spec.js index b5b083ed8..9e6293b74 100644 --- a/test/e2e/tests/simple-send.spec.js +++ b/test/e2e/tests/simple-send.spec.js @@ -2,6 +2,7 @@ const { convertToHexValue, withFixtures, sendTransaction, + assertAccountBalanceForDOM, } = require('../helpers'); const FixtureBuilder = require('../fixture-builder'); @@ -22,10 +23,12 @@ describe('Simple send', function () { ganacheOptions, title: this.test.title, }, - async ({ driver }) => { + async ({ driver, ganacheServer }) => { await driver.navigate(); await driver.fill('#password', 'correct horse battery staple'); await driver.press('#password', driver.Key.ENTER); + await assertAccountBalanceForDOM(driver, ganacheServer); + await sendTransaction( driver, '0x985c30949c92df7a0bd42e0f3e3d539ece98db24', From 49f8052b157374370ac71373708933c6e639944e Mon Sep 17 00:00:00 2001 From: Danica Shen Date: Tue, 30 May 2023 14:48:43 +0100 Subject: [PATCH 008/160] feature(17901): fix failing network error and remove duplicated e2e for mv3 (#19292) * feature(17901): fix failing network error e2e for mv3 * feature(17901): remove dapp interaction for duplication --------- Co-authored-by: legobeat <109787230+legobeat@users.noreply.github.com> --- test/e2e/mv3/dapp-interactions.spec.js | 72 -------------------------- test/e2e/tests/network-error.spec.js | 9 +++- 2 files changed, 8 insertions(+), 73 deletions(-) delete mode 100644 test/e2e/mv3/dapp-interactions.spec.js diff --git a/test/e2e/mv3/dapp-interactions.spec.js b/test/e2e/mv3/dapp-interactions.spec.js deleted file mode 100644 index 96dee4d8a..000000000 --- a/test/e2e/mv3/dapp-interactions.spec.js +++ /dev/null @@ -1,72 +0,0 @@ -const { strict: assert } = require('assert'); -const { - convertToHexValue, - withFixtures, - openDapp, - SERVICE_WORKER_URL, -} = require('../helpers'); -const FixtureBuilder = require('../fixture-builder'); - -describe('MV3 - Dapp interactions', function () { - let windowHandles; - const ganacheOptions = { - accounts: [ - { - secretKey: - '0x7C9529A67102755B7E6102D6D950AC5D5863C98713805CEC576B945B15B71EAC', - balance: convertToHexValue(25000000000000000000), - }, - ], - concurrent: { port: 8546, chainId: 1338 }, - }; - it('should continue to support dapp interactions after service worker re-start', async function () { - await withFixtures( - { - dapp: true, - fixtures: new FixtureBuilder() - .withPermissionControllerConnectedToTestDapp() - .build(), - ganacheOptions: { - ...ganacheOptions, - }, - title: this.test.title, - }, - async ({ driver }) => { - await driver.navigate(); - await driver.fill('#password', 'correct horse battery staple'); - await driver.press('#password', driver.Key.ENTER); - - await openDapp(driver); - - // Terminate Service Worker - await driver.openNewPage(SERVICE_WORKER_URL); - await driver.clickElement({ - text: 'Service workers', - tag: 'button', - }); - - await driver.clickElement({ - text: 'terminate', - tag: 'span', - }); - - // Trigger Notification - windowHandles = await driver.getAllWindowHandles(); - await driver.switchToWindowWithTitle('E2E Test Dapp', windowHandles); - await driver.clickElement('#addEthereumChain'); - await driver.waitUntilXWindowHandles(4); - await driver.switchToWindowWithTitle( - 'MetaMask Notification', - windowHandles, - ); - - const notification = await driver.isElementPresent({ - text: 'Allow this site to add a network?', - tag: 'h3', - }); - - assert.ok(notification, 'Dapp action does not appear in Metamask'); - }, - ); - }); -}); diff --git a/test/e2e/tests/network-error.spec.js b/test/e2e/tests/network-error.spec.js index 778d32b35..31c47752b 100644 --- a/test/e2e/tests/network-error.spec.js +++ b/test/e2e/tests/network-error.spec.js @@ -1,5 +1,9 @@ const { strict: assert } = require('assert'); -const { convertToHexValue, withFixtures } = require('../helpers'); +const { + convertToHexValue, + withFixtures, + regularDelayMs, +} = require('../helpers'); const FixtureBuilder = require('../fixture-builder'); describe('Gas API fallback', function () { @@ -79,6 +83,9 @@ describe('Gas API fallback', function () { await driver.clickElement({ text: 'Next', tag: 'button' }); + await driver.delay(regularDelayMs); + await driver.findElement('.transaction-alerts'); + const error = await driver.isElementPresent({ text: 'Network is busy. Gas prices are high and estimates are less accurate.', }); From f788121c3bc698ffd8fb0231a74e90d313ad7d71 Mon Sep 17 00:00:00 2001 From: David Drazic Date: Wed, 31 May 2023 14:43:39 +0200 Subject: [PATCH 009/160] [FLASK] Add Snaps privacy warning on snap install (#18835) * Add Snaps privacy warning on snap install Add snap install warning status to storage Add storybook Add test for snap-privacy-warning Resolve button type issue Fix popup display logic Update fixture Update popup information and read more handling Replace deprecated button Update unit test * Update buttons and add cancel flow * Refactoring (review 1) * Add more unit tests --- app/_locales/en/messages.json | 31 ++++ app/scripts/controllers/app-state.js | 14 ++ app/scripts/controllers/app-state.test.js | 19 +++ app/scripts/metamask-controller.js | 6 + test/e2e/fixture-builder.js | 1 + .../permission-page-container.component.js | 42 ++++++ .../app/snaps/snap-privacy-warning/index.js | 1 + .../snap-privacy-warning.js | 140 ++++++++++++++++++ .../snap-privacy-warning.stories.js | 22 +++ .../snap-privacy-warning.test.js | 77 ++++++++++ ui/ducks/app/app.ts | 6 + .../permissions-connect.component.js | 17 +++ .../permissions-connect.container.js | 6 + ui/selectors/selectors.js | 19 +++ ui/selectors/selectors.test.js | 14 ++ ui/store/actions.ts | 17 +++ 16 files changed, 432 insertions(+) create mode 100644 ui/components/app/snaps/snap-privacy-warning/index.js create mode 100644 ui/components/app/snaps/snap-privacy-warning/snap-privacy-warning.js create mode 100644 ui/components/app/snaps/snap-privacy-warning/snap-privacy-warning.stories.js create mode 100644 ui/components/app/snaps/snap-privacy-warning/snap-privacy-warning.test.js diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index 91bad4b6d..df2552bb0 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -654,6 +654,9 @@ "clearActivityDescription": { "message": "This resets the account's nonce and erases data from the activity tab in your wallet. Only the current account and network will be affected. Your balances and incoming transactions won't change." }, + "click": { + "message": "Click" + }, "clickToConnectLedgerViaWebHID": { "message": "Click here to connect your Ledger via WebHID", "description": "Text that can be clicked to open a browser popup for connecting the ledger device via webhid" @@ -1562,6 +1565,10 @@ "followUsOnTwitter": { "message": "Follow us on Twitter" }, + "forMoreDetails": { + "message": "for more details.", + "description": "Click for more details message in popup modal displayed when installing a snap for the first time." + }, "forbiddenIpfsGateway": { "message": "Forbidden IPFS Gateway: Please specify a CID gateway" }, @@ -3843,9 +3850,29 @@ "snapsNoInsight": { "message": "The snap didn't return any insight" }, + "snapsPrivacyWarningFirstMessage": { + "message": "Installing a snap retrieves data from third parties. They may collect your personal information.", + "description": "First part of a message in popup modal displayed when installing a snap for the first time." + }, + "snapsPrivacyWarningSecondMessage": { + "message": "MetaMask has no access to this information.", + "description": "Second part of a message in popup modal displayed when installing a snap for the first time." + }, "snapsSettingsDescription": { "message": "Manage your Snaps" }, + "snapsThirdPartyNoticeReadMorePartOne": { + "message": "Any information you share with third-party-developed snaps will be collected directly by those snaps in accordance with their privacy policies. ", + "description": "First part of a tooltip content in popup modal displayed when installing a snap for the first time." + }, + "snapsThirdPartyNoticeReadMorePartThree": { + "message": "MetaMask has no access to information you share with these third parties.", + "description": "Third part of a tooltip content in popup modal displayed when installing a snap for the first time." + }, + "snapsThirdPartyNoticeReadMorePartTwo": { + "message": "During the installation of a snap, npmjs (npmjs.com) and AWS (aws.amazon.com) may collect your IP address. Please refer to their privacy policies for more information.", + "description": "Second part of a tooltip content in popup modal displayed when installing a snap for the first time." + }, "snapsToggle": { "message": "A snap will only run if it is enabled" }, @@ -4466,6 +4493,10 @@ "thingsToKeep": { "message": "Things to keep in mind:" }, + "thirdPartySoftware": { + "message": "Third party software", + "description": "Title of a popup modal displayed when installing a snap for the first time." + }, "thisCollection": { "message": "this collection" }, diff --git a/app/scripts/controllers/app-state.js b/app/scripts/controllers/app-state.js index fd0102666..722f1f56a 100644 --- a/app/scripts/controllers/app-state.js +++ b/app/scripts/controllers/app-state.js @@ -183,6 +183,20 @@ export default class AppStateController extends EventEmitter { }); } + ///: BEGIN:ONLY_INCLUDE_IN(snaps) + /** + * Record if popover for snaps privacy warning has been shown + * on the first install of a snap. + * + * @param {boolean} shown - shown status + */ + setSnapsInstallPrivacyWarningShownStatus(shown) { + this.store.updateState({ + snapsInstallPrivacyWarningShown: shown, + }); + } + ///: END:ONLY_INCLUDE_IN + /** * Record the timestamp of the last time the user has seen the outdated browser warning * diff --git a/app/scripts/controllers/app-state.test.js b/app/scripts/controllers/app-state.test.js index 02d3cda3c..b96d39a4c 100644 --- a/app/scripts/controllers/app-state.test.js +++ b/app/scripts/controllers/app-state.test.js @@ -346,4 +346,23 @@ describe('AppStateController', () => { ); }); }); + + describe('setSnapsInstallPrivacyWarningShownStatus', () => { + it('updates the status of snaps install privacy warning', () => { + appStateController = createAppStateController(); + const updateStateSpy = jest.spyOn( + appStateController.store, + 'updateState', + ); + + appStateController.setSnapsInstallPrivacyWarningShownStatus(true); + + expect(updateStateSpy).toHaveBeenCalledTimes(1); + expect(updateStateSpy).toHaveBeenCalledWith({ + snapsInstallPrivacyWarningShown: true, + }); + + updateStateSpy.mockRestore(); + }); + }); }); diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index 09c7b8803..93cd1af2f 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -2207,6 +2207,12 @@ export default class MetamaskController extends EventEmitter { ), setTermsOfUseLastAgreed: appStateController.setTermsOfUseLastAgreed.bind(appStateController), + ///: BEGIN:ONLY_INCLUDE_IN(snaps) + setSnapsInstallPrivacyWarningShownStatus: + appStateController.setSnapsInstallPrivacyWarningShownStatus.bind( + appStateController, + ), + ///: END:ONLY_INCLUDE_IN setOutdatedBrowserWarningLastShown: appStateController.setOutdatedBrowserWarningLastShown.bind( appStateController, diff --git a/test/e2e/fixture-builder.js b/test/e2e/fixture-builder.js index 051d3f02c..41c3b12e8 100644 --- a/test/e2e/fixture-builder.js +++ b/test/e2e/fixture-builder.js @@ -158,6 +158,7 @@ function defaultFixture() { [CHAIN_IDS.GOERLI]: true, [CHAIN_IDS.LOCALHOST]: true, }, + snapsInstallPrivacyWarningShown: true, }, CachedBalancesController: { cachedBalances: { diff --git a/ui/components/app/permission-page-container/permission-page-container.component.js b/ui/components/app/permission-page-container/permission-page-container.component.js index 188290d71..a30825c09 100644 --- a/ui/components/app/permission-page-container/permission-page-container.component.js +++ b/ui/components/app/permission-page-container/permission-page-container.component.js @@ -13,6 +13,7 @@ import { PageContainerFooter } from '../../ui/page-container'; import PermissionsConnectFooter from '../permissions-connect-footer'; ///: BEGIN:ONLY_INCLUDE_IN(snaps) import { RestrictedMethods } from '../../../../shared/constants/permissions'; +import SnapPrivacyWarning from '../snaps/snap-privacy-warning'; ///: END:ONLY_INCLUDE_IN import { PermissionPageContainerContent } from '.'; @@ -24,6 +25,8 @@ export default class PermissionPageContainer extends Component { allIdentitiesSelected: PropTypes.bool, ///: BEGIN:ONLY_INCLUDE_IN(snaps) currentPermissions: PropTypes.object, + snapsInstallPrivacyWarningShown: PropTypes.bool.isRequired, + setSnapsInstallPrivacyWarningShownStatus: PropTypes.func, ///: END:ONLY_INCLUDE_IN request: PropTypes.object, requestMetadata: PropTypes.object, @@ -108,6 +111,12 @@ export default class PermissionPageContainer extends Component { caveats: [{ type: SnapCaveatType.SnapIds, value: dedupedCaveats }], }; } + + showSnapsPrivacyWarning() { + this.setState({ + isShowingSnapsPrivacyWarning: true, + }); + } ///: END:ONLY_INCLUDE_IN getRequestedMethodNames(props) { @@ -123,6 +132,14 @@ export default class PermissionPageContainer extends Component { legacy_event: true, }, }); + + ///: BEGIN:ONLY_INCLUDE_IN(snaps) + if (this.props.request.permissions[WALLET_SNAP_PERMISSION_KEY]) { + if (this.props.snapsInstallPrivacyWarningShown === false) { + this.showSnapsPrivacyWarning(); + } + } + ///: END:ONLY_INCLUDE_IN } onCancel = () => { @@ -167,8 +184,33 @@ export default class PermissionPageContainer extends Component { allIdentitiesSelected, } = this.props; + ///: BEGIN:ONLY_INCLUDE_IN(snaps) + const setIsShowingSnapsPrivacyWarning = (value) => { + this.setState({ + isShowingSnapsPrivacyWarning: value, + }); + }; + + const confirmSnapsPrivacyWarning = () => { + setIsShowingSnapsPrivacyWarning(false); + this.props.setSnapsInstallPrivacyWarningShownStatus(true); + }; + ///: END:ONLY_INCLUDE_IN + return (
+ { + ///: BEGIN:ONLY_INCLUDE_IN(snaps) + <> + {this.state.isShowingSnapsPrivacyWarning && ( + confirmSnapsPrivacyWarning()} + onCanceled={() => this.onCancel()} + /> + )} + + ///: END:ONLY_INCLUDE_IN + } { + setIsDescriptionOpen(true); + }; + + return ( + + + + + + + {t('thirdPartySoftware')} + + + + {t('snapsPrivacyWarningFirstMessage')} + + {!isDescriptionOpen && ( + <> + + {t('snapsPrivacyWarningSecondMessage')} + + + {t('click')} + +  {t('here')}  + + {t('forMoreDetails')} + + + )} + {isDescriptionOpen && ( + <> + + {t('snapsThirdPartyNoticeReadMorePartOne')} + + + {t('snapsThirdPartyNoticeReadMorePartTwo')} + + + {t('snapsThirdPartyNoticeReadMorePartThree')} + + + )} + + + + + + + + ); +} + +SnapPrivacyWarning.propTypes = { + /** + * onAccepted handler + */ + onAccepted: PropTypes.func.isRequired, + /** + * onCanceled handler + */ + onCanceled: PropTypes.func.isRequired, +}; diff --git a/ui/components/app/snaps/snap-privacy-warning/snap-privacy-warning.stories.js b/ui/components/app/snaps/snap-privacy-warning/snap-privacy-warning.stories.js new file mode 100644 index 000000000..4ade7418e --- /dev/null +++ b/ui/components/app/snaps/snap-privacy-warning/snap-privacy-warning.stories.js @@ -0,0 +1,22 @@ +import React from 'react'; + +import SnapPrivacyWarning from '.'; + +export default { + title: 'Components/App/snaps/SnapPrivacyWarning', + component: SnapPrivacyWarning, + argTypes: { + onAccepted: { + action: 'onAccepted', + }, + onCanceled: { + action: 'onCanceled', + }, + }, +}; + +export const DefaultStory = (args) => ; + +DefaultStory.storyName = 'Default'; + +DefaultStory.args = {}; diff --git a/ui/components/app/snaps/snap-privacy-warning/snap-privacy-warning.test.js b/ui/components/app/snaps/snap-privacy-warning/snap-privacy-warning.test.js new file mode 100644 index 000000000..66034eab8 --- /dev/null +++ b/ui/components/app/snaps/snap-privacy-warning/snap-privacy-warning.test.js @@ -0,0 +1,77 @@ +import React from 'react'; +import { screen } from '@testing-library/react'; +import { renderWithProvider } from '../../../../../test/jest'; +import SnapPrivacyWarning from './snap-privacy-warning'; + +describe('Snap Privacy Warning Popover', () => { + it('renders snaps privacy warning popover and works with accept flow', () => { + const mockOnAcceptCallback = jest.fn(); + const { getByTestId } = renderWithProvider( + , + ); + + expect(screen.getByText('Third party software')).toBeInTheDocument(); + expect( + screen.getByText( + 'Installing a snap retrieves data from third parties. They may collect your personal information.', + ), + ).toBeInTheDocument(); + expect( + screen.getByText('MetaMask has no access to this information.'), + ).toBeInTheDocument(); + const clickHereToReadMoreButton = getByTestId( + 'snapsPrivacyPopup_readMoreButton', + ); + expect(clickHereToReadMoreButton).toBeDefined(); + clickHereToReadMoreButton.click(); + expect( + screen.getByText( + 'Any information you share with third-party-developed snaps will be collected directly by those snaps in accordance with their privacy policies.', + ), + ).toBeInTheDocument(); + expect( + screen.getByText( + 'During the installation of a snap, npmjs (npmjs.com) and AWS (aws.amazon.com) may collect your IP address. Please refer to their privacy policies for more information.', + ), + ).toBeInTheDocument(); + expect( + screen.getByRole('button', { + name: /Accept/iu, + }), + ).toBeInTheDocument(); + screen + .getByRole('button', { + name: /Accept/iu, + }) + .click(); + expect(mockOnAcceptCallback).toHaveBeenCalled(); + }); + + it('renders snaps privacy warning popover and works with cancel flow', () => { + const mockOnAcceptCallback = jest.fn(); + const mockOnCanceledCallback = jest.fn(); + renderWithProvider( + , + ); + + expect(screen.getByText('Third party software')).toBeInTheDocument(); + expect( + screen.getByRole('button', { + name: /Cancel/iu, + }), + ).toBeInTheDocument(); + screen + .getByRole('button', { + name: /Cancel/iu, + }) + .click(); + expect(mockOnCanceledCallback).toHaveBeenCalled(); + expect(mockOnAcceptCallback).not.toHaveBeenCalled(); + }); +}); diff --git a/ui/ducks/app/app.ts b/ui/ducks/app/app.ts index b019d69f7..e6ea054db 100644 --- a/ui/ducks/app/app.ts +++ b/ui/ducks/app/app.ts @@ -67,6 +67,9 @@ interface AppState { customTokenAmount: string; txId: number | null; accountDetailsAddress: string; + ///: BEGIN:ONLY_INCLUDE_IN(snaps) + snapsInstallPrivacyWarningShown: boolean; + ///: END:ONLY_INCLUDE_IN } interface AppSliceState { @@ -132,6 +135,9 @@ const initialState: AppState = { scrollToBottom: true, txId: null, accountDetailsAddress: '', + ///: BEGIN:ONLY_INCLUDE_IN(snaps) + snapsInstallPrivacyWarningShown: false, + ///: END:ONLY_INCLUDE_IN }; export default function reduceApp( diff --git a/ui/pages/permissions-connect/permissions-connect.component.js b/ui/pages/permissions-connect/permissions-connect.component.js index d1eb45699..af40fbdf7 100644 --- a/ui/pages/permissions-connect/permissions-connect.component.js +++ b/ui/pages/permissions-connect/permissions-connect.component.js @@ -46,6 +46,8 @@ export default class PermissionConnect extends Component { requestState: PropTypes.object.isRequired, approvePendingApproval: PropTypes.func.isRequired, rejectPendingApproval: PropTypes.func.isRequired, + setSnapsInstallPrivacyWarningShownStatus: PropTypes.func.isRequired, + snapsInstallPrivacyWarningShown: PropTypes.bool.isRequired, ///: END:ONLY_INCLUDE_IN totalPages: PropTypes.string.isRequired, page: PropTypes.string.isRequired, @@ -76,6 +78,9 @@ export default class PermissionConnect extends Component { permissionsApproved: null, origin: this.props.origin, targetSubjectMetadata: this.props.targetSubjectMetadata || {}, + ///: BEGIN:ONLY_INCLUDE_IN(snaps) + snapsInstallPrivacyWarningShown: this.props.snapsInstallPrivacyWarningShown, + ///: END:ONLY_INCLUDE_IN }; beforeUnload = () => { @@ -298,6 +303,7 @@ export default class PermissionConnect extends Component { requestState, approvePendingApproval, rejectPendingApproval, + setSnapsInstallPrivacyWarningShownStatus, ///: END:ONLY_INCLUDE_IN } = this.props; const { @@ -305,6 +311,9 @@ export default class PermissionConnect extends Component { permissionsApproved, redirecting, targetSubjectMetadata, + ///: BEGIN:ONLY_INCLUDE_IN(snaps) + snapsInstallPrivacyWarningShown, + ///: END:ONLY_INCLUDE_IN } = this.state; return ( @@ -356,6 +365,14 @@ export default class PermissionConnect extends Component { selectedAccountAddresses.has(account.address), )} targetSubjectMetadata={targetSubjectMetadata} + ///: BEGIN:ONLY_INCLUDE_IN(snaps) + snapsInstallPrivacyWarningShown={ + snapsInstallPrivacyWarningShown + } + setSnapsInstallPrivacyWarningShownStatus={ + setSnapsInstallPrivacyWarningShownStatus + } + ///: END:ONLY_INCLUDE_IN /> )} /> diff --git a/ui/pages/permissions-connect/permissions-connect.container.js b/ui/pages/permissions-connect/permissions-connect.container.js index 584de0258..0995e9574 100644 --- a/ui/pages/permissions-connect/permissions-connect.container.js +++ b/ui/pages/permissions-connect/permissions-connect.container.js @@ -9,6 +9,7 @@ import { ///: BEGIN:ONLY_INCLUDE_IN(snaps) getSnapInstallOrUpdateRequests, getRequestState, + getSnapsInstallPrivacyWarningShown, ///: END:ONLY_INCLUDE_IN getRequestType, getTargetSubjectMetadata, @@ -24,6 +25,7 @@ import { ///: BEGIN:ONLY_INCLUDE_IN(snaps) resolvePendingApproval, rejectPendingApproval, + setSnapsInstallPrivacyWarningShownStatus, ///: END:ONLY_INCLUDE_IN } from '../../store/actions'; import { @@ -133,6 +135,7 @@ const mapStateToProps = (state, ownProps) => { snapResultPath, requestState, isSnap, + snapsInstallPrivacyWarningShown: getSnapsInstallPrivacyWarningShown(state), ///: END:ONLY_INCLUDE_IN permissionsRequest, permissionsRequestId, @@ -162,6 +165,9 @@ const mapDispatchToProps = (dispatch) => { dispatch(resolvePendingApproval(id, value)), rejectPendingApproval: (id, error) => dispatch(rejectPendingApproval(id, error)), + setSnapsInstallPrivacyWarningShownStatus: (shown) => { + dispatch(setSnapsInstallPrivacyWarningShownStatus(shown)); + }, ///: END:ONLY_INCLUDE_IN showNewAccountModal: ({ onCreateNewAccount, newAccountNumber }) => { return dispatch( diff --git a/ui/selectors/selectors.js b/ui/selectors/selectors.js index d1ff0ef1c..8843f9fb6 100644 --- a/ui/selectors/selectors.js +++ b/ui/selectors/selectors.js @@ -1492,4 +1492,23 @@ export function getSnapsList(state) { }; }); } + +/** + * To get the state of snaps privacy warning popover. + * + * @param state - Redux state object. + * @returns True if popover has been shown, false otherwise. + */ +export function getSnapsInstallPrivacyWarningShown(state) { + const { snapsInstallPrivacyWarningShown } = state.metamask; + + if ( + snapsInstallPrivacyWarningShown === undefined || + snapsInstallPrivacyWarningShown === null + ) { + return false; + } + + return snapsInstallPrivacyWarningShown; +} ///: END:ONLY_INCLUDE_IN diff --git a/ui/selectors/selectors.test.js b/ui/selectors/selectors.test.js index e5964a73c..f31e73f1e 100644 --- a/ui/selectors/selectors.test.js +++ b/ui/selectors/selectors.test.js @@ -469,4 +469,18 @@ describe('Selectors', () => { )(mockState); expect(isFantomTokenSupported).toBeFalsy(); }); + + it('returns proper values for snaps privacy warning shown status', () => { + mockState.metamask.snapsInstallPrivacyWarningShown = false; + expect(selectors.getSnapsInstallPrivacyWarningShown(mockState)).toBe(false); + + mockState.metamask.snapsInstallPrivacyWarningShown = true; + expect(selectors.getSnapsInstallPrivacyWarningShown(mockState)).toBe(true); + + mockState.metamask.snapsInstallPrivacyWarningShown = undefined; + expect(selectors.getSnapsInstallPrivacyWarningShown(mockState)).toBe(false); + + mockState.metamask.snapsInstallPrivacyWarningShown = null; + expect(selectors.getSnapsInstallPrivacyWarningShown(mockState)).toBe(false); + }); }); diff --git a/ui/store/actions.ts b/ui/store/actions.ts index 845540969..8eb1b67c6 100644 --- a/ui/store/actions.ts +++ b/ui/store/actions.ts @@ -4678,3 +4678,20 @@ export async function getCurrentNetworkEIP1559Compatibility(): Promise< } return networkEIP1559Compatibility; } + +///: BEGIN:ONLY_INCLUDE_IN(snaps) +/** + * Set status of popover warning for the first snap installation. + * + * @param shown - True if popover has been shown. + * @returns Promise Resolved on successfully submitted background request. + */ +export function setSnapsInstallPrivacyWarningShownStatus(shown: boolean) { + return async () => { + await submitRequestToBackground( + 'setSnapsInstallPrivacyWarningShownStatus', + [shown], + ); + }; +} +///: END:ONLY_INCLUDE_IN From 7f82ea231c85252b8fc269416b7ad5ff117f7430 Mon Sep 17 00:00:00 2001 From: Mark Stacey Date: Wed, 31 May 2023 12:38:07 -0230 Subject: [PATCH 010/160] Update `@metamask/base-controller` to v3 (#19343) The `@metamask/base-controller` has been updated to v3, which is the version released in the core monorepo v53 release. The other packages released as part of v53 will be updated in later PRs. Relates to #19271 --- lavamoat/browserify/beta/policy.json | 420 +++++++++++++++++----- lavamoat/browserify/desktop/policy.json | 441 +++++++++++++++++++----- lavamoat/browserify/flask/policy.json | 441 +++++++++++++++++++----- lavamoat/browserify/main/policy.json | 420 +++++++++++++++++----- lavamoat/build-system/policy.json | 71 +--- package.json | 2 +- yarn.lock | 152 +++++++- 7 files changed, 1518 insertions(+), 429 deletions(-) diff --git a/lavamoat/browserify/beta/policy.json b/lavamoat/browserify/beta/policy.json index f818bbd0e..ed6ced9ce 100644 --- a/lavamoat/browserify/beta/policy.json +++ b/lavamoat/browserify/beta/policy.json @@ -142,7 +142,6 @@ "@ethereumjs/tx>@ethereumjs/rlp": true, "@ethereumjs/tx>@ethereumjs/util": true, "@ethereumjs/tx>ethereum-cryptography": true, - "@ethersproject/providers": true, "browserify>buffer": true, "browserify>insert-module-globals>is-buffer": true } @@ -150,8 +149,6 @@ "@ethereumjs/tx>@chainsafe/ssz": { "packages": { "@ethereumjs/tx>@chainsafe/ssz>@chainsafe/persistent-merkle-tree": true, - "@ethereumjs/tx>@chainsafe/ssz>case": true, - "browserify": true, "browserify>buffer": true } }, @@ -160,7 +157,8 @@ "WeakRef": true }, "packages": { - "browserify": true + "@ethereumjs/tx>@chainsafe/ssz>@chainsafe/as-sha256": true, + "@metamask/key-tree>@noble/hashes": true } }, "@ethereumjs/tx>@ethereumjs/rlp": { @@ -175,50 +173,56 @@ "packages": { "@ethereumjs/tx>@chainsafe/ssz": true, "@ethereumjs/tx>@ethereumjs/rlp": true, - "@ethereumjs/tx>ethereum-cryptography": true, + "@ethereumjs/tx>@ethereumjs/util>ethereum-cryptography": true, + "@ethereumjs/tx>@ethereumjs/util>micro-ftch": true, "browserify>buffer": true, "browserify>events": true, "browserify>insert-module-globals>is-buffer": true } }, + "@ethereumjs/tx>@ethereumjs/util>ethereum-cryptography": { + "globals": { + "TextDecoder": true, + "crypto": true + }, + "packages": { + "@ethereumjs/tx>ethereum-cryptography>@noble/curves": true, + "@metamask/key-tree>@noble/hashes": true + } + }, + "@ethereumjs/tx>@ethereumjs/util>micro-ftch": { + "globals": { + "Headers": true, + "TextDecoder": true, + "URL": true, + "btoa": true, + "fetch": true + }, + "packages": { + "browserify>browserify-zlib": true, + "browserify>buffer": true, + "browserify>https-browserify": true, + "browserify>process": true, + "browserify>stream-http": true, + "browserify>url": true, + "browserify>util": true + } + }, "@ethereumjs/tx>ethereum-cryptography": { "globals": { "TextDecoder": true, "crypto": true }, "packages": { - "@ethereumjs/tx>ethereum-cryptography>@noble/hashes": true, - "@ethereumjs/tx>ethereum-cryptography>@noble/secp256k1": true, - "@ethereumjs/tx>ethereum-cryptography>@scure/bip32": true + "@metamask/key-tree>@noble/hashes": true } }, - "@ethereumjs/tx>ethereum-cryptography>@noble/hashes": { + "@ethereumjs/tx>ethereum-cryptography>@noble/curves": { "globals": { - "TextEncoder": true, - "crypto": true - } - }, - "@ethereumjs/tx>ethereum-cryptography>@noble/secp256k1": { - "globals": { - "crypto": true + "TextEncoder": true }, "packages": { - "browserify>browser-resolve": true - } - }, - "@ethereumjs/tx>ethereum-cryptography>@scure/bip32": { - "packages": { - "@ethereumjs/tx>ethereum-cryptography>@scure/bip32>@noble/secp256k1": true, - "@metamask/key-tree>@noble/hashes": true, - "@metamask/key-tree>@scure/base": true - } - }, - "@ethereumjs/tx>ethereum-cryptography>@scure/bip32>@noble/secp256k1": { - "globals": { - "crypto": true - }, - "packages": { - "browserify>browser-resolve": true + "@metamask/key-tree>@noble/hashes": true } }, "@ethersproject/abi": { @@ -785,22 +789,37 @@ }, "@metamask/address-book-controller": { "packages": { - "@metamask/base-controller": true, + "@metamask/address-book-controller>@metamask/base-controller": true, "@metamask/controller-utils": true } }, + "@metamask/address-book-controller>@metamask/base-controller": { + "packages": { + "immer": true + } + }, "@metamask/announcement-controller": { "packages": { - "@metamask/base-controller": true + "@metamask/announcement-controller>@metamask/base-controller": true + } + }, + "@metamask/announcement-controller>@metamask/base-controller": { + "packages": { + "immer": true } }, "@metamask/approval-controller": { "packages": { + "@metamask/approval-controller>@metamask/base-controller": true, "@metamask/approval-controller>nanoid": true, - "@metamask/base-controller": true, "eth-rpc-errors": true } }, + "@metamask/approval-controller>@metamask/base-controller": { + "packages": { + "immer": true + } + }, "@metamask/approval-controller>nanoid": { "globals": { "crypto.getRandomValues": true @@ -822,9 +841,9 @@ "@ethersproject/contracts": true, "@ethersproject/providers": true, "@metamask/assets-controllers>@metamask/abi-utils": true, + "@metamask/assets-controllers>@metamask/base-controller": true, "@metamask/assets-controllers>abort-controller": true, "@metamask/assets-controllers>multiformats": true, - "@metamask/base-controller": true, "@metamask/contract-metadata": true, "@metamask/controller-utils": true, "@metamask/metamask-eth-abis": true, @@ -856,6 +875,11 @@ "superstruct": true } }, + "@metamask/assets-controllers>@metamask/base-controller": { + "packages": { + "immer": true + } + }, "@metamask/assets-controllers>abort-controller": { "globals": { "AbortController": true @@ -1031,22 +1055,74 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@ethereumjs/tx>ethereum-cryptography": true, + "@metamask/eth-keyring-controller>@metamask/eth-hd-keyring>ethereum-cryptography": true, "@metamask/eth-trezor-keyring>@metamask/eth-sig-util": true, "@metamask/scure-bip39": true, "browserify>buffer": true } }, + "@metamask/eth-keyring-controller>@metamask/eth-hd-keyring>ethereum-cryptography": { + "globals": { + "TextDecoder": true, + "crypto": true + }, + "packages": { + "@metamask/eth-keyring-controller>@metamask/eth-hd-keyring>ethereum-cryptography>@noble/hashes": true, + "@metamask/eth-keyring-controller>@metamask/eth-hd-keyring>ethereum-cryptography>@scure/bip32": true + } + }, + "@metamask/eth-keyring-controller>@metamask/eth-hd-keyring>ethereum-cryptography>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true + } + }, + "@metamask/eth-keyring-controller>@metamask/eth-hd-keyring>ethereum-cryptography>@noble/secp256k1": { + "globals": { + "crypto": true + }, + "packages": { + "browserify>browser-resolve": true + } + }, + "@metamask/eth-keyring-controller>@metamask/eth-hd-keyring>ethereum-cryptography>@scure/bip32": { + "packages": { + "@metamask/eth-keyring-controller>@metamask/eth-hd-keyring>ethereum-cryptography>@noble/secp256k1": true, + "@metamask/eth-keyring-controller>@metamask/eth-hd-keyring>ethereum-cryptography>@scure/bip39>@noble/hashes": true, + "@metamask/key-tree>@scure/base": true + } + }, + "@metamask/eth-keyring-controller>@metamask/eth-hd-keyring>ethereum-cryptography>@scure/bip39>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true + } + }, "@metamask/eth-keyring-controller>@metamask/eth-simple-keyring": { "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@ethereumjs/tx>ethereum-cryptography": true, + "@metamask/eth-keyring-controller>@metamask/eth-simple-keyring>ethereum-cryptography": true, "@metamask/eth-trezor-keyring>@metamask/eth-sig-util": true, "browserify>buffer": true, "browserify>events": true, "ethereumjs-wallet>randombytes": true } }, + "@metamask/eth-keyring-controller>@metamask/eth-simple-keyring>ethereum-cryptography": { + "globals": { + "TextDecoder": true, + "crypto": true + }, + "packages": { + "@metamask/eth-keyring-controller>@metamask/eth-simple-keyring>ethereum-cryptography>@noble/hashes": true + } + }, + "@metamask/eth-keyring-controller>@metamask/eth-simple-keyring>ethereum-cryptography>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true + } + }, "@metamask/eth-keyring-controller>obs-store": { "packages": { "@metamask/eth-token-tracker>safe-event-emitter": true, @@ -1082,25 +1158,17 @@ }, "@metamask/eth-ledger-bridge-keyring>eth-sig-util>ethereumjs-util": { "packages": { - "@metamask/eth-ledger-bridge-keyring>eth-sig-util>ethereumjs-util>ethereum-cryptography": true, "@metamask/eth-ledger-bridge-keyring>eth-sig-util>ethereumjs-util>ethjs-util": true, "bn.js": true, "browserify>assert": true, "browserify>buffer": true, "ethereumjs-util>create-hash": true, + "ethereumjs-util>ethereum-cryptography": true, "ethereumjs-util>rlp": true, "ethereumjs-wallet>safe-buffer": true, "ganache>secp256k1>elliptic": true } }, - "@metamask/eth-ledger-bridge-keyring>eth-sig-util>ethereumjs-util>ethereum-cryptography": { - "packages": { - "browserify>buffer": true, - "ethereumjs-util>ethereum-cryptography>keccak": true, - "ethereumjs-util>ethereum-cryptography>secp256k1": true, - "ethereumjs-wallet>randombytes": true - } - }, "@metamask/eth-ledger-bridge-keyring>eth-sig-util>ethereumjs-util>ethjs-util": { "packages": { "browserify>buffer": true, @@ -1257,7 +1325,7 @@ "@metamask/eth-trezor-keyring>@metamask/eth-sig-util": { "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@ethereumjs/tx>ethereum-cryptography": true, + "@metamask/eth-trezor-keyring>@metamask/eth-sig-util>ethereum-cryptography": true, "@metamask/eth-trezor-keyring>@metamask/eth-sig-util>ethjs-util": true, "bn.js": true, "browserify>buffer": true, @@ -1265,6 +1333,21 @@ "eth-sig-util>tweetnacl-util": true } }, + "@metamask/eth-trezor-keyring>@metamask/eth-sig-util>ethereum-cryptography": { + "globals": { + "TextDecoder": true, + "crypto": true + }, + "packages": { + "@metamask/eth-trezor-keyring>@metamask/eth-sig-util>ethereum-cryptography>@noble/hashes": true + } + }, + "@metamask/eth-trezor-keyring>@metamask/eth-sig-util>ethereum-cryptography>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true + } + }, "@metamask/eth-trezor-keyring>@metamask/eth-sig-util>ethjs-util": { "packages": { "browserify>buffer": true, @@ -1440,14 +1523,19 @@ "setInterval": true }, "packages": { - "@metamask/base-controller": true, "@metamask/controller-utils": true, + "@metamask/gas-fee-controller>@metamask/base-controller": true, "eth-query": true, "ethereumjs-util": true, "ethjs>ethjs-unit": true, "uuid": true } }, + "@metamask/gas-fee-controller>@metamask/base-controller": { + "packages": { + "immer": true + } + }, "@metamask/jazzicon": { "globals": { "document.createElement": true, @@ -1546,8 +1634,8 @@ }, "@metamask/message-manager": { "packages": { - "@metamask/base-controller": true, "@metamask/controller-utils": true, + "@metamask/message-manager>@metamask/base-controller": true, "@metamask/message-manager>jsonschema": true, "browserify>buffer": true, "browserify>events": true, @@ -1556,6 +1644,11 @@ "uuid": true } }, + "@metamask/message-manager>@metamask/base-controller": { + "packages": { + "immer": true + } + }, "@metamask/message-manager>jsonschema": { "packages": { "browserify>url": true @@ -1586,8 +1679,8 @@ "console.error": true }, "packages": { - "@metamask/base-controller": true, "@metamask/controller-utils": true, + "@metamask/permission-controller>@metamask/base-controller": true, "@metamask/permission-controller>nanoid": true, "deep-freeze-strict": true, "eth-rpc-errors": true, @@ -1595,6 +1688,11 @@ "json-rpc-engine": true } }, + "@metamask/permission-controller>@metamask/base-controller": { + "packages": { + "immer": true + } + }, "@metamask/permission-controller>nanoid": { "globals": { "crypto.getRandomValues": true @@ -1605,12 +1703,17 @@ "fetch": true }, "packages": { - "@metamask/base-controller": true, "@metamask/controller-utils": true, + "@metamask/phishing-controller>@metamask/base-controller": true, "@metamask/phishing-warning>eth-phishing-detect": true, "punycode": true } }, + "@metamask/phishing-controller>@metamask/base-controller": { + "packages": { + "immer": true + } + }, "@metamask/phishing-warning>eth-phishing-detect": { "packages": { "eslint>optionator>fast-levenshtein": true @@ -1647,8 +1750,14 @@ "TextEncoder": true }, "packages": { - "@metamask/key-tree>@noble/hashes": true, - "@metamask/key-tree>@scure/base": true + "@metamask/key-tree>@scure/base": true, + "@metamask/scure-bip39>@noble/hashes": true + } + }, + "@metamask/scure-bip39>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true } }, "@metamask/signature-controller": { @@ -1656,15 +1765,20 @@ "console.info": true }, "packages": { - "@metamask/base-controller": true, "@metamask/controller-utils": true, "@metamask/message-manager": true, + "@metamask/signature-controller>@metamask/base-controller": true, "browserify>buffer": true, "browserify>events": true, "eth-rpc-errors": true, "ethereumjs-util": true } }, + "@metamask/signature-controller>@metamask/base-controller": { + "packages": { + "immer": true + } + }, "@metamask/smart-transactions-controller": { "globals": { "URLSearchParams": true, @@ -1748,7 +1862,12 @@ }, "@metamask/subject-metadata-controller": { "packages": { - "@metamask/base-controller": true + "@metamask/subject-metadata-controller>@metamask/base-controller": true + } + }, + "@metamask/subject-metadata-controller>@metamask/base-controller": { + "packages": { + "immer": true } }, "@metamask/utils": { @@ -2535,6 +2654,16 @@ "ethjs-query>babel-runtime>core-js": true } }, + "browserify>browserify-zlib": { + "packages": { + "browserify>assert": true, + "browserify>browserify-zlib>pako": true, + "browserify>buffer": true, + "browserify>process": true, + "browserify>stream-browserify": true, + "browserify>util": true + } + }, "browserify>buffer": { "globals": { "console": true @@ -2701,6 +2830,12 @@ "browserify>has>function-bind": true } }, + "browserify>https-browserify": { + "packages": { + "browserify>stream-http": true, + "browserify>url": true + } + }, "browserify>os-browserify": { "globals": { "location": true, @@ -2730,6 +2865,41 @@ "readable-stream": true } }, + "browserify>stream-http": { + "globals": { + "AbortController": true, + "Blob": true, + "MSStreamReader": true, + "ReadableStream": true, + "WritableStream": true, + "XDomainRequest": true, + "XMLHttpRequest": true, + "clearTimeout": true, + "fetch": true, + "location.protocol.search": true, + "setTimeout": true + }, + "packages": { + "browserify>buffer": true, + "browserify>process": true, + "browserify>stream-http>builtin-status-codes": true, + "browserify>stream-http>readable-stream": true, + "browserify>url": true, + "pumpify>inherits": true, + "watchify>xtend": true + } + }, + "browserify>stream-http>readable-stream": { + "packages": { + "browserify>browser-resolve": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>process": true, + "browserify>string_decoder": true, + "pumpify>inherits": true, + "readable-stream>util-deprecate": true + } + }, "browserify>string_decoder": { "packages": { "ethereumjs-wallet>safe-buffer": true @@ -2951,16 +3121,59 @@ "setInterval": true }, "packages": { - "@ethereumjs/tx": true, "@ethereumjs/tx>@ethereumjs/util": true, "browserify>buffer": true, "browserify>crypto-browserify": true, "browserify>events": true, + "eth-lattice-keyring>@ethereumjs/tx": true, "eth-lattice-keyring>bn.js": true, "eth-lattice-keyring>gridplus-sdk": true, "eth-lattice-keyring>rlp": true } }, + "eth-lattice-keyring>@ethereumjs/tx": { + "packages": { + "@ethereumjs/common": true, + "@ethereumjs/tx>@ethereumjs/rlp": true, + "@ethereumjs/tx>@ethereumjs/util": true, + "@ethersproject/providers": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz": true, + "eth-lattice-keyring>@ethereumjs/tx>ethereum-cryptography": true + } + }, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz": { + "packages": { + "browserify": true, + "browserify>buffer": true, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz>@chainsafe/persistent-merkle-tree": true, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz>case": true + } + }, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz>@chainsafe/persistent-merkle-tree": { + "globals": { + "WeakRef": true + }, + "packages": { + "browserify": true + } + }, + "eth-lattice-keyring>@ethereumjs/tx>ethereum-cryptography": { + "globals": { + "TextDecoder": true, + "crypto": true + }, + "packages": { + "eth-lattice-keyring>@ethereumjs/tx>ethereum-cryptography>@noble/hashes": true + } + }, + "eth-lattice-keyring>@ethereumjs/tx>ethereum-cryptography>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true + } + }, "eth-lattice-keyring>bn.js": { "globals": { "Buffer": true @@ -2984,12 +3197,12 @@ "setTimeout": true }, "packages": { - "@ethereumjs/common": true, "@ethereumjs/common>crc-32": true, - "@ethereumjs/tx": true, "@ethersproject/abi": true, "bn.js": true, "browserify>buffer": true, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/common": true, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx": true, "eth-lattice-keyring>gridplus-sdk>bech32": true, "eth-lattice-keyring>gridplus-sdk>bignumber.js": true, "eth-lattice-keyring>gridplus-sdk>bitwise": true, @@ -3006,6 +3219,65 @@ "lodash": true } }, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/common": { + "packages": { + "@ethereumjs/common>crc-32": true, + "@ethereumjs/tx>@ethereumjs/util": true, + "browserify>buffer": true, + "browserify>events": true + } + }, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx": { + "packages": { + "@ethereumjs/tx>@ethereumjs/rlp": true, + "@ethereumjs/tx>@ethereumjs/util": true, + "@ethersproject/providers": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@chainsafe/ssz": true, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/common": true, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>ethereum-cryptography": true + } + }, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@chainsafe/ssz": { + "packages": { + "browserify": true, + "browserify>buffer": true, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz>case": true, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@chainsafe/ssz>@chainsafe/persistent-merkle-tree": true + } + }, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@chainsafe/ssz>@chainsafe/persistent-merkle-tree": { + "globals": { + "WeakRef": true + }, + "packages": { + "browserify": true + } + }, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/common": { + "packages": { + "@ethereumjs/common>crc-32": true, + "@ethereumjs/tx>@ethereumjs/util": true, + "browserify>buffer": true, + "browserify>events": true + } + }, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>ethereum-cryptography": { + "globals": { + "TextDecoder": true, + "crypto": true + }, + "packages": { + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>ethereum-cryptography>@noble/hashes": true + } + }, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>ethereum-cryptography>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true + } + }, "eth-lattice-keyring>gridplus-sdk>bignumber.js": { "globals": { "crypto": true, @@ -3135,22 +3407,14 @@ "bn.js": true, "browserify>assert": true, "browserify>buffer": true, - "eth-sig-util>ethereumjs-util>ethereum-cryptography": true, "eth-sig-util>ethereumjs-util>ethjs-util": true, "ethereumjs-util>create-hash": true, + "ethereumjs-util>ethereum-cryptography": true, "ethereumjs-util>rlp": true, "ethereumjs-wallet>safe-buffer": true, "ganache>secp256k1>elliptic": true } }, - "eth-sig-util>ethereumjs-util>ethereum-cryptography": { - "packages": { - "browserify>buffer": true, - "ethereumjs-util>ethereum-cryptography>keccak": true, - "ethereumjs-util>ethereum-cryptography>secp256k1": true, - "ethereumjs-wallet>randombytes": true - } - }, "eth-sig-util>ethereumjs-util>ethjs-util": { "packages": { "browserify>buffer": true, @@ -3189,21 +3453,13 @@ "bn.js": true, "browserify>assert": true, "browserify>buffer": true, - "ethereumjs-abi>ethereumjs-util>ethereum-cryptography": true, "ethereumjs-abi>ethereumjs-util>ethjs-util": true, "ethereumjs-util>create-hash": true, + "ethereumjs-util>ethereum-cryptography": true, "ethereumjs-util>rlp": true, "ganache>secp256k1>elliptic": true } }, - "ethereumjs-abi>ethereumjs-util>ethereum-cryptography": { - "packages": { - "browserify>buffer": true, - "ethereumjs-util>ethereum-cryptography>keccak": true, - "ethereumjs-util>ethereum-cryptography>secp256k1": true, - "ethereumjs-wallet>randombytes": true - } - }, "ethereumjs-abi>ethereumjs-util>ethjs-util": { "packages": { "browserify>buffer": true, @@ -3388,22 +3644,14 @@ "ethereumjs-wallet>safe-buffer": true } }, - "ethereumjs-wallet>ethereum-cryptography": { - "packages": { - "browserify>buffer": true, - "ethereumjs-util>ethereum-cryptography>keccak": true, - "ethereumjs-util>ethereum-cryptography>secp256k1": true, - "ethereumjs-wallet>randombytes": true - } - }, "ethereumjs-wallet>ethereumjs-util": { "packages": { "bn.js": true, "browserify>assert": true, "browserify>buffer": true, "ethereumjs-util>create-hash": true, + "ethereumjs-util>ethereum-cryptography": true, "ethereumjs-util>rlp": true, - "ethereumjs-wallet>ethereum-cryptography": true, "ethereumjs-wallet>ethereumjs-util>ethjs-util": true, "ganache>secp256k1>elliptic": true } diff --git a/lavamoat/browserify/desktop/policy.json b/lavamoat/browserify/desktop/policy.json index 5236b5b26..0b4baa2ed 100644 --- a/lavamoat/browserify/desktop/policy.json +++ b/lavamoat/browserify/desktop/policy.json @@ -142,7 +142,6 @@ "@ethereumjs/tx>@ethereumjs/rlp": true, "@ethereumjs/tx>@ethereumjs/util": true, "@ethereumjs/tx>ethereum-cryptography": true, - "@ethersproject/providers": true, "browserify>buffer": true, "browserify>insert-module-globals>is-buffer": true } @@ -150,8 +149,6 @@ "@ethereumjs/tx>@chainsafe/ssz": { "packages": { "@ethereumjs/tx>@chainsafe/ssz>@chainsafe/persistent-merkle-tree": true, - "@ethereumjs/tx>@chainsafe/ssz>case": true, - "browserify": true, "browserify>buffer": true } }, @@ -160,7 +157,8 @@ "WeakRef": true }, "packages": { - "browserify": true + "@ethereumjs/tx>@chainsafe/ssz>@chainsafe/as-sha256": true, + "@metamask/key-tree>@noble/hashes": true } }, "@ethereumjs/tx>@ethereumjs/rlp": { @@ -175,50 +173,56 @@ "packages": { "@ethereumjs/tx>@chainsafe/ssz": true, "@ethereumjs/tx>@ethereumjs/rlp": true, - "@ethereumjs/tx>ethereum-cryptography": true, + "@ethereumjs/tx>@ethereumjs/util>ethereum-cryptography": true, + "@ethereumjs/tx>@ethereumjs/util>micro-ftch": true, "browserify>buffer": true, "browserify>events": true, "browserify>insert-module-globals>is-buffer": true } }, + "@ethereumjs/tx>@ethereumjs/util>ethereum-cryptography": { + "globals": { + "TextDecoder": true, + "crypto": true + }, + "packages": { + "@ethereumjs/tx>ethereum-cryptography>@noble/curves": true, + "@metamask/key-tree>@noble/hashes": true + } + }, + "@ethereumjs/tx>@ethereumjs/util>micro-ftch": { + "globals": { + "Headers": true, + "TextDecoder": true, + "URL": true, + "btoa": true, + "fetch": true + }, + "packages": { + "browserify>browserify-zlib": true, + "browserify>buffer": true, + "browserify>https-browserify": true, + "browserify>process": true, + "browserify>stream-http": true, + "browserify>url": true, + "browserify>util": true + } + }, "@ethereumjs/tx>ethereum-cryptography": { "globals": { "TextDecoder": true, "crypto": true }, "packages": { - "@ethereumjs/tx>ethereum-cryptography>@noble/hashes": true, - "@ethereumjs/tx>ethereum-cryptography>@noble/secp256k1": true, - "@ethereumjs/tx>ethereum-cryptography>@scure/bip32": true + "@metamask/key-tree>@noble/hashes": true } }, - "@ethereumjs/tx>ethereum-cryptography>@noble/hashes": { + "@ethereumjs/tx>ethereum-cryptography>@noble/curves": { "globals": { - "TextEncoder": true, - "crypto": true - } - }, - "@ethereumjs/tx>ethereum-cryptography>@noble/secp256k1": { - "globals": { - "crypto": true + "TextEncoder": true }, "packages": { - "browserify>browser-resolve": true - } - }, - "@ethereumjs/tx>ethereum-cryptography>@scure/bip32": { - "packages": { - "@ethereumjs/tx>ethereum-cryptography>@scure/bip32>@noble/secp256k1": true, - "@metamask/key-tree>@noble/hashes": true, - "@metamask/key-tree>@scure/base": true - } - }, - "@ethereumjs/tx>ethereum-cryptography>@scure/bip32>@noble/secp256k1": { - "globals": { - "crypto": true - }, - "packages": { - "browserify>browser-resolve": true + "@metamask/key-tree>@noble/hashes": true } }, "@ethersproject/abi": { @@ -785,22 +789,37 @@ }, "@metamask/address-book-controller": { "packages": { - "@metamask/base-controller": true, + "@metamask/address-book-controller>@metamask/base-controller": true, "@metamask/controller-utils": true } }, + "@metamask/address-book-controller>@metamask/base-controller": { + "packages": { + "immer": true + } + }, "@metamask/announcement-controller": { "packages": { - "@metamask/base-controller": true + "@metamask/announcement-controller>@metamask/base-controller": true + } + }, + "@metamask/announcement-controller>@metamask/base-controller": { + "packages": { + "immer": true } }, "@metamask/approval-controller": { "packages": { + "@metamask/approval-controller>@metamask/base-controller": true, "@metamask/approval-controller>nanoid": true, - "@metamask/base-controller": true, "eth-rpc-errors": true } }, + "@metamask/approval-controller>@metamask/base-controller": { + "packages": { + "immer": true + } + }, "@metamask/approval-controller>nanoid": { "globals": { "crypto.getRandomValues": true @@ -822,9 +841,9 @@ "@ethersproject/contracts": true, "@ethersproject/providers": true, "@metamask/assets-controllers>@metamask/abi-utils": true, + "@metamask/assets-controllers>@metamask/base-controller": true, "@metamask/assets-controllers>abort-controller": true, "@metamask/assets-controllers>multiformats": true, - "@metamask/base-controller": true, "@metamask/contract-metadata": true, "@metamask/controller-utils": true, "@metamask/metamask-eth-abis": true, @@ -856,6 +875,11 @@ "superstruct": true } }, + "@metamask/assets-controllers>@metamask/base-controller": { + "packages": { + "immer": true + } + }, "@metamask/assets-controllers>abort-controller": { "globals": { "AbortController": true @@ -1102,22 +1126,74 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@ethereumjs/tx>ethereum-cryptography": true, + "@metamask/eth-keyring-controller>@metamask/eth-hd-keyring>ethereum-cryptography": true, "@metamask/eth-trezor-keyring>@metamask/eth-sig-util": true, "@metamask/scure-bip39": true, "browserify>buffer": true } }, + "@metamask/eth-keyring-controller>@metamask/eth-hd-keyring>ethereum-cryptography": { + "globals": { + "TextDecoder": true, + "crypto": true + }, + "packages": { + "@metamask/eth-keyring-controller>@metamask/eth-hd-keyring>ethereum-cryptography>@noble/hashes": true, + "@metamask/eth-keyring-controller>@metamask/eth-hd-keyring>ethereum-cryptography>@scure/bip32": true + } + }, + "@metamask/eth-keyring-controller>@metamask/eth-hd-keyring>ethereum-cryptography>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true + } + }, + "@metamask/eth-keyring-controller>@metamask/eth-hd-keyring>ethereum-cryptography>@noble/secp256k1": { + "globals": { + "crypto": true + }, + "packages": { + "browserify>browser-resolve": true + } + }, + "@metamask/eth-keyring-controller>@metamask/eth-hd-keyring>ethereum-cryptography>@scure/bip32": { + "packages": { + "@metamask/eth-keyring-controller>@metamask/eth-hd-keyring>ethereum-cryptography>@noble/secp256k1": true, + "@metamask/eth-keyring-controller>@metamask/eth-hd-keyring>ethereum-cryptography>@scure/bip39>@noble/hashes": true, + "@metamask/key-tree>@scure/base": true + } + }, + "@metamask/eth-keyring-controller>@metamask/eth-hd-keyring>ethereum-cryptography>@scure/bip39>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true + } + }, "@metamask/eth-keyring-controller>@metamask/eth-simple-keyring": { "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@ethereumjs/tx>ethereum-cryptography": true, + "@metamask/eth-keyring-controller>@metamask/eth-simple-keyring>ethereum-cryptography": true, "@metamask/eth-trezor-keyring>@metamask/eth-sig-util": true, "browserify>buffer": true, "browserify>events": true, "ethereumjs-wallet>randombytes": true } }, + "@metamask/eth-keyring-controller>@metamask/eth-simple-keyring>ethereum-cryptography": { + "globals": { + "TextDecoder": true, + "crypto": true + }, + "packages": { + "@metamask/eth-keyring-controller>@metamask/eth-simple-keyring>ethereum-cryptography>@noble/hashes": true + } + }, + "@metamask/eth-keyring-controller>@metamask/eth-simple-keyring>ethereum-cryptography>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true + } + }, "@metamask/eth-keyring-controller>obs-store": { "packages": { "@metamask/eth-token-tracker>safe-event-emitter": true, @@ -1153,25 +1229,17 @@ }, "@metamask/eth-ledger-bridge-keyring>eth-sig-util>ethereumjs-util": { "packages": { - "@metamask/eth-ledger-bridge-keyring>eth-sig-util>ethereumjs-util>ethereum-cryptography": true, "@metamask/eth-ledger-bridge-keyring>eth-sig-util>ethereumjs-util>ethjs-util": true, "bn.js": true, "browserify>assert": true, "browserify>buffer": true, "ethereumjs-util>create-hash": true, + "ethereumjs-util>ethereum-cryptography": true, "ethereumjs-util>rlp": true, "ethereumjs-wallet>safe-buffer": true, "ganache>secp256k1>elliptic": true } }, - "@metamask/eth-ledger-bridge-keyring>eth-sig-util>ethereumjs-util>ethereum-cryptography": { - "packages": { - "browserify>buffer": true, - "ethereumjs-util>ethereum-cryptography>keccak": true, - "ethereumjs-util>ethereum-cryptography>secp256k1": true, - "ethereumjs-wallet>randombytes": true - } - }, "@metamask/eth-ledger-bridge-keyring>eth-sig-util>ethereumjs-util>ethjs-util": { "packages": { "browserify>buffer": true, @@ -1328,7 +1396,7 @@ "@metamask/eth-trezor-keyring>@metamask/eth-sig-util": { "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@ethereumjs/tx>ethereum-cryptography": true, + "@metamask/eth-trezor-keyring>@metamask/eth-sig-util>ethereum-cryptography": true, "@metamask/eth-trezor-keyring>@metamask/eth-sig-util>ethjs-util": true, "bn.js": true, "browserify>buffer": true, @@ -1336,6 +1404,21 @@ "eth-sig-util>tweetnacl-util": true } }, + "@metamask/eth-trezor-keyring>@metamask/eth-sig-util>ethereum-cryptography": { + "globals": { + "TextDecoder": true, + "crypto": true + }, + "packages": { + "@metamask/eth-trezor-keyring>@metamask/eth-sig-util>ethereum-cryptography>@noble/hashes": true + } + }, + "@metamask/eth-trezor-keyring>@metamask/eth-sig-util>ethereum-cryptography>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true + } + }, "@metamask/eth-trezor-keyring>@metamask/eth-sig-util>ethjs-util": { "packages": { "browserify>buffer": true, @@ -1511,14 +1594,19 @@ "setInterval": true }, "packages": { - "@metamask/base-controller": true, "@metamask/controller-utils": true, + "@metamask/gas-fee-controller>@metamask/base-controller": true, "eth-query": true, "ethereumjs-util": true, "ethjs>ethjs-unit": true, "uuid": true } }, + "@metamask/gas-fee-controller>@metamask/base-controller": { + "packages": { + "immer": true + } + }, "@metamask/jazzicon": { "globals": { "document.createElement": true, @@ -1617,8 +1705,8 @@ }, "@metamask/message-manager": { "packages": { - "@metamask/base-controller": true, "@metamask/controller-utils": true, + "@metamask/message-manager>@metamask/base-controller": true, "@metamask/message-manager>jsonschema": true, "browserify>buffer": true, "browserify>events": true, @@ -1627,6 +1715,11 @@ "uuid": true } }, + "@metamask/message-manager>@metamask/base-controller": { + "packages": { + "immer": true + } + }, "@metamask/message-manager>jsonschema": { "packages": { "browserify>url": true @@ -1634,11 +1727,16 @@ }, "@metamask/notification-controller": { "packages": { - "@metamask/base-controller": true, "@metamask/controller-utils": true, + "@metamask/notification-controller>@metamask/base-controller": true, "@metamask/notification-controller>nanoid": true } }, + "@metamask/notification-controller>@metamask/base-controller": { + "packages": { + "immer": true + } + }, "@metamask/notification-controller>nanoid": { "globals": { "crypto.getRandomValues": true @@ -1664,8 +1762,8 @@ "console.error": true }, "packages": { - "@metamask/base-controller": true, "@metamask/controller-utils": true, + "@metamask/permission-controller>@metamask/base-controller": true, "@metamask/permission-controller>nanoid": true, "deep-freeze-strict": true, "eth-rpc-errors": true, @@ -1673,6 +1771,11 @@ "json-rpc-engine": true } }, + "@metamask/permission-controller>@metamask/base-controller": { + "packages": { + "immer": true + } + }, "@metamask/permission-controller>nanoid": { "globals": { "crypto.getRandomValues": true @@ -1683,12 +1786,17 @@ "fetch": true }, "packages": { - "@metamask/base-controller": true, "@metamask/controller-utils": true, + "@metamask/phishing-controller>@metamask/base-controller": true, "@metamask/phishing-warning>eth-phishing-detect": true, "punycode": true } }, + "@metamask/phishing-controller>@metamask/base-controller": { + "packages": { + "immer": true + } + }, "@metamask/phishing-warning>eth-phishing-detect": { "packages": { "eslint>optionator>fast-levenshtein": true @@ -1755,10 +1863,15 @@ "setTimeout": true }, "packages": { - "@metamask/base-controller": true, + "@metamask/rate-limit-controller>@metamask/base-controller": true, "eth-rpc-errors": true } }, + "@metamask/rate-limit-controller>@metamask/base-controller": { + "packages": { + "immer": true + } + }, "@metamask/rpc-methods-flask": { "packages": { "@metamask/key-tree": true, @@ -1823,8 +1936,14 @@ "TextEncoder": true }, "packages": { - "@metamask/key-tree>@noble/hashes": true, - "@metamask/key-tree>@scure/base": true + "@metamask/key-tree>@scure/base": true, + "@metamask/scure-bip39>@noble/hashes": true + } + }, + "@metamask/scure-bip39>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true } }, "@metamask/signature-controller": { @@ -1832,15 +1951,20 @@ "console.info": true }, "packages": { - "@metamask/base-controller": true, "@metamask/controller-utils": true, "@metamask/message-manager": true, + "@metamask/signature-controller>@metamask/base-controller": true, "browserify>buffer": true, "browserify>events": true, "eth-rpc-errors": true, "ethereumjs-util": true } }, + "@metamask/signature-controller>@metamask/base-controller": { + "packages": { + "immer": true + } + }, "@metamask/smart-transactions-controller": { "globals": { "URLSearchParams": true, @@ -1923,10 +2047,10 @@ "setTimeout": true }, "packages": { - "@metamask/base-controller": true, "@metamask/permission-controller": true, "@metamask/post-message-stream": true, "@metamask/providers>@metamask/object-multiplex": true, + "@metamask/snaps-controllers-flask>@metamask/base-controller": true, "@metamask/snaps-controllers-flask>@metamask/rpc-methods": true, "@metamask/snaps-controllers-flask>@metamask/snaps-utils": true, "@metamask/snaps-controllers-flask>concat-stream": true, @@ -1943,6 +2067,11 @@ "pump": true } }, + "@metamask/snaps-controllers-flask>@metamask/base-controller": { + "packages": { + "immer": true + } + }, "@metamask/snaps-controllers-flask>@metamask/rpc-methods": { "packages": { "@metamask/key-tree": true, @@ -2194,7 +2323,12 @@ }, "@metamask/subject-metadata-controller": { "packages": { - "@metamask/base-controller": true + "@metamask/subject-metadata-controller>@metamask/base-controller": true + } + }, + "@metamask/subject-metadata-controller>@metamask/base-controller": { + "packages": { + "immer": true } }, "@metamask/utils": { @@ -2981,6 +3115,16 @@ "ethjs-query>babel-runtime>core-js": true } }, + "browserify>browserify-zlib": { + "packages": { + "browserify>assert": true, + "browserify>browserify-zlib>pako": true, + "browserify>buffer": true, + "browserify>process": true, + "browserify>stream-browserify": true, + "browserify>util": true + } + }, "browserify>buffer": { "globals": { "console": true @@ -3147,6 +3291,12 @@ "browserify>has>function-bind": true } }, + "browserify>https-browserify": { + "packages": { + "browserify>stream-http": true, + "browserify>url": true + } + }, "browserify>os-browserify": { "globals": { "location": true, @@ -3176,6 +3326,41 @@ "readable-stream": true } }, + "browserify>stream-http": { + "globals": { + "AbortController": true, + "Blob": true, + "MSStreamReader": true, + "ReadableStream": true, + "WritableStream": true, + "XDomainRequest": true, + "XMLHttpRequest": true, + "clearTimeout": true, + "fetch": true, + "location.protocol.search": true, + "setTimeout": true + }, + "packages": { + "browserify>buffer": true, + "browserify>process": true, + "browserify>stream-http>builtin-status-codes": true, + "browserify>stream-http>readable-stream": true, + "browserify>url": true, + "pumpify>inherits": true, + "watchify>xtend": true + } + }, + "browserify>stream-http>readable-stream": { + "packages": { + "browserify>browser-resolve": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>process": true, + "browserify>string_decoder": true, + "pumpify>inherits": true, + "readable-stream>util-deprecate": true + } + }, "browserify>string_decoder": { "packages": { "ethereumjs-wallet>safe-buffer": true @@ -3397,16 +3582,59 @@ "setInterval": true }, "packages": { - "@ethereumjs/tx": true, "@ethereumjs/tx>@ethereumjs/util": true, "browserify>buffer": true, "browserify>crypto-browserify": true, "browserify>events": true, + "eth-lattice-keyring>@ethereumjs/tx": true, "eth-lattice-keyring>bn.js": true, "eth-lattice-keyring>gridplus-sdk": true, "eth-lattice-keyring>rlp": true } }, + "eth-lattice-keyring>@ethereumjs/tx": { + "packages": { + "@ethereumjs/common": true, + "@ethereumjs/tx>@ethereumjs/rlp": true, + "@ethereumjs/tx>@ethereumjs/util": true, + "@ethersproject/providers": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz": true, + "eth-lattice-keyring>@ethereumjs/tx>ethereum-cryptography": true + } + }, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz": { + "packages": { + "browserify": true, + "browserify>buffer": true, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz>@chainsafe/persistent-merkle-tree": true, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz>case": true + } + }, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz>@chainsafe/persistent-merkle-tree": { + "globals": { + "WeakRef": true + }, + "packages": { + "browserify": true + } + }, + "eth-lattice-keyring>@ethereumjs/tx>ethereum-cryptography": { + "globals": { + "TextDecoder": true, + "crypto": true + }, + "packages": { + "eth-lattice-keyring>@ethereumjs/tx>ethereum-cryptography>@noble/hashes": true + } + }, + "eth-lattice-keyring>@ethereumjs/tx>ethereum-cryptography>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true + } + }, "eth-lattice-keyring>bn.js": { "globals": { "Buffer": true @@ -3430,12 +3658,12 @@ "setTimeout": true }, "packages": { - "@ethereumjs/common": true, "@ethereumjs/common>crc-32": true, - "@ethereumjs/tx": true, "@ethersproject/abi": true, "bn.js": true, "browserify>buffer": true, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/common": true, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx": true, "eth-lattice-keyring>gridplus-sdk>bech32": true, "eth-lattice-keyring>gridplus-sdk>bignumber.js": true, "eth-lattice-keyring>gridplus-sdk>bitwise": true, @@ -3452,6 +3680,65 @@ "lodash": true } }, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/common": { + "packages": { + "@ethereumjs/common>crc-32": true, + "@ethereumjs/tx>@ethereumjs/util": true, + "browserify>buffer": true, + "browserify>events": true + } + }, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx": { + "packages": { + "@ethereumjs/tx>@ethereumjs/rlp": true, + "@ethereumjs/tx>@ethereumjs/util": true, + "@ethersproject/providers": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@chainsafe/ssz": true, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/common": true, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>ethereum-cryptography": true + } + }, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@chainsafe/ssz": { + "packages": { + "browserify": true, + "browserify>buffer": true, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz>case": true, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@chainsafe/ssz>@chainsafe/persistent-merkle-tree": true + } + }, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@chainsafe/ssz>@chainsafe/persistent-merkle-tree": { + "globals": { + "WeakRef": true + }, + "packages": { + "browserify": true + } + }, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/common": { + "packages": { + "@ethereumjs/common>crc-32": true, + "@ethereumjs/tx>@ethereumjs/util": true, + "browserify>buffer": true, + "browserify>events": true + } + }, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>ethereum-cryptography": { + "globals": { + "TextDecoder": true, + "crypto": true + }, + "packages": { + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>ethereum-cryptography>@noble/hashes": true + } + }, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>ethereum-cryptography>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true + } + }, "eth-lattice-keyring>gridplus-sdk>bignumber.js": { "globals": { "crypto": true, @@ -3581,22 +3868,14 @@ "bn.js": true, "browserify>assert": true, "browserify>buffer": true, - "eth-sig-util>ethereumjs-util>ethereum-cryptography": true, "eth-sig-util>ethereumjs-util>ethjs-util": true, "ethereumjs-util>create-hash": true, + "ethereumjs-util>ethereum-cryptography": true, "ethereumjs-util>rlp": true, "ethereumjs-wallet>safe-buffer": true, "ganache>secp256k1>elliptic": true } }, - "eth-sig-util>ethereumjs-util>ethereum-cryptography": { - "packages": { - "browserify>buffer": true, - "ethereumjs-util>ethereum-cryptography>keccak": true, - "ethereumjs-util>ethereum-cryptography>secp256k1": true, - "ethereumjs-wallet>randombytes": true - } - }, "eth-sig-util>ethereumjs-util>ethjs-util": { "packages": { "browserify>buffer": true, @@ -3635,21 +3914,13 @@ "bn.js": true, "browserify>assert": true, "browserify>buffer": true, - "ethereumjs-abi>ethereumjs-util>ethereum-cryptography": true, "ethereumjs-abi>ethereumjs-util>ethjs-util": true, "ethereumjs-util>create-hash": true, + "ethereumjs-util>ethereum-cryptography": true, "ethereumjs-util>rlp": true, "ganache>secp256k1>elliptic": true } }, - "ethereumjs-abi>ethereumjs-util>ethereum-cryptography": { - "packages": { - "browserify>buffer": true, - "ethereumjs-util>ethereum-cryptography>keccak": true, - "ethereumjs-util>ethereum-cryptography>secp256k1": true, - "ethereumjs-wallet>randombytes": true - } - }, "ethereumjs-abi>ethereumjs-util>ethjs-util": { "packages": { "browserify>buffer": true, @@ -3834,22 +4105,14 @@ "ethereumjs-wallet>safe-buffer": true } }, - "ethereumjs-wallet>ethereum-cryptography": { - "packages": { - "browserify>buffer": true, - "ethereumjs-util>ethereum-cryptography>keccak": true, - "ethereumjs-util>ethereum-cryptography>secp256k1": true, - "ethereumjs-wallet>randombytes": true - } - }, "ethereumjs-wallet>ethereumjs-util": { "packages": { "bn.js": true, "browserify>assert": true, "browserify>buffer": true, "ethereumjs-util>create-hash": true, + "ethereumjs-util>ethereum-cryptography": true, "ethereumjs-util>rlp": true, - "ethereumjs-wallet>ethereum-cryptography": true, "ethereumjs-wallet>ethereumjs-util>ethjs-util": true, "ganache>secp256k1>elliptic": true } diff --git a/lavamoat/browserify/flask/policy.json b/lavamoat/browserify/flask/policy.json index 5236b5b26..0b4baa2ed 100644 --- a/lavamoat/browserify/flask/policy.json +++ b/lavamoat/browserify/flask/policy.json @@ -142,7 +142,6 @@ "@ethereumjs/tx>@ethereumjs/rlp": true, "@ethereumjs/tx>@ethereumjs/util": true, "@ethereumjs/tx>ethereum-cryptography": true, - "@ethersproject/providers": true, "browserify>buffer": true, "browserify>insert-module-globals>is-buffer": true } @@ -150,8 +149,6 @@ "@ethereumjs/tx>@chainsafe/ssz": { "packages": { "@ethereumjs/tx>@chainsafe/ssz>@chainsafe/persistent-merkle-tree": true, - "@ethereumjs/tx>@chainsafe/ssz>case": true, - "browserify": true, "browserify>buffer": true } }, @@ -160,7 +157,8 @@ "WeakRef": true }, "packages": { - "browserify": true + "@ethereumjs/tx>@chainsafe/ssz>@chainsafe/as-sha256": true, + "@metamask/key-tree>@noble/hashes": true } }, "@ethereumjs/tx>@ethereumjs/rlp": { @@ -175,50 +173,56 @@ "packages": { "@ethereumjs/tx>@chainsafe/ssz": true, "@ethereumjs/tx>@ethereumjs/rlp": true, - "@ethereumjs/tx>ethereum-cryptography": true, + "@ethereumjs/tx>@ethereumjs/util>ethereum-cryptography": true, + "@ethereumjs/tx>@ethereumjs/util>micro-ftch": true, "browserify>buffer": true, "browserify>events": true, "browserify>insert-module-globals>is-buffer": true } }, + "@ethereumjs/tx>@ethereumjs/util>ethereum-cryptography": { + "globals": { + "TextDecoder": true, + "crypto": true + }, + "packages": { + "@ethereumjs/tx>ethereum-cryptography>@noble/curves": true, + "@metamask/key-tree>@noble/hashes": true + } + }, + "@ethereumjs/tx>@ethereumjs/util>micro-ftch": { + "globals": { + "Headers": true, + "TextDecoder": true, + "URL": true, + "btoa": true, + "fetch": true + }, + "packages": { + "browserify>browserify-zlib": true, + "browserify>buffer": true, + "browserify>https-browserify": true, + "browserify>process": true, + "browserify>stream-http": true, + "browserify>url": true, + "browserify>util": true + } + }, "@ethereumjs/tx>ethereum-cryptography": { "globals": { "TextDecoder": true, "crypto": true }, "packages": { - "@ethereumjs/tx>ethereum-cryptography>@noble/hashes": true, - "@ethereumjs/tx>ethereum-cryptography>@noble/secp256k1": true, - "@ethereumjs/tx>ethereum-cryptography>@scure/bip32": true + "@metamask/key-tree>@noble/hashes": true } }, - "@ethereumjs/tx>ethereum-cryptography>@noble/hashes": { + "@ethereumjs/tx>ethereum-cryptography>@noble/curves": { "globals": { - "TextEncoder": true, - "crypto": true - } - }, - "@ethereumjs/tx>ethereum-cryptography>@noble/secp256k1": { - "globals": { - "crypto": true + "TextEncoder": true }, "packages": { - "browserify>browser-resolve": true - } - }, - "@ethereumjs/tx>ethereum-cryptography>@scure/bip32": { - "packages": { - "@ethereumjs/tx>ethereum-cryptography>@scure/bip32>@noble/secp256k1": true, - "@metamask/key-tree>@noble/hashes": true, - "@metamask/key-tree>@scure/base": true - } - }, - "@ethereumjs/tx>ethereum-cryptography>@scure/bip32>@noble/secp256k1": { - "globals": { - "crypto": true - }, - "packages": { - "browserify>browser-resolve": true + "@metamask/key-tree>@noble/hashes": true } }, "@ethersproject/abi": { @@ -785,22 +789,37 @@ }, "@metamask/address-book-controller": { "packages": { - "@metamask/base-controller": true, + "@metamask/address-book-controller>@metamask/base-controller": true, "@metamask/controller-utils": true } }, + "@metamask/address-book-controller>@metamask/base-controller": { + "packages": { + "immer": true + } + }, "@metamask/announcement-controller": { "packages": { - "@metamask/base-controller": true + "@metamask/announcement-controller>@metamask/base-controller": true + } + }, + "@metamask/announcement-controller>@metamask/base-controller": { + "packages": { + "immer": true } }, "@metamask/approval-controller": { "packages": { + "@metamask/approval-controller>@metamask/base-controller": true, "@metamask/approval-controller>nanoid": true, - "@metamask/base-controller": true, "eth-rpc-errors": true } }, + "@metamask/approval-controller>@metamask/base-controller": { + "packages": { + "immer": true + } + }, "@metamask/approval-controller>nanoid": { "globals": { "crypto.getRandomValues": true @@ -822,9 +841,9 @@ "@ethersproject/contracts": true, "@ethersproject/providers": true, "@metamask/assets-controllers>@metamask/abi-utils": true, + "@metamask/assets-controllers>@metamask/base-controller": true, "@metamask/assets-controllers>abort-controller": true, "@metamask/assets-controllers>multiformats": true, - "@metamask/base-controller": true, "@metamask/contract-metadata": true, "@metamask/controller-utils": true, "@metamask/metamask-eth-abis": true, @@ -856,6 +875,11 @@ "superstruct": true } }, + "@metamask/assets-controllers>@metamask/base-controller": { + "packages": { + "immer": true + } + }, "@metamask/assets-controllers>abort-controller": { "globals": { "AbortController": true @@ -1102,22 +1126,74 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@ethereumjs/tx>ethereum-cryptography": true, + "@metamask/eth-keyring-controller>@metamask/eth-hd-keyring>ethereum-cryptography": true, "@metamask/eth-trezor-keyring>@metamask/eth-sig-util": true, "@metamask/scure-bip39": true, "browserify>buffer": true } }, + "@metamask/eth-keyring-controller>@metamask/eth-hd-keyring>ethereum-cryptography": { + "globals": { + "TextDecoder": true, + "crypto": true + }, + "packages": { + "@metamask/eth-keyring-controller>@metamask/eth-hd-keyring>ethereum-cryptography>@noble/hashes": true, + "@metamask/eth-keyring-controller>@metamask/eth-hd-keyring>ethereum-cryptography>@scure/bip32": true + } + }, + "@metamask/eth-keyring-controller>@metamask/eth-hd-keyring>ethereum-cryptography>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true + } + }, + "@metamask/eth-keyring-controller>@metamask/eth-hd-keyring>ethereum-cryptography>@noble/secp256k1": { + "globals": { + "crypto": true + }, + "packages": { + "browserify>browser-resolve": true + } + }, + "@metamask/eth-keyring-controller>@metamask/eth-hd-keyring>ethereum-cryptography>@scure/bip32": { + "packages": { + "@metamask/eth-keyring-controller>@metamask/eth-hd-keyring>ethereum-cryptography>@noble/secp256k1": true, + "@metamask/eth-keyring-controller>@metamask/eth-hd-keyring>ethereum-cryptography>@scure/bip39>@noble/hashes": true, + "@metamask/key-tree>@scure/base": true + } + }, + "@metamask/eth-keyring-controller>@metamask/eth-hd-keyring>ethereum-cryptography>@scure/bip39>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true + } + }, "@metamask/eth-keyring-controller>@metamask/eth-simple-keyring": { "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@ethereumjs/tx>ethereum-cryptography": true, + "@metamask/eth-keyring-controller>@metamask/eth-simple-keyring>ethereum-cryptography": true, "@metamask/eth-trezor-keyring>@metamask/eth-sig-util": true, "browserify>buffer": true, "browserify>events": true, "ethereumjs-wallet>randombytes": true } }, + "@metamask/eth-keyring-controller>@metamask/eth-simple-keyring>ethereum-cryptography": { + "globals": { + "TextDecoder": true, + "crypto": true + }, + "packages": { + "@metamask/eth-keyring-controller>@metamask/eth-simple-keyring>ethereum-cryptography>@noble/hashes": true + } + }, + "@metamask/eth-keyring-controller>@metamask/eth-simple-keyring>ethereum-cryptography>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true + } + }, "@metamask/eth-keyring-controller>obs-store": { "packages": { "@metamask/eth-token-tracker>safe-event-emitter": true, @@ -1153,25 +1229,17 @@ }, "@metamask/eth-ledger-bridge-keyring>eth-sig-util>ethereumjs-util": { "packages": { - "@metamask/eth-ledger-bridge-keyring>eth-sig-util>ethereumjs-util>ethereum-cryptography": true, "@metamask/eth-ledger-bridge-keyring>eth-sig-util>ethereumjs-util>ethjs-util": true, "bn.js": true, "browserify>assert": true, "browserify>buffer": true, "ethereumjs-util>create-hash": true, + "ethereumjs-util>ethereum-cryptography": true, "ethereumjs-util>rlp": true, "ethereumjs-wallet>safe-buffer": true, "ganache>secp256k1>elliptic": true } }, - "@metamask/eth-ledger-bridge-keyring>eth-sig-util>ethereumjs-util>ethereum-cryptography": { - "packages": { - "browserify>buffer": true, - "ethereumjs-util>ethereum-cryptography>keccak": true, - "ethereumjs-util>ethereum-cryptography>secp256k1": true, - "ethereumjs-wallet>randombytes": true - } - }, "@metamask/eth-ledger-bridge-keyring>eth-sig-util>ethereumjs-util>ethjs-util": { "packages": { "browserify>buffer": true, @@ -1328,7 +1396,7 @@ "@metamask/eth-trezor-keyring>@metamask/eth-sig-util": { "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@ethereumjs/tx>ethereum-cryptography": true, + "@metamask/eth-trezor-keyring>@metamask/eth-sig-util>ethereum-cryptography": true, "@metamask/eth-trezor-keyring>@metamask/eth-sig-util>ethjs-util": true, "bn.js": true, "browserify>buffer": true, @@ -1336,6 +1404,21 @@ "eth-sig-util>tweetnacl-util": true } }, + "@metamask/eth-trezor-keyring>@metamask/eth-sig-util>ethereum-cryptography": { + "globals": { + "TextDecoder": true, + "crypto": true + }, + "packages": { + "@metamask/eth-trezor-keyring>@metamask/eth-sig-util>ethereum-cryptography>@noble/hashes": true + } + }, + "@metamask/eth-trezor-keyring>@metamask/eth-sig-util>ethereum-cryptography>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true + } + }, "@metamask/eth-trezor-keyring>@metamask/eth-sig-util>ethjs-util": { "packages": { "browserify>buffer": true, @@ -1511,14 +1594,19 @@ "setInterval": true }, "packages": { - "@metamask/base-controller": true, "@metamask/controller-utils": true, + "@metamask/gas-fee-controller>@metamask/base-controller": true, "eth-query": true, "ethereumjs-util": true, "ethjs>ethjs-unit": true, "uuid": true } }, + "@metamask/gas-fee-controller>@metamask/base-controller": { + "packages": { + "immer": true + } + }, "@metamask/jazzicon": { "globals": { "document.createElement": true, @@ -1617,8 +1705,8 @@ }, "@metamask/message-manager": { "packages": { - "@metamask/base-controller": true, "@metamask/controller-utils": true, + "@metamask/message-manager>@metamask/base-controller": true, "@metamask/message-manager>jsonschema": true, "browserify>buffer": true, "browserify>events": true, @@ -1627,6 +1715,11 @@ "uuid": true } }, + "@metamask/message-manager>@metamask/base-controller": { + "packages": { + "immer": true + } + }, "@metamask/message-manager>jsonschema": { "packages": { "browserify>url": true @@ -1634,11 +1727,16 @@ }, "@metamask/notification-controller": { "packages": { - "@metamask/base-controller": true, "@metamask/controller-utils": true, + "@metamask/notification-controller>@metamask/base-controller": true, "@metamask/notification-controller>nanoid": true } }, + "@metamask/notification-controller>@metamask/base-controller": { + "packages": { + "immer": true + } + }, "@metamask/notification-controller>nanoid": { "globals": { "crypto.getRandomValues": true @@ -1664,8 +1762,8 @@ "console.error": true }, "packages": { - "@metamask/base-controller": true, "@metamask/controller-utils": true, + "@metamask/permission-controller>@metamask/base-controller": true, "@metamask/permission-controller>nanoid": true, "deep-freeze-strict": true, "eth-rpc-errors": true, @@ -1673,6 +1771,11 @@ "json-rpc-engine": true } }, + "@metamask/permission-controller>@metamask/base-controller": { + "packages": { + "immer": true + } + }, "@metamask/permission-controller>nanoid": { "globals": { "crypto.getRandomValues": true @@ -1683,12 +1786,17 @@ "fetch": true }, "packages": { - "@metamask/base-controller": true, "@metamask/controller-utils": true, + "@metamask/phishing-controller>@metamask/base-controller": true, "@metamask/phishing-warning>eth-phishing-detect": true, "punycode": true } }, + "@metamask/phishing-controller>@metamask/base-controller": { + "packages": { + "immer": true + } + }, "@metamask/phishing-warning>eth-phishing-detect": { "packages": { "eslint>optionator>fast-levenshtein": true @@ -1755,10 +1863,15 @@ "setTimeout": true }, "packages": { - "@metamask/base-controller": true, + "@metamask/rate-limit-controller>@metamask/base-controller": true, "eth-rpc-errors": true } }, + "@metamask/rate-limit-controller>@metamask/base-controller": { + "packages": { + "immer": true + } + }, "@metamask/rpc-methods-flask": { "packages": { "@metamask/key-tree": true, @@ -1823,8 +1936,14 @@ "TextEncoder": true }, "packages": { - "@metamask/key-tree>@noble/hashes": true, - "@metamask/key-tree>@scure/base": true + "@metamask/key-tree>@scure/base": true, + "@metamask/scure-bip39>@noble/hashes": true + } + }, + "@metamask/scure-bip39>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true } }, "@metamask/signature-controller": { @@ -1832,15 +1951,20 @@ "console.info": true }, "packages": { - "@metamask/base-controller": true, "@metamask/controller-utils": true, "@metamask/message-manager": true, + "@metamask/signature-controller>@metamask/base-controller": true, "browserify>buffer": true, "browserify>events": true, "eth-rpc-errors": true, "ethereumjs-util": true } }, + "@metamask/signature-controller>@metamask/base-controller": { + "packages": { + "immer": true + } + }, "@metamask/smart-transactions-controller": { "globals": { "URLSearchParams": true, @@ -1923,10 +2047,10 @@ "setTimeout": true }, "packages": { - "@metamask/base-controller": true, "@metamask/permission-controller": true, "@metamask/post-message-stream": true, "@metamask/providers>@metamask/object-multiplex": true, + "@metamask/snaps-controllers-flask>@metamask/base-controller": true, "@metamask/snaps-controllers-flask>@metamask/rpc-methods": true, "@metamask/snaps-controllers-flask>@metamask/snaps-utils": true, "@metamask/snaps-controllers-flask>concat-stream": true, @@ -1943,6 +2067,11 @@ "pump": true } }, + "@metamask/snaps-controllers-flask>@metamask/base-controller": { + "packages": { + "immer": true + } + }, "@metamask/snaps-controllers-flask>@metamask/rpc-methods": { "packages": { "@metamask/key-tree": true, @@ -2194,7 +2323,12 @@ }, "@metamask/subject-metadata-controller": { "packages": { - "@metamask/base-controller": true + "@metamask/subject-metadata-controller>@metamask/base-controller": true + } + }, + "@metamask/subject-metadata-controller>@metamask/base-controller": { + "packages": { + "immer": true } }, "@metamask/utils": { @@ -2981,6 +3115,16 @@ "ethjs-query>babel-runtime>core-js": true } }, + "browserify>browserify-zlib": { + "packages": { + "browserify>assert": true, + "browserify>browserify-zlib>pako": true, + "browserify>buffer": true, + "browserify>process": true, + "browserify>stream-browserify": true, + "browserify>util": true + } + }, "browserify>buffer": { "globals": { "console": true @@ -3147,6 +3291,12 @@ "browserify>has>function-bind": true } }, + "browserify>https-browserify": { + "packages": { + "browserify>stream-http": true, + "browserify>url": true + } + }, "browserify>os-browserify": { "globals": { "location": true, @@ -3176,6 +3326,41 @@ "readable-stream": true } }, + "browserify>stream-http": { + "globals": { + "AbortController": true, + "Blob": true, + "MSStreamReader": true, + "ReadableStream": true, + "WritableStream": true, + "XDomainRequest": true, + "XMLHttpRequest": true, + "clearTimeout": true, + "fetch": true, + "location.protocol.search": true, + "setTimeout": true + }, + "packages": { + "browserify>buffer": true, + "browserify>process": true, + "browserify>stream-http>builtin-status-codes": true, + "browserify>stream-http>readable-stream": true, + "browserify>url": true, + "pumpify>inherits": true, + "watchify>xtend": true + } + }, + "browserify>stream-http>readable-stream": { + "packages": { + "browserify>browser-resolve": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>process": true, + "browserify>string_decoder": true, + "pumpify>inherits": true, + "readable-stream>util-deprecate": true + } + }, "browserify>string_decoder": { "packages": { "ethereumjs-wallet>safe-buffer": true @@ -3397,16 +3582,59 @@ "setInterval": true }, "packages": { - "@ethereumjs/tx": true, "@ethereumjs/tx>@ethereumjs/util": true, "browserify>buffer": true, "browserify>crypto-browserify": true, "browserify>events": true, + "eth-lattice-keyring>@ethereumjs/tx": true, "eth-lattice-keyring>bn.js": true, "eth-lattice-keyring>gridplus-sdk": true, "eth-lattice-keyring>rlp": true } }, + "eth-lattice-keyring>@ethereumjs/tx": { + "packages": { + "@ethereumjs/common": true, + "@ethereumjs/tx>@ethereumjs/rlp": true, + "@ethereumjs/tx>@ethereumjs/util": true, + "@ethersproject/providers": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz": true, + "eth-lattice-keyring>@ethereumjs/tx>ethereum-cryptography": true + } + }, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz": { + "packages": { + "browserify": true, + "browserify>buffer": true, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz>@chainsafe/persistent-merkle-tree": true, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz>case": true + } + }, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz>@chainsafe/persistent-merkle-tree": { + "globals": { + "WeakRef": true + }, + "packages": { + "browserify": true + } + }, + "eth-lattice-keyring>@ethereumjs/tx>ethereum-cryptography": { + "globals": { + "TextDecoder": true, + "crypto": true + }, + "packages": { + "eth-lattice-keyring>@ethereumjs/tx>ethereum-cryptography>@noble/hashes": true + } + }, + "eth-lattice-keyring>@ethereumjs/tx>ethereum-cryptography>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true + } + }, "eth-lattice-keyring>bn.js": { "globals": { "Buffer": true @@ -3430,12 +3658,12 @@ "setTimeout": true }, "packages": { - "@ethereumjs/common": true, "@ethereumjs/common>crc-32": true, - "@ethereumjs/tx": true, "@ethersproject/abi": true, "bn.js": true, "browserify>buffer": true, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/common": true, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx": true, "eth-lattice-keyring>gridplus-sdk>bech32": true, "eth-lattice-keyring>gridplus-sdk>bignumber.js": true, "eth-lattice-keyring>gridplus-sdk>bitwise": true, @@ -3452,6 +3680,65 @@ "lodash": true } }, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/common": { + "packages": { + "@ethereumjs/common>crc-32": true, + "@ethereumjs/tx>@ethereumjs/util": true, + "browserify>buffer": true, + "browserify>events": true + } + }, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx": { + "packages": { + "@ethereumjs/tx>@ethereumjs/rlp": true, + "@ethereumjs/tx>@ethereumjs/util": true, + "@ethersproject/providers": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@chainsafe/ssz": true, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/common": true, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>ethereum-cryptography": true + } + }, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@chainsafe/ssz": { + "packages": { + "browserify": true, + "browserify>buffer": true, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz>case": true, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@chainsafe/ssz>@chainsafe/persistent-merkle-tree": true + } + }, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@chainsafe/ssz>@chainsafe/persistent-merkle-tree": { + "globals": { + "WeakRef": true + }, + "packages": { + "browserify": true + } + }, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/common": { + "packages": { + "@ethereumjs/common>crc-32": true, + "@ethereumjs/tx>@ethereumjs/util": true, + "browserify>buffer": true, + "browserify>events": true + } + }, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>ethereum-cryptography": { + "globals": { + "TextDecoder": true, + "crypto": true + }, + "packages": { + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>ethereum-cryptography>@noble/hashes": true + } + }, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>ethereum-cryptography>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true + } + }, "eth-lattice-keyring>gridplus-sdk>bignumber.js": { "globals": { "crypto": true, @@ -3581,22 +3868,14 @@ "bn.js": true, "browserify>assert": true, "browserify>buffer": true, - "eth-sig-util>ethereumjs-util>ethereum-cryptography": true, "eth-sig-util>ethereumjs-util>ethjs-util": true, "ethereumjs-util>create-hash": true, + "ethereumjs-util>ethereum-cryptography": true, "ethereumjs-util>rlp": true, "ethereumjs-wallet>safe-buffer": true, "ganache>secp256k1>elliptic": true } }, - "eth-sig-util>ethereumjs-util>ethereum-cryptography": { - "packages": { - "browserify>buffer": true, - "ethereumjs-util>ethereum-cryptography>keccak": true, - "ethereumjs-util>ethereum-cryptography>secp256k1": true, - "ethereumjs-wallet>randombytes": true - } - }, "eth-sig-util>ethereumjs-util>ethjs-util": { "packages": { "browserify>buffer": true, @@ -3635,21 +3914,13 @@ "bn.js": true, "browserify>assert": true, "browserify>buffer": true, - "ethereumjs-abi>ethereumjs-util>ethereum-cryptography": true, "ethereumjs-abi>ethereumjs-util>ethjs-util": true, "ethereumjs-util>create-hash": true, + "ethereumjs-util>ethereum-cryptography": true, "ethereumjs-util>rlp": true, "ganache>secp256k1>elliptic": true } }, - "ethereumjs-abi>ethereumjs-util>ethereum-cryptography": { - "packages": { - "browserify>buffer": true, - "ethereumjs-util>ethereum-cryptography>keccak": true, - "ethereumjs-util>ethereum-cryptography>secp256k1": true, - "ethereumjs-wallet>randombytes": true - } - }, "ethereumjs-abi>ethereumjs-util>ethjs-util": { "packages": { "browserify>buffer": true, @@ -3834,22 +4105,14 @@ "ethereumjs-wallet>safe-buffer": true } }, - "ethereumjs-wallet>ethereum-cryptography": { - "packages": { - "browserify>buffer": true, - "ethereumjs-util>ethereum-cryptography>keccak": true, - "ethereumjs-util>ethereum-cryptography>secp256k1": true, - "ethereumjs-wallet>randombytes": true - } - }, "ethereumjs-wallet>ethereumjs-util": { "packages": { "bn.js": true, "browserify>assert": true, "browserify>buffer": true, "ethereumjs-util>create-hash": true, + "ethereumjs-util>ethereum-cryptography": true, "ethereumjs-util>rlp": true, - "ethereumjs-wallet>ethereum-cryptography": true, "ethereumjs-wallet>ethereumjs-util>ethjs-util": true, "ganache>secp256k1>elliptic": true } diff --git a/lavamoat/browserify/main/policy.json b/lavamoat/browserify/main/policy.json index f818bbd0e..ed6ced9ce 100644 --- a/lavamoat/browserify/main/policy.json +++ b/lavamoat/browserify/main/policy.json @@ -142,7 +142,6 @@ "@ethereumjs/tx>@ethereumjs/rlp": true, "@ethereumjs/tx>@ethereumjs/util": true, "@ethereumjs/tx>ethereum-cryptography": true, - "@ethersproject/providers": true, "browserify>buffer": true, "browserify>insert-module-globals>is-buffer": true } @@ -150,8 +149,6 @@ "@ethereumjs/tx>@chainsafe/ssz": { "packages": { "@ethereumjs/tx>@chainsafe/ssz>@chainsafe/persistent-merkle-tree": true, - "@ethereumjs/tx>@chainsafe/ssz>case": true, - "browserify": true, "browserify>buffer": true } }, @@ -160,7 +157,8 @@ "WeakRef": true }, "packages": { - "browserify": true + "@ethereumjs/tx>@chainsafe/ssz>@chainsafe/as-sha256": true, + "@metamask/key-tree>@noble/hashes": true } }, "@ethereumjs/tx>@ethereumjs/rlp": { @@ -175,50 +173,56 @@ "packages": { "@ethereumjs/tx>@chainsafe/ssz": true, "@ethereumjs/tx>@ethereumjs/rlp": true, - "@ethereumjs/tx>ethereum-cryptography": true, + "@ethereumjs/tx>@ethereumjs/util>ethereum-cryptography": true, + "@ethereumjs/tx>@ethereumjs/util>micro-ftch": true, "browserify>buffer": true, "browserify>events": true, "browserify>insert-module-globals>is-buffer": true } }, + "@ethereumjs/tx>@ethereumjs/util>ethereum-cryptography": { + "globals": { + "TextDecoder": true, + "crypto": true + }, + "packages": { + "@ethereumjs/tx>ethereum-cryptography>@noble/curves": true, + "@metamask/key-tree>@noble/hashes": true + } + }, + "@ethereumjs/tx>@ethereumjs/util>micro-ftch": { + "globals": { + "Headers": true, + "TextDecoder": true, + "URL": true, + "btoa": true, + "fetch": true + }, + "packages": { + "browserify>browserify-zlib": true, + "browserify>buffer": true, + "browserify>https-browserify": true, + "browserify>process": true, + "browserify>stream-http": true, + "browserify>url": true, + "browserify>util": true + } + }, "@ethereumjs/tx>ethereum-cryptography": { "globals": { "TextDecoder": true, "crypto": true }, "packages": { - "@ethereumjs/tx>ethereum-cryptography>@noble/hashes": true, - "@ethereumjs/tx>ethereum-cryptography>@noble/secp256k1": true, - "@ethereumjs/tx>ethereum-cryptography>@scure/bip32": true + "@metamask/key-tree>@noble/hashes": true } }, - "@ethereumjs/tx>ethereum-cryptography>@noble/hashes": { + "@ethereumjs/tx>ethereum-cryptography>@noble/curves": { "globals": { - "TextEncoder": true, - "crypto": true - } - }, - "@ethereumjs/tx>ethereum-cryptography>@noble/secp256k1": { - "globals": { - "crypto": true + "TextEncoder": true }, "packages": { - "browserify>browser-resolve": true - } - }, - "@ethereumjs/tx>ethereum-cryptography>@scure/bip32": { - "packages": { - "@ethereumjs/tx>ethereum-cryptography>@scure/bip32>@noble/secp256k1": true, - "@metamask/key-tree>@noble/hashes": true, - "@metamask/key-tree>@scure/base": true - } - }, - "@ethereumjs/tx>ethereum-cryptography>@scure/bip32>@noble/secp256k1": { - "globals": { - "crypto": true - }, - "packages": { - "browserify>browser-resolve": true + "@metamask/key-tree>@noble/hashes": true } }, "@ethersproject/abi": { @@ -785,22 +789,37 @@ }, "@metamask/address-book-controller": { "packages": { - "@metamask/base-controller": true, + "@metamask/address-book-controller>@metamask/base-controller": true, "@metamask/controller-utils": true } }, + "@metamask/address-book-controller>@metamask/base-controller": { + "packages": { + "immer": true + } + }, "@metamask/announcement-controller": { "packages": { - "@metamask/base-controller": true + "@metamask/announcement-controller>@metamask/base-controller": true + } + }, + "@metamask/announcement-controller>@metamask/base-controller": { + "packages": { + "immer": true } }, "@metamask/approval-controller": { "packages": { + "@metamask/approval-controller>@metamask/base-controller": true, "@metamask/approval-controller>nanoid": true, - "@metamask/base-controller": true, "eth-rpc-errors": true } }, + "@metamask/approval-controller>@metamask/base-controller": { + "packages": { + "immer": true + } + }, "@metamask/approval-controller>nanoid": { "globals": { "crypto.getRandomValues": true @@ -822,9 +841,9 @@ "@ethersproject/contracts": true, "@ethersproject/providers": true, "@metamask/assets-controllers>@metamask/abi-utils": true, + "@metamask/assets-controllers>@metamask/base-controller": true, "@metamask/assets-controllers>abort-controller": true, "@metamask/assets-controllers>multiformats": true, - "@metamask/base-controller": true, "@metamask/contract-metadata": true, "@metamask/controller-utils": true, "@metamask/metamask-eth-abis": true, @@ -856,6 +875,11 @@ "superstruct": true } }, + "@metamask/assets-controllers>@metamask/base-controller": { + "packages": { + "immer": true + } + }, "@metamask/assets-controllers>abort-controller": { "globals": { "AbortController": true @@ -1031,22 +1055,74 @@ }, "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@ethereumjs/tx>ethereum-cryptography": true, + "@metamask/eth-keyring-controller>@metamask/eth-hd-keyring>ethereum-cryptography": true, "@metamask/eth-trezor-keyring>@metamask/eth-sig-util": true, "@metamask/scure-bip39": true, "browserify>buffer": true } }, + "@metamask/eth-keyring-controller>@metamask/eth-hd-keyring>ethereum-cryptography": { + "globals": { + "TextDecoder": true, + "crypto": true + }, + "packages": { + "@metamask/eth-keyring-controller>@metamask/eth-hd-keyring>ethereum-cryptography>@noble/hashes": true, + "@metamask/eth-keyring-controller>@metamask/eth-hd-keyring>ethereum-cryptography>@scure/bip32": true + } + }, + "@metamask/eth-keyring-controller>@metamask/eth-hd-keyring>ethereum-cryptography>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true + } + }, + "@metamask/eth-keyring-controller>@metamask/eth-hd-keyring>ethereum-cryptography>@noble/secp256k1": { + "globals": { + "crypto": true + }, + "packages": { + "browserify>browser-resolve": true + } + }, + "@metamask/eth-keyring-controller>@metamask/eth-hd-keyring>ethereum-cryptography>@scure/bip32": { + "packages": { + "@metamask/eth-keyring-controller>@metamask/eth-hd-keyring>ethereum-cryptography>@noble/secp256k1": true, + "@metamask/eth-keyring-controller>@metamask/eth-hd-keyring>ethereum-cryptography>@scure/bip39>@noble/hashes": true, + "@metamask/key-tree>@scure/base": true + } + }, + "@metamask/eth-keyring-controller>@metamask/eth-hd-keyring>ethereum-cryptography>@scure/bip39>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true + } + }, "@metamask/eth-keyring-controller>@metamask/eth-simple-keyring": { "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@ethereumjs/tx>ethereum-cryptography": true, + "@metamask/eth-keyring-controller>@metamask/eth-simple-keyring>ethereum-cryptography": true, "@metamask/eth-trezor-keyring>@metamask/eth-sig-util": true, "browserify>buffer": true, "browserify>events": true, "ethereumjs-wallet>randombytes": true } }, + "@metamask/eth-keyring-controller>@metamask/eth-simple-keyring>ethereum-cryptography": { + "globals": { + "TextDecoder": true, + "crypto": true + }, + "packages": { + "@metamask/eth-keyring-controller>@metamask/eth-simple-keyring>ethereum-cryptography>@noble/hashes": true + } + }, + "@metamask/eth-keyring-controller>@metamask/eth-simple-keyring>ethereum-cryptography>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true + } + }, "@metamask/eth-keyring-controller>obs-store": { "packages": { "@metamask/eth-token-tracker>safe-event-emitter": true, @@ -1082,25 +1158,17 @@ }, "@metamask/eth-ledger-bridge-keyring>eth-sig-util>ethereumjs-util": { "packages": { - "@metamask/eth-ledger-bridge-keyring>eth-sig-util>ethereumjs-util>ethereum-cryptography": true, "@metamask/eth-ledger-bridge-keyring>eth-sig-util>ethereumjs-util>ethjs-util": true, "bn.js": true, "browserify>assert": true, "browserify>buffer": true, "ethereumjs-util>create-hash": true, + "ethereumjs-util>ethereum-cryptography": true, "ethereumjs-util>rlp": true, "ethereumjs-wallet>safe-buffer": true, "ganache>secp256k1>elliptic": true } }, - "@metamask/eth-ledger-bridge-keyring>eth-sig-util>ethereumjs-util>ethereum-cryptography": { - "packages": { - "browserify>buffer": true, - "ethereumjs-util>ethereum-cryptography>keccak": true, - "ethereumjs-util>ethereum-cryptography>secp256k1": true, - "ethereumjs-wallet>randombytes": true - } - }, "@metamask/eth-ledger-bridge-keyring>eth-sig-util>ethereumjs-util>ethjs-util": { "packages": { "browserify>buffer": true, @@ -1257,7 +1325,7 @@ "@metamask/eth-trezor-keyring>@metamask/eth-sig-util": { "packages": { "@ethereumjs/tx>@ethereumjs/util": true, - "@ethereumjs/tx>ethereum-cryptography": true, + "@metamask/eth-trezor-keyring>@metamask/eth-sig-util>ethereum-cryptography": true, "@metamask/eth-trezor-keyring>@metamask/eth-sig-util>ethjs-util": true, "bn.js": true, "browserify>buffer": true, @@ -1265,6 +1333,21 @@ "eth-sig-util>tweetnacl-util": true } }, + "@metamask/eth-trezor-keyring>@metamask/eth-sig-util>ethereum-cryptography": { + "globals": { + "TextDecoder": true, + "crypto": true + }, + "packages": { + "@metamask/eth-trezor-keyring>@metamask/eth-sig-util>ethereum-cryptography>@noble/hashes": true + } + }, + "@metamask/eth-trezor-keyring>@metamask/eth-sig-util>ethereum-cryptography>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true + } + }, "@metamask/eth-trezor-keyring>@metamask/eth-sig-util>ethjs-util": { "packages": { "browserify>buffer": true, @@ -1440,14 +1523,19 @@ "setInterval": true }, "packages": { - "@metamask/base-controller": true, "@metamask/controller-utils": true, + "@metamask/gas-fee-controller>@metamask/base-controller": true, "eth-query": true, "ethereumjs-util": true, "ethjs>ethjs-unit": true, "uuid": true } }, + "@metamask/gas-fee-controller>@metamask/base-controller": { + "packages": { + "immer": true + } + }, "@metamask/jazzicon": { "globals": { "document.createElement": true, @@ -1546,8 +1634,8 @@ }, "@metamask/message-manager": { "packages": { - "@metamask/base-controller": true, "@metamask/controller-utils": true, + "@metamask/message-manager>@metamask/base-controller": true, "@metamask/message-manager>jsonschema": true, "browserify>buffer": true, "browserify>events": true, @@ -1556,6 +1644,11 @@ "uuid": true } }, + "@metamask/message-manager>@metamask/base-controller": { + "packages": { + "immer": true + } + }, "@metamask/message-manager>jsonschema": { "packages": { "browserify>url": true @@ -1586,8 +1679,8 @@ "console.error": true }, "packages": { - "@metamask/base-controller": true, "@metamask/controller-utils": true, + "@metamask/permission-controller>@metamask/base-controller": true, "@metamask/permission-controller>nanoid": true, "deep-freeze-strict": true, "eth-rpc-errors": true, @@ -1595,6 +1688,11 @@ "json-rpc-engine": true } }, + "@metamask/permission-controller>@metamask/base-controller": { + "packages": { + "immer": true + } + }, "@metamask/permission-controller>nanoid": { "globals": { "crypto.getRandomValues": true @@ -1605,12 +1703,17 @@ "fetch": true }, "packages": { - "@metamask/base-controller": true, "@metamask/controller-utils": true, + "@metamask/phishing-controller>@metamask/base-controller": true, "@metamask/phishing-warning>eth-phishing-detect": true, "punycode": true } }, + "@metamask/phishing-controller>@metamask/base-controller": { + "packages": { + "immer": true + } + }, "@metamask/phishing-warning>eth-phishing-detect": { "packages": { "eslint>optionator>fast-levenshtein": true @@ -1647,8 +1750,14 @@ "TextEncoder": true }, "packages": { - "@metamask/key-tree>@noble/hashes": true, - "@metamask/key-tree>@scure/base": true + "@metamask/key-tree>@scure/base": true, + "@metamask/scure-bip39>@noble/hashes": true + } + }, + "@metamask/scure-bip39>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true } }, "@metamask/signature-controller": { @@ -1656,15 +1765,20 @@ "console.info": true }, "packages": { - "@metamask/base-controller": true, "@metamask/controller-utils": true, "@metamask/message-manager": true, + "@metamask/signature-controller>@metamask/base-controller": true, "browserify>buffer": true, "browserify>events": true, "eth-rpc-errors": true, "ethereumjs-util": true } }, + "@metamask/signature-controller>@metamask/base-controller": { + "packages": { + "immer": true + } + }, "@metamask/smart-transactions-controller": { "globals": { "URLSearchParams": true, @@ -1748,7 +1862,12 @@ }, "@metamask/subject-metadata-controller": { "packages": { - "@metamask/base-controller": true + "@metamask/subject-metadata-controller>@metamask/base-controller": true + } + }, + "@metamask/subject-metadata-controller>@metamask/base-controller": { + "packages": { + "immer": true } }, "@metamask/utils": { @@ -2535,6 +2654,16 @@ "ethjs-query>babel-runtime>core-js": true } }, + "browserify>browserify-zlib": { + "packages": { + "browserify>assert": true, + "browserify>browserify-zlib>pako": true, + "browserify>buffer": true, + "browserify>process": true, + "browserify>stream-browserify": true, + "browserify>util": true + } + }, "browserify>buffer": { "globals": { "console": true @@ -2701,6 +2830,12 @@ "browserify>has>function-bind": true } }, + "browserify>https-browserify": { + "packages": { + "browserify>stream-http": true, + "browserify>url": true + } + }, "browserify>os-browserify": { "globals": { "location": true, @@ -2730,6 +2865,41 @@ "readable-stream": true } }, + "browserify>stream-http": { + "globals": { + "AbortController": true, + "Blob": true, + "MSStreamReader": true, + "ReadableStream": true, + "WritableStream": true, + "XDomainRequest": true, + "XMLHttpRequest": true, + "clearTimeout": true, + "fetch": true, + "location.protocol.search": true, + "setTimeout": true + }, + "packages": { + "browserify>buffer": true, + "browserify>process": true, + "browserify>stream-http>builtin-status-codes": true, + "browserify>stream-http>readable-stream": true, + "browserify>url": true, + "pumpify>inherits": true, + "watchify>xtend": true + } + }, + "browserify>stream-http>readable-stream": { + "packages": { + "browserify>browser-resolve": true, + "browserify>buffer": true, + "browserify>events": true, + "browserify>process": true, + "browserify>string_decoder": true, + "pumpify>inherits": true, + "readable-stream>util-deprecate": true + } + }, "browserify>string_decoder": { "packages": { "ethereumjs-wallet>safe-buffer": true @@ -2951,16 +3121,59 @@ "setInterval": true }, "packages": { - "@ethereumjs/tx": true, "@ethereumjs/tx>@ethereumjs/util": true, "browserify>buffer": true, "browserify>crypto-browserify": true, "browserify>events": true, + "eth-lattice-keyring>@ethereumjs/tx": true, "eth-lattice-keyring>bn.js": true, "eth-lattice-keyring>gridplus-sdk": true, "eth-lattice-keyring>rlp": true } }, + "eth-lattice-keyring>@ethereumjs/tx": { + "packages": { + "@ethereumjs/common": true, + "@ethereumjs/tx>@ethereumjs/rlp": true, + "@ethereumjs/tx>@ethereumjs/util": true, + "@ethersproject/providers": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz": true, + "eth-lattice-keyring>@ethereumjs/tx>ethereum-cryptography": true + } + }, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz": { + "packages": { + "browserify": true, + "browserify>buffer": true, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz>@chainsafe/persistent-merkle-tree": true, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz>case": true + } + }, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz>@chainsafe/persistent-merkle-tree": { + "globals": { + "WeakRef": true + }, + "packages": { + "browserify": true + } + }, + "eth-lattice-keyring>@ethereumjs/tx>ethereum-cryptography": { + "globals": { + "TextDecoder": true, + "crypto": true + }, + "packages": { + "eth-lattice-keyring>@ethereumjs/tx>ethereum-cryptography>@noble/hashes": true + } + }, + "eth-lattice-keyring>@ethereumjs/tx>ethereum-cryptography>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true + } + }, "eth-lattice-keyring>bn.js": { "globals": { "Buffer": true @@ -2984,12 +3197,12 @@ "setTimeout": true }, "packages": { - "@ethereumjs/common": true, "@ethereumjs/common>crc-32": true, - "@ethereumjs/tx": true, "@ethersproject/abi": true, "bn.js": true, "browserify>buffer": true, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/common": true, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx": true, "eth-lattice-keyring>gridplus-sdk>bech32": true, "eth-lattice-keyring>gridplus-sdk>bignumber.js": true, "eth-lattice-keyring>gridplus-sdk>bitwise": true, @@ -3006,6 +3219,65 @@ "lodash": true } }, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/common": { + "packages": { + "@ethereumjs/common>crc-32": true, + "@ethereumjs/tx>@ethereumjs/util": true, + "browserify>buffer": true, + "browserify>events": true + } + }, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx": { + "packages": { + "@ethereumjs/tx>@ethereumjs/rlp": true, + "@ethereumjs/tx>@ethereumjs/util": true, + "@ethersproject/providers": true, + "browserify>buffer": true, + "browserify>insert-module-globals>is-buffer": true, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@chainsafe/ssz": true, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/common": true, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>ethereum-cryptography": true + } + }, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@chainsafe/ssz": { + "packages": { + "browserify": true, + "browserify>buffer": true, + "eth-lattice-keyring>@ethereumjs/tx>@chainsafe/ssz>case": true, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@chainsafe/ssz>@chainsafe/persistent-merkle-tree": true + } + }, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@chainsafe/ssz>@chainsafe/persistent-merkle-tree": { + "globals": { + "WeakRef": true + }, + "packages": { + "browserify": true + } + }, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>@ethereumjs/common": { + "packages": { + "@ethereumjs/common>crc-32": true, + "@ethereumjs/tx>@ethereumjs/util": true, + "browserify>buffer": true, + "browserify>events": true + } + }, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>ethereum-cryptography": { + "globals": { + "TextDecoder": true, + "crypto": true + }, + "packages": { + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>ethereum-cryptography>@noble/hashes": true + } + }, + "eth-lattice-keyring>gridplus-sdk>@ethereumjs/tx>ethereum-cryptography>@noble/hashes": { + "globals": { + "TextEncoder": true, + "crypto": true + } + }, "eth-lattice-keyring>gridplus-sdk>bignumber.js": { "globals": { "crypto": true, @@ -3135,22 +3407,14 @@ "bn.js": true, "browserify>assert": true, "browserify>buffer": true, - "eth-sig-util>ethereumjs-util>ethereum-cryptography": true, "eth-sig-util>ethereumjs-util>ethjs-util": true, "ethereumjs-util>create-hash": true, + "ethereumjs-util>ethereum-cryptography": true, "ethereumjs-util>rlp": true, "ethereumjs-wallet>safe-buffer": true, "ganache>secp256k1>elliptic": true } }, - "eth-sig-util>ethereumjs-util>ethereum-cryptography": { - "packages": { - "browserify>buffer": true, - "ethereumjs-util>ethereum-cryptography>keccak": true, - "ethereumjs-util>ethereum-cryptography>secp256k1": true, - "ethereumjs-wallet>randombytes": true - } - }, "eth-sig-util>ethereumjs-util>ethjs-util": { "packages": { "browserify>buffer": true, @@ -3189,21 +3453,13 @@ "bn.js": true, "browserify>assert": true, "browserify>buffer": true, - "ethereumjs-abi>ethereumjs-util>ethereum-cryptography": true, "ethereumjs-abi>ethereumjs-util>ethjs-util": true, "ethereumjs-util>create-hash": true, + "ethereumjs-util>ethereum-cryptography": true, "ethereumjs-util>rlp": true, "ganache>secp256k1>elliptic": true } }, - "ethereumjs-abi>ethereumjs-util>ethereum-cryptography": { - "packages": { - "browserify>buffer": true, - "ethereumjs-util>ethereum-cryptography>keccak": true, - "ethereumjs-util>ethereum-cryptography>secp256k1": true, - "ethereumjs-wallet>randombytes": true - } - }, "ethereumjs-abi>ethereumjs-util>ethjs-util": { "packages": { "browserify>buffer": true, @@ -3388,22 +3644,14 @@ "ethereumjs-wallet>safe-buffer": true } }, - "ethereumjs-wallet>ethereum-cryptography": { - "packages": { - "browserify>buffer": true, - "ethereumjs-util>ethereum-cryptography>keccak": true, - "ethereumjs-util>ethereum-cryptography>secp256k1": true, - "ethereumjs-wallet>randombytes": true - } - }, "ethereumjs-wallet>ethereumjs-util": { "packages": { "bn.js": true, "browserify>assert": true, "browserify>buffer": true, "ethereumjs-util>create-hash": true, + "ethereumjs-util>ethereum-cryptography": true, "ethereumjs-util>rlp": true, - "ethereumjs-wallet>ethereum-cryptography": true, "ethereumjs-wallet>ethereumjs-util>ethjs-util": true, "ganache>secp256k1>elliptic": true } diff --git a/lavamoat/build-system/policy.json b/lavamoat/build-system/policy.json index 166b663a6..e41d0153c 100644 --- a/lavamoat/build-system/policy.json +++ b/lavamoat/build-system/policy.json @@ -980,7 +980,6 @@ "packages": { "@lavamoat/allow-scripts>@npmcli/run-script>node-gyp>npmlog>are-we-there-yet": true, "@lavamoat/allow-scripts>@npmcli/run-script>node-gyp>npmlog>gauge": true, - "@storybook/addon-mdx-gfm>@storybook/node-logger>npmlog>console-control-strings": true, "@storybook/react>@storybook/node-logger>npmlog>console-control-strings": true, "nyc>yargs>set-blocking": true } @@ -1009,9 +1008,6 @@ "@lavamoat/allow-scripts>@npmcli/run-script>node-gyp>npmlog>gauge>aproba": true, "@lavamoat/allow-scripts>@npmcli/run-script>node-gyp>npmlog>gauge>string-width": true, "@lavamoat/allow-scripts>@npmcli/run-script>node-gyp>npmlog>gauge>strip-ansi": true, - "@storybook/addon-mdx-gfm>@storybook/node-logger>npmlog>console-control-strings": true, - "@storybook/addon-mdx-gfm>@storybook/node-logger>npmlog>gauge>has-unicode": true, - "@storybook/addon-mdx-gfm>@storybook/node-logger>npmlog>gauge>wide-align": true, "@storybook/react>@storybook/node-logger>npmlog>console-control-strings": true, "@storybook/react>@storybook/node-logger>npmlog>gauge>has-unicode": true, "@storybook/react>@storybook/node-logger>npmlog>gauge>wide-align": true, @@ -1137,33 +1133,11 @@ "@metamask/jazzicon>color>color-convert>color-name": true } }, - "@sentry/cli>mkdirp": { - "builtin": { - "fs": true, - "path.dirname": true, - "path.resolve": true - } - }, "@storybook/addon-knobs>qs": { "packages": { "string.prototype.matchall>side-channel": true } }, - "@storybook/addon-mdx-gfm>@storybook/node-logger>npmlog>gauge>has-unicode": { - "builtin": { - "os.type": true - }, - "globals": { - "process.env.LANG": true, - "process.env.LC_ALL": true, - "process.env.LC_CTYPE": true - } - }, - "@storybook/addon-mdx-gfm>@storybook/node-logger>npmlog>gauge>wide-align": { - "packages": { - "yargs>string-width": true - } - }, "@storybook/core>@storybook/core-server>x-default-browser>default-browser-id>untildify>os-homedir": { "builtin": { "os.homedir": true @@ -4912,20 +4886,9 @@ }, "packages": { "@storybook/core>@storybook/core-server>x-default-browser>default-browser-id>untildify>os-homedir": true, - "gulp-watch>chokidar>fsevents>node-pre-gyp>nopt>osenv>os-homedir": true, "gulp-watch>chokidar>fsevents>node-pre-gyp>nopt>osenv>os-tmpdir": true } }, - "gulp-watch>chokidar>fsevents>node-pre-gyp>nopt>osenv>os-homedir": { - "builtin": { - "os.homedir": true - }, - "globals": { - "process.env": true, - "process.getuid": true, - "process.platform": true - } - }, "gulp-watch>chokidar>fsevents>node-pre-gyp>nopt>osenv>os-tmpdir": { "globals": { "process.env.SystemRoot": true, @@ -4947,34 +4910,9 @@ "setTimeout": true }, "packages": { - "gulp-watch>chokidar>fsevents>node-pre-gyp>rimraf>glob": true, "nyc>glob": true } }, - "gulp-watch>chokidar>fsevents>node-pre-gyp>rimraf>glob": { - "builtin": { - "assert": true, - "events.EventEmitter": true, - "fs": true, - "path.join": true, - "path.resolve": true, - "util": true - }, - "globals": { - "console.error": true, - "process.cwd": true, - "process.nextTick": true, - "process.platform": true - }, - "packages": { - "eslint>minimatch": true, - "gulp-watch>path-is-absolute": true, - "nyc>glob>fs.realpath": true, - "nyc>glob>inflight": true, - "pump>once": true, - "pumpify>inherits": true - } - }, "gulp-watch>chokidar>fsevents>node-pre-gyp>semver": { "globals": { "console": true, @@ -8308,7 +8246,14 @@ "path.dirname": true }, "packages": { - "@sentry/cli>mkdirp": true + "stylelint>file-entry-cache>flat-cache>write>mkdirp": true + } + }, + "stylelint>file-entry-cache>flat-cache>write>mkdirp": { + "builtin": { + "fs": true, + "path.dirname": true, + "path.resolve": true } }, "stylelint>global-modules": { diff --git a/package.json b/package.json index c5dfbd8df..dbea0ee97 100644 --- a/package.json +++ b/package.json @@ -227,7 +227,7 @@ "@metamask/announcement-controller": "^3.0.0", "@metamask/approval-controller": "^2.1.0", "@metamask/assets-controllers": "^7.0.0", - "@metamask/base-controller": "^2.0.0", + "@metamask/base-controller": "^3.0.0", "@metamask/browser-passworder": "^4.1.0", "@metamask/contract-metadata": "^2.3.1", "@metamask/controller-utils": "^3.3.0", diff --git a/yarn.lock b/yarn.lock index ea09b52aa..2ecdc868e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1626,6 +1626,13 @@ __metadata: languageName: node linkType: hard +"@chainsafe/as-sha256@npm:^0.4.1": + version: 0.4.1 + resolution: "@chainsafe/as-sha256@npm:0.4.1" + checksum: 6d86975e648ecdafd366802278ac15b392b252e967f3681412ec48b5a3518b936cc5e977517499882b084991446d25787d98f8f585891943688cc81549a44e9a + languageName: node + linkType: hard + "@chainsafe/persistent-merkle-tree@npm:^0.4.2": version: 0.4.2 resolution: "@chainsafe/persistent-merkle-tree@npm:0.4.2" @@ -1635,6 +1642,16 @@ __metadata: languageName: node linkType: hard +"@chainsafe/persistent-merkle-tree@npm:^0.6.1": + version: 0.6.1 + resolution: "@chainsafe/persistent-merkle-tree@npm:0.6.1" + dependencies: + "@chainsafe/as-sha256": ^0.4.1 + "@noble/hashes": ^1.3.0 + checksum: 74614b8d40970dc930d5bf741619498b0bbbde5ff24ce45fce6ad122143aa77bf57249a28175b1b972cf56bff57d529a4258b7222ab4e60c1261119b5986c51b + languageName: node + linkType: hard + "@chainsafe/ssz@npm:0.9.4": version: 0.9.4 resolution: "@chainsafe/ssz@npm:0.9.4" @@ -1646,6 +1663,16 @@ __metadata: languageName: node linkType: hard +"@chainsafe/ssz@npm:^0.11.1": + version: 0.11.1 + resolution: "@chainsafe/ssz@npm:0.11.1" + dependencies: + "@chainsafe/as-sha256": ^0.4.1 + "@chainsafe/persistent-merkle-tree": ^0.6.1 + checksum: e3c2928f9ab4a0544e645f0302b9535046d1e6e1d4b3bd1c3dd6bc8e6302fddad6036d65e7900d1446f285f496051da05fa14c1bde590b511d03033907175c8f + languageName: node + linkType: hard + "@choojs/findup@npm:^0.2.1": version: 0.2.1 resolution: "@choojs/findup@npm:0.2.1" @@ -2124,7 +2151,7 @@ __metadata: languageName: node linkType: hard -"@ethereumjs/common@npm:3.1.1, @ethereumjs/common@npm:^3.1.1": +"@ethereumjs/common@npm:3.1.1": version: 3.1.1 resolution: "@ethereumjs/common@npm:3.1.1" dependencies: @@ -2144,6 +2171,16 @@ __metadata: languageName: node linkType: hard +"@ethereumjs/common@npm:^3.1.1, @ethereumjs/common@npm:^3.1.2": + version: 3.1.2 + resolution: "@ethereumjs/common@npm:3.1.2" + dependencies: + "@ethereumjs/util": ^8.0.6 + crc-32: ^1.2.0 + checksum: e80a8bc86476f1ce878bacb1915d91681671bb5303291cdcece26e456ac13a6158f0f59625cb02a1cfbdd7c9a7dc8b175f8d8f0fee596b3eb9dfb965465ad43d + languageName: node + linkType: hard + "@ethereumjs/rlp@npm:^4.0.1": version: 4.0.1 resolution: "@ethereumjs/rlp@npm:4.0.1" @@ -2153,7 +2190,7 @@ __metadata: languageName: node linkType: hard -"@ethereumjs/tx@npm:4.1.1, @ethereumjs/tx@npm:^4.0.0, @ethereumjs/tx@npm:^4.0.2, @ethereumjs/tx@npm:^4.1.1": +"@ethereumjs/tx@npm:4.1.1": version: 4.1.1 resolution: "@ethereumjs/tx@npm:4.1.1" dependencies: @@ -2182,14 +2219,33 @@ __metadata: languageName: node linkType: hard -"@ethereumjs/util@npm:^8.0.0, @ethereumjs/util@npm:^8.0.2, @ethereumjs/util@npm:^8.0.5": - version: 8.0.5 - resolution: "@ethereumjs/util@npm:8.0.5" +"@ethereumjs/tx@npm:^4.0.0, @ethereumjs/tx@npm:^4.0.2, @ethereumjs/tx@npm:^4.1.1, @ethereumjs/tx@npm:^4.1.2": + version: 4.1.2 + resolution: "@ethereumjs/tx@npm:4.1.2" dependencies: - "@chainsafe/ssz": 0.9.4 + "@chainsafe/ssz": ^0.11.1 + "@ethereumjs/common": ^3.1.2 "@ethereumjs/rlp": ^4.0.1 - ethereum-cryptography: ^1.1.2 - checksum: 318386785295b4584289b1aa576d2621392b3a918d127890db62d3f74184f3377694dd9e951e19bfb9ab80e8dc9e38e180236cac2651dead26097d10963731f9 + "@ethereumjs/util": ^8.0.6 + ethereum-cryptography: ^2.0.0 + peerDependencies: + c-kzg: ^1.0.8 + peerDependenciesMeta: + c-kzg: + optional: true + checksum: ad2fb692c3746cd5935b01c98b6b54046ae2a1fccff57ad2209e10446f3b279a204d7477accf05b27078445b14379314077769662142ac07117c45a5a1ea427f + languageName: node + linkType: hard + +"@ethereumjs/util@npm:^8.0.0, @ethereumjs/util@npm:^8.0.2, @ethereumjs/util@npm:^8.0.5, @ethereumjs/util@npm:^8.0.6": + version: 8.0.6 + resolution: "@ethereumjs/util@npm:8.0.6" + dependencies: + "@chainsafe/ssz": ^0.11.1 + "@ethereumjs/rlp": ^4.0.1 + ethereum-cryptography: ^2.0.0 + micro-ftch: ^0.3.1 + checksum: 034e06cddec27417318434a1a7cd7a9dc0f0b447c1f54423c515d8809c9697386eee6429d0a1c13517a85c696e6fdba570b243d882e65764c274859606027015 languageName: node linkType: hard @@ -3911,6 +3967,16 @@ __metadata: languageName: node linkType: hard +"@metamask/base-controller@npm:^3.0.0": + version: 3.0.0 + resolution: "@metamask/base-controller@npm:3.0.0" + dependencies: + "@metamask/utils": ^5.0.2 + immer: ^9.0.6 + checksum: a0853d90b024466c4108531cbf4459bd2f66fa6e0b912e42bd27cdf54262411a5601117649b6061424475ffa6b9714c5199d686c21e4d07c3b7b1ee0b4c17caa + languageName: node + linkType: hard + "@metamask/browser-passworder@npm:^4.0.2, @metamask/browser-passworder@npm:^4.1.0": version: 4.1.0 resolution: "@metamask/browser-passworder@npm:4.1.0" @@ -4793,16 +4859,16 @@ __metadata: languageName: node linkType: hard -"@metamask/utils@npm:^5.0.0, @metamask/utils@npm:^5.0.1": - version: 5.0.1 - resolution: "@metamask/utils@npm:5.0.1" +"@metamask/utils@npm:^5.0.0, @metamask/utils@npm:^5.0.1, @metamask/utils@npm:^5.0.2": + version: 5.0.2 + resolution: "@metamask/utils@npm:5.0.2" dependencies: - "@ethereumjs/tx": ^4.1.1 + "@ethereumjs/tx": ^4.1.2 "@types/debug": ^4.1.7 debug: ^4.3.4 semver: ^7.3.8 superstruct: ^1.0.3 - checksum: 29745bd3d2db06bf66263bdec04e93a8f417c46c69d8054149c0046ed54b5f13d26d94a998fff1a31b5a8e7a2200935bfc8392a5fa3c4261e3cecd3ccdd9ddc0 + checksum: eca82e42911b2840deb4f32f0f215c5ffd14d22d68afbbe92d3180e920e509e310777b15eab29def3448f3535b66596ceb4c23666ec846adacc8e1bb093ff882 languageName: node linkType: hard @@ -4839,6 +4905,15 @@ __metadata: languageName: node linkType: hard +"@noble/curves@npm:1.0.0, @noble/curves@npm:~1.0.0": + version: 1.0.0 + resolution: "@noble/curves@npm:1.0.0" + dependencies: + "@noble/hashes": 1.3.0 + checksum: 6bcef44d626c640dc8961819d68dd67dffb907e3b973b7c27efe0ecdd9a5c6ce62c7b9e3dfc930c66605dced7f1ec0514d191c09a2ce98d6d52b66e3315ffa79 + languageName: node + linkType: hard + "@noble/ed25519@npm:^1.6.0": version: 1.6.0 resolution: "@noble/ed25519@npm:1.6.0" @@ -4853,7 +4928,14 @@ __metadata: languageName: node linkType: hard -"@noble/hashes@npm:^1.0.0, @noble/hashes@npm:^1.1.3, @noble/hashes@npm:~1.1.1": +"@noble/hashes@npm:1.3.0, @noble/hashes@npm:^1.0.0, @noble/hashes@npm:^1.1.3, @noble/hashes@npm:^1.3.0, @noble/hashes@npm:~1.3.0": + version: 1.3.0 + resolution: "@noble/hashes@npm:1.3.0" + checksum: d7ddb6d7c60f1ce1f87facbbef5b724cdea536fc9e7f59ae96e0fc9de96c8f1a2ae2bdedbce10f7dcc621338dfef8533daa73c873f2b5c87fa1a4e05a95c2e2e + languageName: node + linkType: hard + +"@noble/hashes@npm:~1.1.1": version: 1.1.3 resolution: "@noble/hashes@npm:1.1.3" checksum: a6f9783d2a33fc528c8709532b1c26cc3f5866f79c66256e881b28c61a1585be3899b008aa4e5e2b4e01b95c713722f52591cbb18ec51aa0ec63e7eaece1b89c @@ -5294,6 +5376,17 @@ __metadata: languageName: node linkType: hard +"@scure/bip32@npm:1.3.0": + version: 1.3.0 + resolution: "@scure/bip32@npm:1.3.0" + dependencies: + "@noble/curves": ~1.0.0 + "@noble/hashes": ~1.3.0 + "@scure/base": ~1.1.0 + checksum: 6eae997f9bdf41fe848134898960ac48e645fa10e63d579be965ca331afd0b7c1b8ebac170770d237ab4099dafc35e5a82995384510025ccf2abe669f85e8918 + languageName: node + linkType: hard + "@scure/bip39@npm:1.1.0": version: 1.1.0 resolution: "@scure/bip39@npm:1.1.0" @@ -5304,6 +5397,16 @@ __metadata: languageName: node linkType: hard +"@scure/bip39@npm:1.2.0": + version: 1.2.0 + resolution: "@scure/bip39@npm:1.2.0" + dependencies: + "@noble/hashes": ~1.3.0 + "@scure/base": ~1.1.0 + checksum: 980d761f53e63de04a9e4db840eb13bfb1bd1b664ecb04a71824c12c190f4972fd84146f3ed89b2a8e4c6bd2c17c15f8b592b7ac029e903323b0f9e2dae6916b + languageName: node + linkType: hard + "@segment/loosely-validate-event@npm:^2.0.0": version: 2.0.0 resolution: "@segment/loosely-validate-event@npm:2.0.0" @@ -15644,6 +15747,18 @@ __metadata: languageName: node linkType: hard +"ethereum-cryptography@npm:^2.0.0": + version: 2.0.0 + resolution: "ethereum-cryptography@npm:2.0.0" + dependencies: + "@noble/curves": 1.0.0 + "@noble/hashes": 1.3.0 + "@scure/bip32": 1.3.0 + "@scure/bip39": 1.2.0 + checksum: 958f8aab2d1b32aa759fb27a27877b3647410e8bb9aca7d65d1d477db4864cf7fc46b918eb52a1e246c25e98ee0a35a632c88b496aeaefa13469ee767a76c8db + languageName: node + linkType: hard + "ethereum-ens-network-map@npm:^1.0.2": version: 1.0.2 resolution: "ethereum-ens-network-map@npm:1.0.2" @@ -23842,7 +23957,7 @@ __metadata: "@metamask/approval-controller": ^2.1.0 "@metamask/assets-controllers": ^7.0.0 "@metamask/auto-changelog": ^2.1.0 - "@metamask/base-controller": ^2.0.0 + "@metamask/base-controller": ^3.0.0 "@metamask/browser-passworder": ^4.1.0 "@metamask/contract-metadata": ^2.3.1 "@metamask/controller-utils": ^3.3.0 @@ -24161,6 +24276,13 @@ __metadata: languageName: node linkType: hard +"micro-ftch@npm:^0.3.1": + version: 0.3.1 + resolution: "micro-ftch@npm:0.3.1" + checksum: 0e496547253a36e98a83fb00c628c53c3fb540fa5aaeaf718438873785afd193244988c09d219bb1802984ff227d04938d9571ef90fe82b48bd282262586aaff + languageName: node + linkType: hard + "micromark-core-commonmark@npm:^1.0.0, micromark-core-commonmark@npm:^1.0.1": version: 1.0.6 resolution: "micromark-core-commonmark@npm:1.0.6" From efa0d2872a5dfcfb5b02eb6861cd8724255a68ea Mon Sep 17 00:00:00 2001 From: Dan J Miller Date: Wed, 31 May 2023 12:52:11 -0230 Subject: [PATCH 011/160] Update changelog --- CHANGELOG.md | 124 +++++++-------------------------------------------- 1 file changed, 15 insertions(+), 109 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f80b97e57..9f0779e25 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,116 +7,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ## [10.32.0] -### Uncategorized -- Master sync follow v10.31.0 ([#19309](https://github.com/MetaMask/metamask-extension/pull/19309)) -- Merge remote-tracking branch 'origin/develop' into master-sync -- NetworkController: Simplify event types ([#19252](https://github.com/MetaMask/metamask-extension/pull/19252)) -- Reset all Jest mocks in NetworkController tests ([#19295](https://github.com/MetaMask/metamask-extension/pull/19295)) -- feature(17901): disable hardware wallet test with trezor in mv3 ([#19287](https://github.com/MetaMask/metamask-extension/pull/19287)) -- Part of #18714: Replacing deprecated constants in `Icon` folder ([#19250](https://github.com/MetaMask/metamask-extension/pull/19250)) -- Refactor NC initializeProvider tests ([#19253](https://github.com/MetaMask/metamask-extension/pull/19253)) -- Refactor tests for refreshNetwork behavior ([#19238](https://github.com/MetaMask/metamask-extension/pull/19238)) -- Fixed Text Docs not rendering issue in Storybook ([#19248](https://github.com/MetaMask/metamask-extension/pull/19248)) -- added tooltip ([#19269](https://github.com/MetaMask/metamask-extension/pull/19269)) -- fix cancel reason event for signatures ([#19286](https://github.com/MetaMask/metamask-extension/pull/19286)) -- feature(17901): fix test/e2e/tests/add-account.spec.js ([#19280](https://github.com/MetaMask/metamask-extension/pull/19280)) -- Revert "limit connections (#18355)" ([#18355](https://github.com/MetaMask/metamask-extension/pull/18355)) -- Fix #19139 - Allow user to switch network when loading networking fails ([#19175](https://github.com/MetaMask/metamask-extension/pull/19175)) -- [MMI] Add code fences in signature-request ([#18770](https://github.com/MetaMask/metamask-extension/pull/18770)) -- [MMI] Added code fencing in transaction list ([#18071](https://github.com/MetaMask/metamask-extension/pull/18071)) -- feat(accounts): import account without password ([#19132](https://github.com/MetaMask/metamask-extension/pull/19132)) -- TEXT_ALIGN to TextAlign in UI folder ([#19235](https://github.com/MetaMask/metamask-extension/pull/19235)) -- UX: Multichain: Only show the account picker with a selected identity ([#19236](https://github.com/MetaMask/metamask-extension/pull/19236)) -- Multichain: UX: Snaps: Add Notifications to Global Menu ([#19204](https://github.com/MetaMask/metamask-extension/pull/19204)) -- Feat/18444/text align update app folder ([#19216](https://github.com/MetaMask/metamask-extension/pull/19216)) -- UX Multichain: updated ui for settings page ([#19167](https://github.com/MetaMask/metamask-extension/pull/19167)) -- update TEXT_ALIGN to TextAlign in component-library folder ([#19237](https://github.com/MetaMask/metamask-extension/pull/19237)) -- Moving `RESIZE` constant to textarea component folder ([#19240](https://github.com/MetaMask/metamask-extension/pull/19240)) -- UX Multichain: updated border top for activity list ([#19176](https://github.com/MetaMask/metamask-extension/pull/19176)) -- [MMI] Added code fences to the following controllers: app-state, metametrics, preferences ([#17894](https://github.com/MetaMask/metamask-extension/pull/17894)) -- [FLASK] Fix classnames for snaps components ([#19234](https://github.com/MetaMask/metamask-extension/pull/19234)) -- [MMI] Added code fencing in app menu bar ([#18069](https://github.com/MetaMask/metamask-extension/pull/18069)) -- [FLASK] Create E2E test for snaps network_access endowment ([#19213](https://github.com/MetaMask/metamask-extension/pull/19213)) -- [FLASK] Fix an issue with submitting an empty Snaps UI prompt ([#19227](https://github.com/MetaMask/metamask-extension/pull/19227)) -- Adding Modal and updating ModalContent component ([#19020](https://github.com/MetaMask/metamask-extension/pull/19020)) -- Add DS Popover component ([#18805](https://github.com/MetaMask/metamask-extension/pull/18805)) -- Deprecated Icon and ButtonIcon clean up ([#19220](https://github.com/MetaMask/metamask-extension/pull/19220)) -- Bump dependencies of network-controller ([#19172](https://github.com/MetaMask/metamask-extension/pull/19172)) -- fix: support alerts confirmation page without pending transactions ([#18983](https://github.com/MetaMask/metamask-extension/pull/18983)) -- feature(16691): mv3 e2e test for phishing warning page when sw restarts ([#19196](https://github.com/MetaMask/metamask-extension/pull/19196)) -- [Bug]: Updating and Adding ConfirmPageContainer Tests ([#19149](https://github.com/MetaMask/metamask-extension/pull/19149)) -- Master sync (following v10.30.2, v10.30.3 and v10.30.4) ([#19199](https://github.com/MetaMask/metamask-extension/pull/19199)) -- Fix contract interaction recipient and contract address ([#18855](https://github.com/MetaMask/metamask-extension/pull/18855)) -- [FLASK] Create E2E test for ethereum_provider endowment ([#19191](https://github.com/MetaMask/metamask-extension/pull/19191)) -- Cleanup PR: Renaming getNetworkName and moving that to utils file ([#19160](https://github.com/MetaMask/metamask-extension/pull/19160)) -- [Bug]: Enabling the display of token total in SetApprovalForAll ([#18863](https://github.com/MetaMask/metamask-extension/pull/18863)) -- Disable Previous Button on First Page ([#17610](https://github.com/MetaMask/metamask-extension/pull/17610)) -- Merge remote-tracking branch 'origin/develop' into master-sync -- disable pr labeler ([#19185](https://github.com/MetaMask/metamask-extension/pull/19185)) -- devDeps: storybook@7 ([#19092](https://github.com/MetaMask/metamask-extension/pull/19092)) -- Adding design-system enums and deprecating consts ([#19133](https://github.com/MetaMask/metamask-extension/pull/19133)) -- UX: Multichain: Don't filter out custom mainnet RPCs ([#19150](https://github.com/MetaMask/metamask-extension/pull/19150)) -- UX: Multichain: Fix prop error from invalid Box prop ([#19188](https://github.com/MetaMask/metamask-extension/pull/19188)) -- UX: Multichain: Ensure percentage of account name always shown ([#18976](https://github.com/MetaMask/metamask-extension/pull/18976)) -- test: sanitize url hostname check ([#19053](https://github.com/MetaMask/metamask-extension/pull/19053)) -- [MMI] Added code fences for account menu ([#17965](https://github.com/MetaMask/metamask-extension/pull/17965)) -- [MMI] Add MMI modals with their styles to the app/modals ([#18621](https://github.com/MetaMask/metamask-extension/pull/18621)) -- replaces mmi for institutional ([#19182](https://github.com/MetaMask/metamask-extension/pull/19182)) -- UX Multichain: updated assets to tokens in home page ([#19144](https://github.com/MetaMask/metamask-extension/pull/19144)) -- Fixes clear button size TextFieldSearch ([#19153](https://github.com/MetaMask/metamask-extension/pull/19153)) -- Enable token detection for the Aurora network, fix primary token for Aurora, update a URL ([#19009](https://github.com/MetaMask/metamask-extension/pull/19009)) -- [MMI] Added note to trader code fencing ([#18051](https://github.com/MetaMask/metamask-extension/pull/18051)) -- [MMI] adds wrong network notification ([#19168](https://github.com/MetaMask/metamask-extension/pull/19168)) -- Part of #18714 and #17670:set-approval-for-all-warnings ([#19115](https://github.com/MetaMask/metamask-extension/pull/19115)) -- Fix lint error ([#19157](https://github.com/MetaMask/metamask-extension/pull/19157)) -- Part of #18714 and #17670: Changes to nfts-detection-notice.js ([#19051](https://github.com/MetaMask/metamask-extension/pull/19051)) -- Changes to gas-items-details ([#19075](https://github.com/MetaMask/metamask-extension/pull/19075)) -- Part of ##18714 Replace deprecated design system typography consts with enums in: confirm-page-container.component.js ([#19065](https://github.com/MetaMask/metamask-extension/pull/19065)) +### Added +- Enable token detection for the Aurora network ([#19009](https://github.com/MetaMask/metamask-extension/pull/19009)) +- Add reveal UI to export private key flow ([#18170](https://github.com/MetaMask/metamask-extension/pull/18170)) + +### Changed - [FLASK] `snaps-monorepo@0.33.1-flask.1` ([#18913](https://github.com/MetaMask/metamask-extension/pull/18913)) -- Part of #18714 Replace deprecated design system typography consts with enums in: 'srp-input' ([#19040](https://github.com/MetaMask/metamask-extension/pull/19040)) -- Refactor `lookupNetwork` unit tests ([#19070](https://github.com/MetaMask/metamask-extension/pull/19070)) -- UX: Multichain: Improve networks selector ([#19083](https://github.com/MetaMask/metamask-extension/pull/19083)) -- [MMI] Started adding styles imports with code fences ([#17943](https://github.com/MetaMask/metamask-extension/pull/17943)) -- Skip injection on snaps iframe ([#19096](https://github.com/MetaMask/metamask-extension/pull/19096)) -- Update useDraftTransactionGasValues ([#19105](https://github.com/MetaMask/metamask-extension/pull/19105)) -- [FLASK] Create E2E test for snap_GetEntropy ([#18998](https://github.com/MetaMask/metamask-extension/pull/18998)) -- fix: use approvals selector fn in permission selectors ([#19095](https://github.com/MetaMask/metamask-extension/pull/19095)) -- Add `getCurrentChainId` argument to `SignatureController` ([#19078](https://github.com/MetaMask/metamask-extension/pull/19078)) -- feat: Refactor Transaction Confirmation selector ([#18796](https://github.com/MetaMask/metamask-extension/pull/18796)) -- Fix script to build migrations by having it use the `.ts` template ([#18878](https://github.com/MetaMask/metamask-extension/pull/18878)) -- Only recognize "blocked" status for built-in networks ([#19069](https://github.com/MetaMask/metamask-extension/pull/19069)) -- removed mmi fencing from copy icon in header ([#19087](https://github.com/MetaMask/metamask-extension/pull/19087)) -- Re-enable tests for subscription-based RPC methods ([#18994](https://github.com/MetaMask/metamask-extension/pull/18994)) -- builds.yml: add env var EDITOR_URL ([#19074](https://github.com/MetaMask/metamask-extension/pull/19074)) -- Adopt ApprovalType from core ([#18567](https://github.com/MetaMask/metamask-extension/pull/18567)) -- Part of #17670 & #18714: Replace Typography with Text component in token-details-page.js ([#18741](https://github.com/MetaMask/metamask-extension/pull/18741)) -- Changes to edit-gas-display.component.js ([#19037](https://github.com/MetaMask/metamask-extension/pull/19037)) -- Adding ModalFocus component ([#18979](https://github.com/MetaMask/metamask-extension/pull/18979)) -- Some style, accessibility and sematic html updates to modal sub components ([#19034](https://github.com/MetaMask/metamask-extension/pull/19034)) -- Made builds.yml variable errors more helpful ([#19066](https://github.com/MetaMask/metamask-extension/pull/19066)) -- remove pre commit hook for branch names ([#19077](https://github.com/MetaMask/metamask-extension/pull/19077)) -- Set network status to "unknown" when ID is invalid ([#19068](https://github.com/MetaMask/metamask-extension/pull/19068)) -- Replaced all fa-icon-circle with INFO icon ([#17539](https://github.com/MetaMask/metamask-extension/pull/17539)) -- UX Multichain: updated margin top for assets tab ([#19071](https://github.com/MetaMask/metamask-extension/pull/19071)) -- Fix popover scroll button WhatsNewPopup hiding ([#19017](https://github.com/MetaMask/metamask-extension/pull/19017)) -- Fix #19060 - Ensure there's multiple accounts before focusing search ([#19062](https://github.com/MetaMask/metamask-extension/pull/19062)) -- Fix #19059 - Show network picker when locked ([#19063](https://github.com/MetaMask/metamask-extension/pull/19063)) -- UX: Multichain: Update deprecated variables ([#19058](https://github.com/MetaMask/metamask-extension/pull/19058)) -- UX: Multichain: Disable network and account picker when necessary ([#18909](https://github.com/MetaMask/metamask-extension/pull/18909)) -- Changes to custody-labels.js ([#19038](https://github.com/MetaMask/metamask-extension/pull/19038)) -- devDeps: react-devtools@4.16.0->4.27.6 ([#18869](https://github.com/MetaMask/metamask-extension/pull/18869)) -- UX: Multichain: Ensure network picker renders properly for long and short names ([#18974](https://github.com/MetaMask/metamask-extension/pull/18974)) -- Fix #18916 - UX: Multichain: Network picker design updates ([#18962](https://github.com/MetaMask/metamask-extension/pull/18962)) -- Part of #17670 & #18714: Replace Typography with Text component: nft-details.js ([#18771](https://github.com/MetaMask/metamask-extension/pull/18771)) -- [MMI] adds mmi logic in home view ([#18960](https://github.com/MetaMask/metamask-extension/pull/18960)) -- UX: Multichain: Account Details Fixes ([#18999](https://github.com/MetaMask/metamask-extension/pull/18999)) -- Working on some lint issues in 2 files. ([#18633](https://github.com/MetaMask/metamask-extension/pull/18633)) -- devDeps: storybook-dark-mode@1.1.2->2.1.1 ([#18866](https://github.com/MetaMask/metamask-extension/pull/18866)) -- UX Multichain: Added extra margin for native token ([#18988](https://github.com/MetaMask/metamask-extension/pull/18988)) -- Changes to confirm-data and confirm-hexdata ([#19041](https://github.com/MetaMask/metamask-extension/pull/19041)) -- Update slider.component.js ([#19035](https://github.com/MetaMask/metamask-extension/pull/19035)) -- Label PRs based on the labels of the associated issue ([#17603](https://github.com/MetaMask/metamask-extension/pull/17603)) -- Add reveal to export private key ([#18170](https://github.com/MetaMask/metamask-extension/pull/18170)) + +### Fixed +- [FLASK] Fix an issue with submitting an empty Snaps UI prompt (#19227) +- Display contract address as recipient when value is included with standard token transactions (#18855) +- Fix the display of token count in SetApprovalForAll screen (#18863) +- Disable Previous Button on First Page of hardware wallet account selection flow (#17610) +- [Flask] Prevent lavamoat errors in the console caused by attempting to inject the provider to snaps iframe (#19096) +- Fix to ensure popover scroll button is correctly shown and hidden in the WhatsNewPopup (#19017) +- Fix: Show network picker when locked (#19063) + ## [10.31.0] ### Added From ce22514914bdadd239d45b1b1fc73d5b3f6657f8 Mon Sep 17 00:00:00 2001 From: Dan J Miller Date: Wed, 31 May 2023 12:52:27 -0230 Subject: [PATCH 012/160] Run yarn lavamoat:auto for v10.32.0 --- lavamoat/build-system/policy.json | 71 ++++--------------------------- 1 file changed, 8 insertions(+), 63 deletions(-) diff --git a/lavamoat/build-system/policy.json b/lavamoat/build-system/policy.json index 166b663a6..e41d0153c 100644 --- a/lavamoat/build-system/policy.json +++ b/lavamoat/build-system/policy.json @@ -980,7 +980,6 @@ "packages": { "@lavamoat/allow-scripts>@npmcli/run-script>node-gyp>npmlog>are-we-there-yet": true, "@lavamoat/allow-scripts>@npmcli/run-script>node-gyp>npmlog>gauge": true, - "@storybook/addon-mdx-gfm>@storybook/node-logger>npmlog>console-control-strings": true, "@storybook/react>@storybook/node-logger>npmlog>console-control-strings": true, "nyc>yargs>set-blocking": true } @@ -1009,9 +1008,6 @@ "@lavamoat/allow-scripts>@npmcli/run-script>node-gyp>npmlog>gauge>aproba": true, "@lavamoat/allow-scripts>@npmcli/run-script>node-gyp>npmlog>gauge>string-width": true, "@lavamoat/allow-scripts>@npmcli/run-script>node-gyp>npmlog>gauge>strip-ansi": true, - "@storybook/addon-mdx-gfm>@storybook/node-logger>npmlog>console-control-strings": true, - "@storybook/addon-mdx-gfm>@storybook/node-logger>npmlog>gauge>has-unicode": true, - "@storybook/addon-mdx-gfm>@storybook/node-logger>npmlog>gauge>wide-align": true, "@storybook/react>@storybook/node-logger>npmlog>console-control-strings": true, "@storybook/react>@storybook/node-logger>npmlog>gauge>has-unicode": true, "@storybook/react>@storybook/node-logger>npmlog>gauge>wide-align": true, @@ -1137,33 +1133,11 @@ "@metamask/jazzicon>color>color-convert>color-name": true } }, - "@sentry/cli>mkdirp": { - "builtin": { - "fs": true, - "path.dirname": true, - "path.resolve": true - } - }, "@storybook/addon-knobs>qs": { "packages": { "string.prototype.matchall>side-channel": true } }, - "@storybook/addon-mdx-gfm>@storybook/node-logger>npmlog>gauge>has-unicode": { - "builtin": { - "os.type": true - }, - "globals": { - "process.env.LANG": true, - "process.env.LC_ALL": true, - "process.env.LC_CTYPE": true - } - }, - "@storybook/addon-mdx-gfm>@storybook/node-logger>npmlog>gauge>wide-align": { - "packages": { - "yargs>string-width": true - } - }, "@storybook/core>@storybook/core-server>x-default-browser>default-browser-id>untildify>os-homedir": { "builtin": { "os.homedir": true @@ -4912,20 +4886,9 @@ }, "packages": { "@storybook/core>@storybook/core-server>x-default-browser>default-browser-id>untildify>os-homedir": true, - "gulp-watch>chokidar>fsevents>node-pre-gyp>nopt>osenv>os-homedir": true, "gulp-watch>chokidar>fsevents>node-pre-gyp>nopt>osenv>os-tmpdir": true } }, - "gulp-watch>chokidar>fsevents>node-pre-gyp>nopt>osenv>os-homedir": { - "builtin": { - "os.homedir": true - }, - "globals": { - "process.env": true, - "process.getuid": true, - "process.platform": true - } - }, "gulp-watch>chokidar>fsevents>node-pre-gyp>nopt>osenv>os-tmpdir": { "globals": { "process.env.SystemRoot": true, @@ -4947,34 +4910,9 @@ "setTimeout": true }, "packages": { - "gulp-watch>chokidar>fsevents>node-pre-gyp>rimraf>glob": true, "nyc>glob": true } }, - "gulp-watch>chokidar>fsevents>node-pre-gyp>rimraf>glob": { - "builtin": { - "assert": true, - "events.EventEmitter": true, - "fs": true, - "path.join": true, - "path.resolve": true, - "util": true - }, - "globals": { - "console.error": true, - "process.cwd": true, - "process.nextTick": true, - "process.platform": true - }, - "packages": { - "eslint>minimatch": true, - "gulp-watch>path-is-absolute": true, - "nyc>glob>fs.realpath": true, - "nyc>glob>inflight": true, - "pump>once": true, - "pumpify>inherits": true - } - }, "gulp-watch>chokidar>fsevents>node-pre-gyp>semver": { "globals": { "console": true, @@ -8308,7 +8246,14 @@ "path.dirname": true }, "packages": { - "@sentry/cli>mkdirp": true + "stylelint>file-entry-cache>flat-cache>write>mkdirp": true + } + }, + "stylelint>file-entry-cache>flat-cache>write>mkdirp": { + "builtin": { + "fs": true, + "path.dirname": true, + "path.resolve": true } }, "stylelint>global-modules": { From 3d4cca4d9a468bb6a1fd8dedeb7bf0cc3e83726c Mon Sep 17 00:00:00 2001 From: Dan J Miller Date: Wed, 31 May 2023 12:52:55 -0230 Subject: [PATCH 013/160] Version v10.32.0-beta.0 From 84d22e122cc4fc57dc0f9500be9aefba072a4016 Mon Sep 17 00:00:00 2001 From: Elliot Winkler Date: Wed, 31 May 2023 09:29:29 -0600 Subject: [PATCH 014/160] Sync NetworkController constructor tests with core (#19311) This makes it easier to compare the NetworkController unit tests between extension and core. --- .../network/network-controller.test.ts | 96 ++++++++++--------- 1 file changed, 51 insertions(+), 45 deletions(-) diff --git a/app/scripts/controllers/network/network-controller.test.ts b/app/scripts/controllers/network/network-controller.test.ts index abb1a3bfa..4233a26c1 100644 --- a/app/scripts/controllers/network/network-controller.test.ts +++ b/app/scripts/controllers/network/network-controller.test.ts @@ -158,57 +158,23 @@ describe('NetworkController', () => { describe('constructor', () => { const invalidInfuraProjectIds = [undefined, null, {}, 1]; invalidInfuraProjectIds.forEach((invalidProjectId) => { - it(`throws if an invalid Infura ID of "${inspect( + it(`throws given an invalid Infura ID of "${inspect( invalidProjectId, - )}" is provided`, () => { + )}"`, () => { + const messenger = buildMessenger(); + const restrictedMessenger = buildNetworkControllerMessenger(messenger); expect( - // @ts-expect-error We are intentionally passing bad input. - () => new NetworkController({ infuraProjectId: invalidProjectId }), + () => + new NetworkController({ + messenger: restrictedMessenger, + // @ts-expect-error We are intentionally passing bad input. + infuraProjectId: invalidProjectId, + }), ).toThrow('Invalid Infura project ID'); }); }); - it('accepts initial state', async () => { - await withController( - { - state: { - providerConfig: { - type: 'rpc', - rpcUrl: 'http://example-custom-rpc.metamask.io', - chainId: '0x9999' as const, - nickname: 'Test initial state', - }, - networkDetails: { - EIPS: { - 1559: false, - }, - }, - }, - }, - ({ controller }) => { - expect(controller.store.getState()).toMatchInlineSnapshot(` - { - "networkConfigurations": {}, - "networkDetails": { - "EIPS": { - "1559": false, - }, - }, - "networkId": null, - "networkStatus": "unknown", - "providerConfig": { - "chainId": "0x9999", - "nickname": "Test initial state", - "rpcUrl": "http://example-custom-rpc.metamask.io", - "type": "rpc", - }, - } - `); - }, - ); - }); - - it('sets default state without initial state', async () => { + it('initializes the state with some defaults', async () => { await withController(({ controller }) => { expect(controller.store.getState()).toMatchInlineSnapshot(` { @@ -231,6 +197,46 @@ describe('NetworkController', () => { `); }); }); + + it('merges the given state into the default state', async () => { + await withController( + { + state: { + providerConfig: { + type: 'rpc', + rpcUrl: 'http://example-custom-rpc.metamask.io', + chainId: '0x9999' as const, + nickname: 'Test initial state', + }, + networkDetails: { + EIPS: { + 1559: true, + }, + }, + }, + }, + ({ controller }) => { + expect(controller.store.getState()).toMatchInlineSnapshot(` + { + "networkConfigurations": {}, + "networkDetails": { + "EIPS": { + "1559": true, + }, + }, + "networkId": null, + "networkStatus": "unknown", + "providerConfig": { + "chainId": "0x9999", + "nickname": "Test initial state", + "rpcUrl": "http://example-custom-rpc.metamask.io", + "type": "rpc", + }, + } + `); + }, + ); + }); }); describe('destroy', () => { From cc2e18b16ab660b4e2ecb81c4d912ee34f296a1f Mon Sep 17 00:00:00 2001 From: Elliot Winkler Date: Wed, 31 May 2023 09:29:59 -0600 Subject: [PATCH 015/160] Add getProviderConfig action to NetworkController (#19317) This controller action exists within the core version of NetworkController. Although there are no plans to make use of this action within the extension, it has accompanying tests. So ultimately, the goal of this commit (like others) is to make it easier to compare differences in the NetworkController tests between this repo and core by adding a test for the `getProviderConfig` action. --- .../network/network-controller.test.ts | 37 ++++++++++++++++++- .../controllers/network/network-controller.ts | 12 +++++- 2 files changed, 46 insertions(+), 3 deletions(-) diff --git a/app/scripts/controllers/network/network-controller.test.ts b/app/scripts/controllers/network/network-controller.test.ts index 4233a26c1..f70f8fb98 100644 --- a/app/scripts/controllers/network/network-controller.test.ts +++ b/app/scripts/controllers/network/network-controller.test.ts @@ -18,6 +18,7 @@ import { import { MetaMetricsNetworkEventSource } from '../../../../shared/constants/metametrics'; import { NetworkController, + NetworkControllerAction, NetworkControllerEvent, NetworkControllerOptions, NetworkControllerState, @@ -2451,6 +2452,31 @@ describe('NetworkController', () => { }); }); + describe('NetworkController:getProviderConfig action', () => { + it('returns the provider config in state', async () => { + await withController( + { + state: { + providerConfig: buildProviderConfig({ + type: NETWORK_TYPES.MAINNET, + }), + }, + }, + async ({ messenger }) => { + const providerConfig = await messenger.call( + 'NetworkController:getProviderConfig', + ); + + expect(providerConfig).toStrictEqual( + buildProviderConfig({ + type: NETWORK_TYPES.MAINNET, + }), + ); + }, + ); + }); + }); + describe('rollbackToPreviousProvider', () => { for (const { networkType } of INFURA_NETWORKS) { describe(`if the previous provider configuration had a type of "${networkType}"`, () => { @@ -6088,7 +6114,10 @@ function lookupNetworkTests({ * @returns The controller messenger. */ function buildMessenger() { - return new ControllerMessenger(); + return new ControllerMessenger< + NetworkControllerAction, + NetworkControllerEvent + >(); } /** @@ -6100,6 +6129,7 @@ function buildMessenger() { function buildNetworkControllerMessenger(messenger = buildMessenger()) { return messenger.getRestricted({ name: 'NetworkController', + allowedActions: ['NetworkController:getProviderConfig'], allowedEvents: [ 'NetworkController:networkDidChange', 'NetworkController:networkWillChange', @@ -6116,7 +6146,10 @@ type WithControllerCallback = ({ controller, }: { controller: NetworkController; - messenger: ControllerMessenger; + messenger: ControllerMessenger< + NetworkControllerAction, + NetworkControllerEvent + >; }) => Promise | ReturnValue; /** diff --git a/app/scripts/controllers/network/network-controller.ts b/app/scripts/controllers/network/network-controller.ts index 2f4fd9763..ea6afbd66 100644 --- a/app/scripts/controllers/network/network-controller.ts +++ b/app/scripts/controllers/network/network-controller.ts @@ -130,12 +130,19 @@ export type NetworkControllerEvent = | NetworkControllerInfuraIsBlockedEvent | NetworkControllerInfuraIsUnblockedEvent; +export type NetworkControllerGetProviderConfigAction = { + type: `NetworkController:getProviderConfig`; + handler: () => ProviderConfiguration; +}; + +export type NetworkControllerAction = NetworkControllerGetProviderConfigAction; + /** * The messenger that the NetworkController uses to publish events. */ export type NetworkControllerMessenger = RestrictedControllerMessenger< typeof name, - never, + NetworkControllerAction, NetworkControllerEvent, string, string @@ -477,6 +484,9 @@ export class NetworkController extends EventEmitter { } this.#infuraProjectId = infuraProjectId; this.#trackMetaMetricsEvent = trackMetaMetricsEvent; + this.#messenger.registerActionHandler(`${name}:getProviderConfig`, () => { + return this.store.getState().providerConfig; + }); } /** From 3e0d717b97c4a5a32bd3ee17a147accb37edcaca Mon Sep 17 00:00:00 2001 From: Elliot Winkler Date: Wed, 31 May 2023 09:30:17 -0600 Subject: [PATCH 016/160] NetworkController: Improve test for destroy (#19314) This test for the `destroy` method in NetworkController uses `toBe` on the core side because the use of `toBeTruthy` produces a lint warning there. It doesn't here, but it's good to be consistent anyway so that comparing the differences in NetworkController tests between this extension and core is easier. --- app/scripts/controllers/network/network-controller.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/scripts/controllers/network/network-controller.test.ts b/app/scripts/controllers/network/network-controller.test.ts index f70f8fb98..c18ec8a25 100644 --- a/app/scripts/controllers/network/network-controller.test.ts +++ b/app/scripts/controllers/network/network-controller.test.ts @@ -259,7 +259,7 @@ describe('NetworkController', () => { blockTracker.addListener('latest', () => { // do nothing }); - expect(blockTracker.isRunning()).toBeTruthy(); + expect(blockTracker.isRunning()).toBe(true); await controller.destroy(); From d7301fb81165194ce41fecf2b3a1d7965cc83d6f Mon Sep 17 00:00:00 2001 From: Erik Nilsson Date: Wed, 31 May 2023 17:49:17 +0200 Subject: [PATCH 017/160] Update README.md (#19350) Clarify that `.metamaskrc` doesn't exist before you create it --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index bf2671159..579b81c6c 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ To learn how to contribute to the MetaMask project itself, visit our [Internal D - Install [Yarn v3](https://yarnpkg.com/getting-started/install) - ONLY follow the steps in the "Install Corepack" and "Updating the global Yarn version" sections - DO NOT take any of the steps in the "Initializing your project", "Updating to the latest versions" or "Installing the latest build fresh from master" sections. These steps could result in your repo being reset or installing the wrong yarn version, which can break your build. -- Copy the `.metamaskrc.dist` file to `.metamaskrc` +- Duplicate `.metamaskrc.dist` within the root and rename it to `.metamaskrc` - Replace the `INFURA_PROJECT_ID` value with your own personal [Infura Project ID](https://infura.io/docs). - If debugging MetaMetrics, you'll need to add a value for `SEGMENT_WRITE_KEY` [Segment write key](https://segment.com/docs/connections/find-writekey/), see [Developing on MetaMask - Segment](./development/README.md#segment). - If debugging unhandled exceptions, you'll need to add a value for `SENTRY_DSN` [Sentry Dsn](https://docs.sentry.io/product/sentry-basics/dsn-explainer/), see [Developing on MetaMask - Sentry](./development/README.md#sentry). From d09c8bd492b5f1b1ffa57cf8a1bcdd5fe1babbf8 Mon Sep 17 00:00:00 2001 From: Mark Stacey Date: Wed, 31 May 2023 13:19:34 -0230 Subject: [PATCH 018/160] Update `@metamask/announcement-controller` to v4 (#19348) The `@metamask/announcement-controller` has been updated to v4, which is the version released in the core monorepo v53 release. The remaining packages released as part of v53 will be updated in later PRs. The only breaking change is that the minimum Node.js version was updated to v16. Relates to #19271 --- lavamoat/browserify/beta/policy.json | 7 +------ lavamoat/browserify/desktop/policy.json | 7 +------ lavamoat/browserify/flask/policy.json | 7 +------ lavamoat/browserify/main/policy.json | 7 +------ package.json | 2 +- yarn.lock | 12 ++++++------ 6 files changed, 11 insertions(+), 31 deletions(-) diff --git a/lavamoat/browserify/beta/policy.json b/lavamoat/browserify/beta/policy.json index ed6ced9ce..3b4fb05cd 100644 --- a/lavamoat/browserify/beta/policy.json +++ b/lavamoat/browserify/beta/policy.json @@ -800,12 +800,7 @@ }, "@metamask/announcement-controller": { "packages": { - "@metamask/announcement-controller>@metamask/base-controller": true - } - }, - "@metamask/announcement-controller>@metamask/base-controller": { - "packages": { - "immer": true + "@metamask/base-controller": true } }, "@metamask/approval-controller": { diff --git a/lavamoat/browserify/desktop/policy.json b/lavamoat/browserify/desktop/policy.json index 0b4baa2ed..da2e9fc3a 100644 --- a/lavamoat/browserify/desktop/policy.json +++ b/lavamoat/browserify/desktop/policy.json @@ -800,12 +800,7 @@ }, "@metamask/announcement-controller": { "packages": { - "@metamask/announcement-controller>@metamask/base-controller": true - } - }, - "@metamask/announcement-controller>@metamask/base-controller": { - "packages": { - "immer": true + "@metamask/base-controller": true } }, "@metamask/approval-controller": { diff --git a/lavamoat/browserify/flask/policy.json b/lavamoat/browserify/flask/policy.json index 0b4baa2ed..da2e9fc3a 100644 --- a/lavamoat/browserify/flask/policy.json +++ b/lavamoat/browserify/flask/policy.json @@ -800,12 +800,7 @@ }, "@metamask/announcement-controller": { "packages": { - "@metamask/announcement-controller>@metamask/base-controller": true - } - }, - "@metamask/announcement-controller>@metamask/base-controller": { - "packages": { - "immer": true + "@metamask/base-controller": true } }, "@metamask/approval-controller": { diff --git a/lavamoat/browserify/main/policy.json b/lavamoat/browserify/main/policy.json index ed6ced9ce..3b4fb05cd 100644 --- a/lavamoat/browserify/main/policy.json +++ b/lavamoat/browserify/main/policy.json @@ -800,12 +800,7 @@ }, "@metamask/announcement-controller": { "packages": { - "@metamask/announcement-controller>@metamask/base-controller": true - } - }, - "@metamask/announcement-controller>@metamask/base-controller": { - "packages": { - "immer": true + "@metamask/base-controller": true } }, "@metamask/approval-controller": { diff --git a/package.json b/package.json index dbea0ee97..276b9a8e5 100644 --- a/package.json +++ b/package.json @@ -224,7 +224,7 @@ "@metamask-institutional/sdk": "^0.1.17", "@metamask-institutional/transaction-update": "^0.1.21", "@metamask/address-book-controller": "^2.0.0", - "@metamask/announcement-controller": "^3.0.0", + "@metamask/announcement-controller": "^4.0.0", "@metamask/approval-controller": "^2.1.0", "@metamask/assets-controllers": "^7.0.0", "@metamask/base-controller": "^3.0.0", diff --git a/yarn.lock b/yarn.lock index 2ecdc868e..d2fa9fc1c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3877,12 +3877,12 @@ __metadata: languageName: node linkType: hard -"@metamask/announcement-controller@npm:^3.0.0": - version: 3.0.0 - resolution: "@metamask/announcement-controller@npm:3.0.0" +"@metamask/announcement-controller@npm:^4.0.0": + version: 4.0.0 + resolution: "@metamask/announcement-controller@npm:4.0.0" dependencies: - "@metamask/base-controller": ^2.0.0 - checksum: 14fe28e7db72ca3457618016d33dd66a566c991d4692a62e83ddf89b74f82277e5ed47dbd128aff9079cc3a5045ef79b808c106acc18717a51fb8ef9d05e0d5b + "@metamask/base-controller": ^3.0.0 + checksum: 9652545ddf1da0919c60c97456e695a39d7851c25bde9b73417c179c4c8abce4be32165d4d09b0c97671925b55d8c66a1af9f641595327722bbe92d658886719 languageName: node linkType: hard @@ -23953,7 +23953,7 @@ __metadata: "@metamask-institutional/sdk": ^0.1.17 "@metamask-institutional/transaction-update": ^0.1.21 "@metamask/address-book-controller": ^2.0.0 - "@metamask/announcement-controller": ^3.0.0 + "@metamask/announcement-controller": ^4.0.0 "@metamask/approval-controller": ^2.1.0 "@metamask/assets-controllers": ^7.0.0 "@metamask/auto-changelog": ^2.1.0 From 80de5ceed40f472fc35655ef3cfd4a0446b3a60f Mon Sep 17 00:00:00 2001 From: rohit kerkar <129620973+rohiiittttt@users.noreply.github.com> Date: Wed, 31 May 2023 22:42:21 +0530 Subject: [PATCH 019/160] Part of #18714: Replacing deprecated constants in `Modal-Header` folder (#19339) * replacing deprecated * replacing deprecated --------- Co-authored-by: Brad Decker --- .../modal-header/modal-header.stories.tsx | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/ui/components/component-library/modal-header/modal-header.stories.tsx b/ui/components/component-library/modal-header/modal-header.stories.tsx index 525379dc9..299221ca5 100644 --- a/ui/components/component-library/modal-header/modal-header.stories.tsx +++ b/ui/components/component-library/modal-header/modal-header.stories.tsx @@ -1,11 +1,11 @@ import React from 'react'; -import { ComponentStory, ComponentMeta } from '@storybook/react'; +import { StoryFn, Meta } from '@storybook/react'; import { TextVariant, TextAlign, - DISPLAY, - FLEX_DIRECTION, + Display, + FlexDirection, AlignItems, JustifyContent, } from '../../../helpers/constants/design-system'; @@ -32,16 +32,16 @@ export default { args: { children: 'ModalHeader', }, -} as ComponentMeta; +} as Meta; -const Template: ComponentStory = (args) => { +const Template: StoryFn = (args) => { return ; }; export const DefaultStory = Template.bind({}); DefaultStory.storyName = 'Default'; -export const Children: ComponentStory = (args) => ( +export const Children: StoryFn = (args) => ( <> Children as string @@ -49,8 +49,8 @@ export const Children: ComponentStory = (args) => ( Date: Wed, 31 May 2023 11:16:48 -0600 Subject: [PATCH 020/160] NetworkController tests: Remove commented line (#19315) This line was accidentally left in a previous PR that swapped Nock in the NetworkController tests for a fake provider. It does not show up in the core version of these tests. --- app/scripts/controllers/network/network-controller.test.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/app/scripts/controllers/network/network-controller.test.ts b/app/scripts/controllers/network/network-controller.test.ts index c18ec8a25..5ef3571cb 100644 --- a/app/scripts/controllers/network/network-controller.test.ts +++ b/app/scripts/controllers/network/network-controller.test.ts @@ -54,7 +54,6 @@ type Block = { }; const createNetworkClientMock = jest.mocked(createNetworkClient); -// const providerFromEngineMock = jest.mocked(providerFromEngine); const uuidV4Mock = jest.mocked(v4); /** From 206e4537d151e85139b248fc4593ebc22da998a7 Mon Sep 17 00:00:00 2001 From: Elliot Winkler Date: Wed, 31 May 2023 11:50:32 -0600 Subject: [PATCH 021/160] NetworkController tests: Sync withController helper (#19313) This reduces the diff in the NetworkController tests between this repo and core in order to make them easier to merge. --- .../network/network-controller.test.ts | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/app/scripts/controllers/network/network-controller.test.ts b/app/scripts/controllers/network/network-controller.test.ts index 5ef3571cb..6fd383522 100644 --- a/app/scripts/controllers/network/network-controller.test.ts +++ b/app/scripts/controllers/network/network-controller.test.ts @@ -79,13 +79,6 @@ const POST_1559_BLOCK: Block = { */ const BLOCK: Block = POST_1559_BLOCK; -/** - * A dummy value for the `projectId` option that `createInfuraClient` needs. - * (Infura should not be hit during tests, but just in case, this should not - * refer to a real project ID.) - */ -const DEFAULT_INFURA_PROJECT_ID = 'fake-infura-project-id'; - /** * The networks that NetworkController recognizes as built-in Infura networks, * along with information we expect to be true for those networks. @@ -6172,22 +6165,21 @@ type WithControllerArgs = * * @param args - Either a function, or an options bag + a function. The options * bag is equivalent to the options that NetworkController takes (although - * `messenger` is filled in if not given); the function will be called with the - * built controller. + * `messenger` and `infuraProjectId` are filled in if not given); the function + * will be called with the built controller. * @returns Whatever the callback returns. */ async function withController( ...args: WithControllerArgs ): Promise { - const [givenNetworkControllerOptions, fn] = - args.length === 2 ? args : [{}, args[0]]; + const [{ ...rest }, fn] = args.length === 2 ? args : [{}, args[0]]; const messenger = buildMessenger(); const restrictedMessenger = buildNetworkControllerMessenger(messenger); const controller = new NetworkController({ - infuraProjectId: DEFAULT_INFURA_PROJECT_ID, messenger: restrictedMessenger, trackMetaMetricsEvent: jest.fn(), - ...givenNetworkControllerOptions, + infuraProjectId: 'infura-project-id', + ...rest, }); try { return await fn({ controller, messenger }); From 1fc4b39dc7e80cd98bc689e8977c3be047621085 Mon Sep 17 00:00:00 2001 From: Elliot Winkler Date: Wed, 31 May 2023 11:51:46 -0600 Subject: [PATCH 022/160] Update INFURA_NETWORKS in NC tests to ostensibly use dec #'s (#19316) This is a tiny change in order to make the NetworkController tests between core and this repo more consistent and easier to compare. --- app/scripts/controllers/network/network-controller.test.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/scripts/controllers/network/network-controller.test.ts b/app/scripts/controllers/network/network-controller.test.ts index 6fd383522..1cfcc4817 100644 --- a/app/scripts/controllers/network/network-controller.test.ts +++ b/app/scripts/controllers/network/network-controller.test.ts @@ -86,19 +86,19 @@ const BLOCK: Block = POST_1559_BLOCK; const INFURA_NETWORKS = [ { networkType: NETWORK_TYPES.MAINNET, - chainId: '0x1' as const, + chainId: toHex(1), ticker: 'ETH', blockExplorerUrl: 'https://etherscan.io', }, { networkType: NETWORK_TYPES.GOERLI, - chainId: '0x5' as const, + chainId: toHex(5), ticker: 'GoerliETH', blockExplorerUrl: 'https://goerli.etherscan.io', }, { networkType: NETWORK_TYPES.SEPOLIA, - chainId: '0xaa36a7' as const, + chainId: toHex(11155111), ticker: 'SepoliaETH', blockExplorerUrl: 'https://sepolia.etherscan.io', }, From fbcd2a1113b522bab182d881db9cdc1a665f48ba Mon Sep 17 00:00:00 2001 From: Elliot Winkler Date: Wed, 31 May 2023 11:52:04 -0600 Subject: [PATCH 023/160] Ensure custom provider configs have chain ID and RPC URL (#19296) Update NetworkController so that when it is creating the network client based on configuration for a custom RPC endpoint, it verifies that the configuration object contains both a chain ID and RPC URL. This check is already present on the core side; bringing it over makes the tests more consistent so we can compare them more easily. --- .../network/network-controller.test.ts | 328 +++++++++--------- .../controllers/network/network-controller.ts | 38 +- 2 files changed, 193 insertions(+), 173 deletions(-) diff --git a/app/scripts/controllers/network/network-controller.test.ts b/app/scripts/controllers/network/network-controller.test.ts index 1cfcc4817..b438896a0 100644 --- a/app/scripts/controllers/network/network-controller.test.ts +++ b/app/scripts/controllers/network/network-controller.test.ts @@ -345,76 +345,190 @@ describe('NetworkController', () => { } describe(`when the type in the provider configuration is "rpc"`, () => { - it('initializes a provider pointed to the given RPC URL whose chain ID matches the configured chain ID', async () => { - await withController( - { - state: { - providerConfig: { - type: 'rpc', - chainId: '0x1337', - rpcUrl: 'https://mock-rpc-url', - ticker: 'TEST', - }, - networkConfigurations: { - testNetworkConfigurationId: { - rpcUrl: 'https://mock-rpc-url', + describe('if chainId and rpcUrl are present in the provider config', () => { + it('initializes a provider pointed to the given RPC URL whose chain ID matches the configured chain ID', async () => { + await withController( + { + state: { + providerConfig: { + type: 'rpc', chainId: '0x1337', + rpcUrl: 'https://mock-rpc-url', ticker: 'TEST', - id: 'testNetworkConfigurationId', + }, + networkConfigurations: { + testNetworkConfigurationId: { + rpcUrl: 'https://mock-rpc-url', + chainId: '0x1337', + ticker: 'TEST', + id: 'testNetworkConfigurationId', + }, }, }, }, - }, - async ({ controller }) => { - const fakeProvider = buildFakeProvider([ - { - request: { - method: 'test', + async ({ controller }) => { + const fakeProvider = buildFakeProvider([ + { + request: { + method: 'test', + }, + response: { + result: 'test response', + }, }, - response: { - result: 'test response', - }, - }, - ]); - const fakeNetworkClient = buildFakeClient(fakeProvider); - mockCreateNetworkClient() - .calledWith({ - chainId: '0x1337', - rpcUrl: 'https://mock-rpc-url', - type: NetworkClientType.Custom, - }) - .mockReturnValue(fakeNetworkClient); - mockCreateNetworkClient().mockReturnValue(fakeNetworkClient); + ]); + const fakeNetworkClient = buildFakeClient(fakeProvider); + mockCreateNetworkClient() + .calledWith({ + chainId: '0x1337', + rpcUrl: 'https://mock-rpc-url', + type: NetworkClientType.Custom, + }) + .mockReturnValue(fakeNetworkClient); + mockCreateNetworkClient().mockReturnValue(fakeNetworkClient); - await controller.initializeProvider(); + await controller.initializeProvider(); - const { provider } = controller.getProviderAndBlockTracker(); - assert(provider, 'Provider is somehow unset'); - const promisifiedSendAsync = promisify(provider.sendAsync).bind( - provider, - ); - const response = await promisifiedSendAsync({ - id: '1', - jsonrpc: '2.0', - method: 'test', - }); - expect(response.result).toBe('test response'); - }, - ); - }); + const { provider } = controller.getProviderAndBlockTracker(); + assert(provider, 'Provider is somehow unset'); + const promisifiedSendAsync = promisify(provider.sendAsync).bind( + provider, + ); + const response = await promisifiedSendAsync({ + id: '1', + jsonrpc: '2.0', + method: 'test', + }); + expect(response.result).toBe('test response'); + }, + ); + }); - lookupNetworkTests({ - expectedProviderConfig: buildProviderConfig({ - type: NETWORK_TYPES.RPC, - }), - initialState: { - providerConfig: buildProviderConfig({ + lookupNetworkTests({ + expectedProviderConfig: buildProviderConfig({ type: NETWORK_TYPES.RPC, }), - }, - operation: async (controller: NetworkController) => { - await controller.initializeProvider(); - }, + initialState: { + providerConfig: buildProviderConfig({ + type: NETWORK_TYPES.RPC, + }), + }, + operation: async (controller: NetworkController) => { + await controller.initializeProvider(); + }, + }); + }); + + describe('if chainId is missing from the provider config', () => { + it('throws', async () => { + await withController( + { + state: { + providerConfig: buildProviderConfig({ + type: NETWORK_TYPES.RPC, + chainId: undefined, + }), + }, + }, + async ({ controller }) => { + const fakeProvider = buildFakeProvider(); + const fakeNetworkClient = buildFakeClient(fakeProvider); + createNetworkClientMock.mockReturnValue(fakeNetworkClient); + + await expect(() => + controller.initializeProvider(), + ).rejects.toThrow( + 'chainId must be provided for custom RPC endpoints', + ); + }, + ); + }); + + it('does not create a network client or capture a provider', async () => { + await withController( + { + state: { + providerConfig: buildProviderConfig({ + type: NETWORK_TYPES.RPC, + chainId: undefined, + }), + }, + }, + async ({ controller }) => { + const fakeProvider = buildFakeProvider(); + const fakeNetworkClient = buildFakeClient(fakeProvider); + createNetworkClientMock.mockReturnValue(fakeNetworkClient); + + try { + await controller.initializeProvider(); + } catch { + // ignore the error + } + + expect(createNetworkClientMock).not.toHaveBeenCalled(); + const { provider, blockTracker } = + controller.getProviderAndBlockTracker(); + expect(provider).toBeNull(); + expect(blockTracker).toBeNull(); + }, + ); + }); + }); + + describe('if rpcUrl is missing from the provider config', () => { + it('throws', async () => { + await withController( + { + state: { + providerConfig: buildProviderConfig({ + type: NETWORK_TYPES.RPC, + rpcUrl: undefined, + }), + }, + }, + async ({ controller }) => { + const fakeProvider = buildFakeProvider(); + const fakeNetworkClient = buildFakeClient(fakeProvider); + createNetworkClientMock.mockReturnValue(fakeNetworkClient); + + await expect(() => + controller.initializeProvider(), + ).rejects.toThrow( + 'rpcUrl must be provided for custom RPC endpoints', + ); + }, + ); + }); + + it('does not create a network client or capture a provider', async () => { + await withController( + { + state: { + providerConfig: buildProviderConfig({ + type: NETWORK_TYPES.RPC, + rpcUrl: undefined, + }), + }, + }, + async ({ controller }) => { + const fakeProvider = buildFakeProvider(); + const fakeNetworkClient = buildFakeClient(fakeProvider); + createNetworkClientMock.mockReturnValue(fakeNetworkClient); + + try { + await controller.initializeProvider(); + } catch { + // ignore the error + } + + expect(createNetworkClientMock).not.toHaveBeenCalled(); + const { provider, blockTracker } = + controller.getProviderAndBlockTracker(); + expect(provider).toBeNull(); + expect(blockTracker).toBeNull(); + }, + ); + }); }); }); }); @@ -900,102 +1014,6 @@ describe('NetworkController', () => { }); }); - describe('if the provider has initialized, but the current network has no chainId', () => { - it('does not update state in any way', async () => { - await withController( - /* @ts-expect-error We are intentionally not including a chainId in the provider config. */ - { - state: { - providerConfig: { - type: 'rpc', - rpcUrl: 'http://example-custom-rpc.metamask.io', - }, - networkDetails: { - EIPS: { - 1559: true, - }, - }, - }, - }, - async ({ controller }) => { - const fakeProvider = buildFakeProvider(); - const fakeNetworkClient = buildFakeClient(fakeProvider); - mockCreateNetworkClient().mockReturnValue(fakeNetworkClient); - await controller.initializeProvider(); - const stateAfterInitialization = controller.store.getState(); - - await controller.lookupNetwork(); - - expect(controller.store.getState()).toStrictEqual( - stateAfterInitialization, - ); - }, - ); - }); - - it('does not emit infuraIsUnblocked', async () => { - await withController( - /* @ts-expect-error We are intentionally not including a chainId in the provider config. */ - { - state: { - providerConfig: { - type: 'rpc', - rpcUrl: 'http://example-custom-rpc.metamask.io', - }, - }, - }, - async ({ controller, messenger }) => { - const fakeProvider = buildFakeProvider(); - const fakeNetworkClient = buildFakeClient(fakeProvider); - mockCreateNetworkClient().mockReturnValue(fakeNetworkClient); - await controller.initializeProvider(); - - const promiseForNoInfuraIsUnblockedEvents = waitForPublishedEvents({ - messenger, - eventType: 'NetworkController:infuraIsUnblocked', - count: 0, - operation: async () => { - await controller.lookupNetwork(); - }, - }); - - expect(await promiseForNoInfuraIsUnblockedEvents).toBeTruthy(); - }, - ); - }); - - it('does not emit infuraIsBlocked', async () => { - await withController( - /* @ts-expect-error We are intentionally not including a chainId in the provider config. */ - { - state: { - providerConfig: { - type: 'rpc', - rpcUrl: 'http://example-custom-rpc.metamask.io', - }, - }, - }, - async ({ controller, messenger }) => { - const fakeProvider = buildFakeProvider(); - const fakeNetworkClient = buildFakeClient(fakeProvider); - mockCreateNetworkClient().mockReturnValue(fakeNetworkClient); - await controller.initializeProvider(); - - const promiseForNoInfuraIsBlockedEvents = waitForPublishedEvents({ - messenger, - eventType: 'NetworkController:infuraIsBlocked', - count: 0, - operation: async () => { - await controller.lookupNetwork(); - }, - }); - - expect(await promiseForNoInfuraIsBlockedEvents).toBeTruthy(); - }, - ); - }); - }); - INFURA_NETWORKS.forEach(({ networkType }) => { describe(`when the type in the provider configuration is "${networkType}"`, () => { describe('if the network was switched after the eth_getBlockByNumber request started but before it completed', () => { diff --git a/app/scripts/controllers/network/network-controller.ts b/app/scripts/controllers/network/network-controller.ts index ea6afbd66..ac0193d88 100644 --- a/app/scripts/controllers/network/network-controller.ts +++ b/app/scripts/controllers/network/network-controller.ts @@ -570,7 +570,7 @@ export class NetworkController extends EventEmitter { * blocking requests, or if the network is not Infura-supported. */ async lookupNetwork(): Promise { - const { chainId, type } = this.store.getState().providerConfig; + const { type } = this.store.getState().providerConfig; const { provider } = this.getProviderAndBlockTracker(); let networkChanged = false; let networkId: NetworkIdState = null; @@ -584,16 +584,6 @@ export class NetworkController extends EventEmitter { return; } - if (!chainId) { - log.warn( - 'NetworkController - lookupNetwork aborted due to missing chainId', - ); - this.#resetNetworkId(); - this.#resetNetworkStatus(); - this.#resetNetworkDetails(); - return; - } - const isInfura = isInfuraProviderType(type); const listener = () => { @@ -874,11 +864,12 @@ export class NetworkController extends EventEmitter { * the new network. */ async #switchNetwork(providerConfig: ProviderConfiguration) { + const { type, rpcUrl, chainId } = providerConfig; this.#messenger.publish('NetworkController:networkWillChange'); this.#resetNetworkId(); this.#resetNetworkStatus(); this.#resetNetworkDetails(); - this.#configureProvider(providerConfig); + this.#configureProvider({ type, rpcUrl, chainId }); this.#messenger.publish('NetworkController:networkDidChange'); await this.lookupNetwork(); } @@ -888,8 +879,7 @@ export class NetworkController extends EventEmitter { * block tracker) to talk to a network. * * @param args - The arguments. - * @param args.type - The shortname of an Infura-supported network (see - * {@link NETWORK_TYPES}). + * @param args.type - The provider type. * @param args.rpcUrl - The URL of the RPC endpoint that represents the * network. Only used for non-Infura networks. * @param args.chainId - The chain ID of the network (as per EIP-155). Only @@ -897,16 +887,28 @@ export class NetworkController extends EventEmitter { * any Infura-supported network). * @throws if the `type` if not a known Infura-supported network. */ - #configureProvider({ type, rpcUrl, chainId }: ProviderConfiguration): void { + #configureProvider({ + type, + rpcUrl, + chainId, + }: { + type: ProviderType; + rpcUrl: string | undefined; + chainId: Hex | undefined; + }): void { const isInfura = isInfuraProviderType(type); if (isInfura) { - // infura type-based endpoints this.#configureInfuraProvider({ type, infuraProjectId: this.#infuraProjectId, }); - } else if (type === NETWORK_TYPES.RPC && rpcUrl) { - // url-based rpc endpoints + } else if (type === NETWORK_TYPES.RPC) { + if (chainId === undefined) { + throw new Error('chainId must be provided for custom RPC endpoints'); + } + if (rpcUrl === undefined) { + throw new Error('rpcUrl must be provided for custom RPC endpoints'); + } this.#configureStandardProvider(rpcUrl, chainId); } else { throw new Error( From bb605f7e976db7c22b6efd5b924f277d901bf2fc Mon Sep 17 00:00:00 2001 From: Dan J Miller Date: Wed, 31 May 2023 17:43:26 -0230 Subject: [PATCH 024/160] Update mv3 minimum version to chrome v88 (#19358) --- app/manifest/v3/chrome.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/manifest/v3/chrome.json b/app/manifest/v3/chrome.json index 486692539..f57614bb8 100644 --- a/app/manifest/v3/chrome.json +++ b/app/manifest/v3/chrome.json @@ -6,5 +6,5 @@ "matches": ["https://metamask.io/*"], "ids": ["*"] }, - "minimum_chrome_version": "80" + "minimum_chrome_version": "88" } From 19ebd7054389a85afbb655721108fdb8156248e8 Mon Sep 17 00:00:00 2001 From: Dan J Miller Date: Wed, 31 May 2023 17:43:26 -0230 Subject: [PATCH 025/160] Update mv3 minimum version to chrome v88 (#19358) --- app/manifest/v3/chrome.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/manifest/v3/chrome.json b/app/manifest/v3/chrome.json index 486692539..f57614bb8 100644 --- a/app/manifest/v3/chrome.json +++ b/app/manifest/v3/chrome.json @@ -6,5 +6,5 @@ "matches": ["https://metamask.io/*"], "ids": ["*"] }, - "minimum_chrome_version": "80" + "minimum_chrome_version": "88" } From bebf6bf2a514c64e15fd220f65e6b3c7c0322d2a Mon Sep 17 00:00:00 2001 From: Dan J Miller Date: Wed, 31 May 2023 17:45:27 -0230 Subject: [PATCH 026/160] Version v10.32.0-beta.1 From dc580c1cf1e30a19bb4ca29654c392db62ecfc6d Mon Sep 17 00:00:00 2001 From: legobeat <109787230+legobeat@users.noreply.github.com> Date: Wed, 31 May 2023 20:21:42 +0000 Subject: [PATCH 027/160] devDeps: squirrelly@^8.0.8->^9.0.0 (#19113) CVE-2021-32819 / GHSA-q8j6-pwqx-pm96 --- ...h => squirrelly-npm-9.0.0-3cf710c7bb.patch} | 2 +- package.json | 4 ++-- yarn.lock | 18 +++++++++--------- 3 files changed, 12 insertions(+), 12 deletions(-) rename .yarn/patches/{squirrelly-npm-8.0.8-1d17420d8d.patch => squirrelly-npm-9.0.0-3cf710c7bb.patch} (85%) diff --git a/.yarn/patches/squirrelly-npm-8.0.8-1d17420d8d.patch b/.yarn/patches/squirrelly-npm-9.0.0-3cf710c7bb.patch similarity index 85% rename from .yarn/patches/squirrelly-npm-8.0.8-1d17420d8d.patch rename to .yarn/patches/squirrelly-npm-9.0.0-3cf710c7bb.patch index f316d6b4c..06da8c146 100644 --- a/.yarn/patches/squirrelly-npm-8.0.8-1d17420d8d.patch +++ b/.yarn/patches/squirrelly-npm-9.0.0-3cf710c7bb.patch @@ -1,5 +1,5 @@ diff --git a/dist/squirrelly.cjs.js b/dist/squirrelly.cjs.js -index 4680ee747900853b9af01b480c749880dedb9824..95dce7623bc115508063a78c7de9ed7b6e4d3d82 100644 +index b87580be5da8a9a5af4cf60c8c5acf910c8f9ed2..e037b8a986d331f7075bbd448c80104de8a3453c 100644 --- a/dist/squirrelly.cjs.js +++ b/dist/squirrelly.cjs.js @@ -5,7 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); diff --git a/package.json b/package.json index 276b9a8e5..5e5e3849d 100644 --- a/package.json +++ b/package.json @@ -181,7 +181,7 @@ "sass@^1.32.4": "patch:sass@npm%3A1.35.2#./.yarn/patches/sass-npm-1.35.2-6df4e15d13.patch", "sass@^1.26.3": "patch:sass@npm%3A1.35.2#./.yarn/patches/sass-npm-1.35.2-6df4e15d13.patch", "sass@^1.29.0": "patch:sass@npm%3A1.35.2#./.yarn/patches/sass-npm-1.35.2-6df4e15d13.patch", - "squirrelly@^8.0.8": "patch:squirrelly@npm%3A8.0.8#./.yarn/patches/squirrelly-npm-8.0.8-1d17420d8d.patch", + "squirrelly@^9.0.0": "patch:squirrelly@npm%3A9.0.0#./.yarn/patches/squirrelly-npm-9.0.0-3cf710c7bb.patch", "stylelint@^13.6.1": "patch:stylelint@npm%3A13.6.1#./.yarn/patches/stylelint-npm-13.6.1-47aaddf62b.patch", "luxon@^3.0.1": "patch:luxon@npm%3A3.2.1#./.yarn/patches/luxon-npm-3.2.1-56f8d97395.patch", "luxon@^3.2.1": "patch:luxon@npm%3A3.2.1#./.yarn/patches/luxon-npm-3.2.1-56f8d97395.patch", @@ -530,7 +530,7 @@ "sinon": "^9.0.0", "source-map": "^0.7.2", "source-map-explorer": "^2.4.2", - "squirrelly": "^8.0.8", + "squirrelly": "^9.0.0", "storybook": "^7.0.11", "storybook-dark-mode": "^3.0.0", "stream-browserify": "^3.0.0", diff --git a/yarn.lock b/yarn.lock index d2fa9fc1c..02e505c83 100644 --- a/yarn.lock +++ b/yarn.lock @@ -24239,7 +24239,7 @@ __metadata: sinon: ^9.0.0 source-map: ^0.7.2 source-map-explorer: ^2.4.2 - squirrelly: ^8.0.8 + squirrelly: ^9.0.0 storybook: ^7.0.11 storybook-dark-mode: ^3.0.0 stream-browserify: ^3.0.0 @@ -31331,17 +31331,17 @@ __metadata: languageName: node linkType: hard -"squirrelly@npm:8.0.8": - version: 8.0.8 - resolution: "squirrelly@npm:8.0.8" - checksum: 0ee76512b88ee38be0a91886bedf01b96aa6a557aaf7cee5d6d2b5ab3903ae32898007447805e3ef46a03f9dde7483d678e1ee433e7882c4b7a110b4c58f4f9f +"squirrelly@npm:9.0.0": + version: 9.0.0 + resolution: "squirrelly@npm:9.0.0" + checksum: 25bcb7350b0919136f1f239c05da17e41924bb8cc93d64a1821c961a31fd0dd25b0190ae2774020a9e63052c3f2a3e06d9f3adcd4d7df69e82818be1e2cb67c9 languageName: node linkType: hard -"squirrelly@patch:squirrelly@npm%3A8.0.8#./.yarn/patches/squirrelly-npm-8.0.8-1d17420d8d.patch::locator=metamask-crx%40workspace%3A.": - version: 8.0.8 - resolution: "squirrelly@patch:squirrelly@npm%3A8.0.8#./.yarn/patches/squirrelly-npm-8.0.8-1d17420d8d.patch::version=8.0.8&hash=db398a&locator=metamask-crx%40workspace%3A." - checksum: ffec537e63964d354c77878d322b450b88d1723651b2876e1c858845113c02d3936d144f038d6f0c60cac727e11a87c79ae0d4431b4af3a5e09e7373f209f2cb +"squirrelly@patch:squirrelly@npm%3A9.0.0#./.yarn/patches/squirrelly-npm-9.0.0-3cf710c7bb.patch::locator=metamask-crx%40workspace%3A.": + version: 9.0.0 + resolution: "squirrelly@patch:squirrelly@npm%3A9.0.0#./.yarn/patches/squirrelly-npm-9.0.0-3cf710c7bb.patch::version=9.0.0&hash=7ea518&locator=metamask-crx%40workspace%3A." + checksum: 24d2b50493b86ac64bd29ec5b595cb51f30d965fc787c05d0f952c4a95d7a9867a0144d386e6d0cb5c90e37a85f367e90426f3548ae005a50dd8c410bb79fb00 languageName: node linkType: hard From bdf32199d159958352cca4f8f423bb2efd6d1f86 Mon Sep 17 00:00:00 2001 From: legobeat <109787230+legobeat@users.noreply.github.com> Date: Wed, 31 May 2023 20:45:21 +0000 Subject: [PATCH 028/160] devDeps: yargs@7.1.1->7.1.2 (#19057) CVE-2020-7608 / GHSA-p9pc-299p-vxgp --- yarn.lock | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/yarn.lock b/yarn.lock index 02e505c83..326e688e0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -35102,16 +35102,6 @@ __metadata: languageName: node linkType: hard -"yargs-parser@npm:5.0.0-security.0": - version: 5.0.0-security.0 - resolution: "yargs-parser@npm:5.0.0-security.0" - dependencies: - camelcase: ^3.0.0 - object.assign: ^4.1.0 - checksum: e1da2e44d936a1e0ee8a740a03aad72c1ab24148ced55e381491bb39d9afd14be112d9df6f95db91d98c42df599041124e1e193905cf1cf1406e0ea0af42d0ee - languageName: node - linkType: hard - "yargs-parser@npm:^18.1.2, yargs-parser@npm:^18.1.3": version: 18.1.3 resolution: "yargs-parser@npm:18.1.3" @@ -35146,6 +35136,16 @@ __metadata: languageName: node linkType: hard +"yargs-parser@npm:^5.0.1": + version: 5.0.1 + resolution: "yargs-parser@npm:5.0.1" + dependencies: + camelcase: ^3.0.0 + object.assign: ^4.1.0 + checksum: 8eff7f3653afc9185cb917ee034d189c1ba4bc0fd5005c9588442e25557e9bf69c7331663a6f9a2bb897cd4c1544ba9675ed3335133e19e660a3086fedc259db + languageName: node + linkType: hard + "yargs-unparser@npm:2.0.0": version: 2.0.0 resolution: "yargs-unparser@npm:2.0.0" @@ -35230,8 +35230,8 @@ __metadata: linkType: hard "yargs@npm:^7.1.0": - version: 7.1.1 - resolution: "yargs@npm:7.1.1" + version: 7.1.2 + resolution: "yargs@npm:7.1.2" dependencies: camelcase: ^3.0.0 cliui: ^3.2.0 @@ -35245,8 +35245,8 @@ __metadata: string-width: ^1.0.2 which-module: ^1.0.0 y18n: ^3.2.1 - yargs-parser: 5.0.0-security.0 - checksum: 8572bd25c1abaa1f1f2c87ccb7df0c998645a4109a8ba81d711cf5627056df1b48b71ac988ab8adcf676453c3b2e69e946ea807a54b18cd4e178babb09f827e9 + yargs-parser: ^5.0.1 + checksum: 0c330ce1338cd9f293157bf8955af6833ae59032ab1bc936510ce7a216de9bb65b05b39a82ff0e7359bfb643342cc05de5049ce50ee9404b0818f65911fb59a5 languageName: node linkType: hard From 000c1f2ef4d9240244eca1b0fd68143852879ec9 Mon Sep 17 00:00:00 2001 From: Mark Stacey Date: Wed, 31 May 2023 18:33:29 -0230 Subject: [PATCH 029/160] Update `@metamask/controller-utils` to v4 (#19344) The package `@metamask/controller-utils` has been updated to v4. This version was part of the core monorepo v53 release. The remaining packages released as part of v53 will be updated in later PRs. This release included a variety of breaking changes, but most of them did not affect the extension's usage of this library. The one that did have an impact was the removal of the `Json` type, which was identical to the `Json` type in `@metamask/utils`. We're now using the `@metamask/utils` version of this type exclusively. Relates to #19271 Co-authored-by: legobeat <109787230+legobeat@users.noreply.github.com> --- lavamoat/browserify/beta/policy.json | 133 +++++++++++++++++++-- lavamoat/browserify/desktop/policy.json | 152 ++++++++++++++++++++++-- lavamoat/browserify/flask/policy.json | 152 ++++++++++++++++++++++-- lavamoat/browserify/main/policy.json | 133 +++++++++++++++++++-- package.json | 2 +- ui/pages/swaps/swaps.util.ts | 2 +- yarn.lock | 19 ++- 7 files changed, 559 insertions(+), 34 deletions(-) diff --git a/lavamoat/browserify/beta/policy.json b/lavamoat/browserify/beta/policy.json index 3b4fb05cd..251a968d4 100644 --- a/lavamoat/browserify/beta/policy.json +++ b/lavamoat/browserify/beta/policy.json @@ -790,7 +790,7 @@ "@metamask/address-book-controller": { "packages": { "@metamask/address-book-controller>@metamask/base-controller": true, - "@metamask/controller-utils": true + "@metamask/address-book-controller>@metamask/controller-utils": true } }, "@metamask/address-book-controller>@metamask/base-controller": { @@ -798,6 +798,23 @@ "immer": true } }, + "@metamask/address-book-controller>@metamask/controller-utils": { + "globals": { + "URL": true, + "console.error": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/utils": true, + "browserify>buffer": true, + "eslint>fast-deep-equal": true, + "eth-ens-namehash": true, + "ethereumjs-util": true, + "ethjs>ethjs-unit": true + } + }, "@metamask/announcement-controller": { "packages": { "@metamask/base-controller": true @@ -837,10 +854,10 @@ "@ethersproject/providers": true, "@metamask/assets-controllers>@metamask/abi-utils": true, "@metamask/assets-controllers>@metamask/base-controller": true, + "@metamask/assets-controllers>@metamask/controller-utils": true, "@metamask/assets-controllers>abort-controller": true, "@metamask/assets-controllers>multiformats": true, "@metamask/contract-metadata": true, - "@metamask/controller-utils": true, "@metamask/metamask-eth-abis": true, "@metamask/utils": true, "browserify>events": true, @@ -875,6 +892,23 @@ "immer": true } }, + "@metamask/assets-controllers>@metamask/controller-utils": { + "globals": { + "URL": true, + "console.error": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/utils": true, + "browserify>buffer": true, + "eslint>fast-deep-equal": true, + "eth-ens-namehash": true, + "ethereumjs-util": true, + "ethjs>ethjs-unit": true + } + }, "@metamask/assets-controllers>abort-controller": { "globals": { "AbortController": true @@ -1518,8 +1552,8 @@ "setInterval": true }, "packages": { - "@metamask/controller-utils": true, "@metamask/gas-fee-controller>@metamask/base-controller": true, + "@metamask/gas-fee-controller>@metamask/controller-utils": true, "eth-query": true, "ethereumjs-util": true, "ethjs>ethjs-unit": true, @@ -1531,6 +1565,23 @@ "immer": true } }, + "@metamask/gas-fee-controller>@metamask/controller-utils": { + "globals": { + "URL": true, + "console.error": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/utils": true, + "browserify>buffer": true, + "eslint>fast-deep-equal": true, + "eth-ens-namehash": true, + "ethereumjs-util": true, + "ethjs>ethjs-unit": true + } + }, "@metamask/jazzicon": { "globals": { "document.createElement": true, @@ -1629,8 +1680,8 @@ }, "@metamask/message-manager": { "packages": { - "@metamask/controller-utils": true, "@metamask/message-manager>@metamask/base-controller": true, + "@metamask/message-manager>@metamask/controller-utils": true, "@metamask/message-manager>jsonschema": true, "browserify>buffer": true, "browserify>events": true, @@ -1644,6 +1695,23 @@ "immer": true } }, + "@metamask/message-manager>@metamask/controller-utils": { + "globals": { + "URL": true, + "console.error": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/utils": true, + "browserify>buffer": true, + "eslint>fast-deep-equal": true, + "eth-ens-namehash": true, + "ethereumjs-util": true, + "ethjs>ethjs-unit": true + } + }, "@metamask/message-manager>jsonschema": { "packages": { "browserify>url": true @@ -1674,8 +1742,8 @@ "console.error": true }, "packages": { - "@metamask/controller-utils": true, "@metamask/permission-controller>@metamask/base-controller": true, + "@metamask/permission-controller>@metamask/controller-utils": true, "@metamask/permission-controller>nanoid": true, "deep-freeze-strict": true, "eth-rpc-errors": true, @@ -1688,6 +1756,23 @@ "immer": true } }, + "@metamask/permission-controller>@metamask/controller-utils": { + "globals": { + "URL": true, + "console.error": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/utils": true, + "browserify>buffer": true, + "eslint>fast-deep-equal": true, + "eth-ens-namehash": true, + "ethereumjs-util": true, + "ethjs>ethjs-unit": true + } + }, "@metamask/permission-controller>nanoid": { "globals": { "crypto.getRandomValues": true @@ -1698,8 +1783,8 @@ "fetch": true }, "packages": { - "@metamask/controller-utils": true, "@metamask/phishing-controller>@metamask/base-controller": true, + "@metamask/phishing-controller>@metamask/controller-utils": true, "@metamask/phishing-warning>eth-phishing-detect": true, "punycode": true } @@ -1709,6 +1794,23 @@ "immer": true } }, + "@metamask/phishing-controller>@metamask/controller-utils": { + "globals": { + "URL": true, + "console.error": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/utils": true, + "browserify>buffer": true, + "eslint>fast-deep-equal": true, + "eth-ens-namehash": true, + "ethereumjs-util": true, + "ethjs>ethjs-unit": true + } + }, "@metamask/phishing-warning>eth-phishing-detect": { "packages": { "eslint>optionator>fast-levenshtein": true @@ -1760,9 +1862,9 @@ "console.info": true }, "packages": { - "@metamask/controller-utils": true, "@metamask/message-manager": true, "@metamask/signature-controller>@metamask/base-controller": true, + "@metamask/signature-controller>@metamask/controller-utils": true, "browserify>buffer": true, "browserify>events": true, "eth-rpc-errors": true, @@ -1774,6 +1876,23 @@ "immer": true } }, + "@metamask/signature-controller>@metamask/controller-utils": { + "globals": { + "URL": true, + "console.error": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/utils": true, + "browserify>buffer": true, + "eslint>fast-deep-equal": true, + "eth-ens-namehash": true, + "ethereumjs-util": true, + "ethjs>ethjs-unit": true + } + }, "@metamask/smart-transactions-controller": { "globals": { "URLSearchParams": true, diff --git a/lavamoat/browserify/desktop/policy.json b/lavamoat/browserify/desktop/policy.json index da2e9fc3a..b3752c9d9 100644 --- a/lavamoat/browserify/desktop/policy.json +++ b/lavamoat/browserify/desktop/policy.json @@ -790,7 +790,7 @@ "@metamask/address-book-controller": { "packages": { "@metamask/address-book-controller>@metamask/base-controller": true, - "@metamask/controller-utils": true + "@metamask/address-book-controller>@metamask/controller-utils": true } }, "@metamask/address-book-controller>@metamask/base-controller": { @@ -798,6 +798,23 @@ "immer": true } }, + "@metamask/address-book-controller>@metamask/controller-utils": { + "globals": { + "URL": true, + "console.error": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/utils": true, + "browserify>buffer": true, + "eslint>fast-deep-equal": true, + "eth-ens-namehash": true, + "ethereumjs-util": true, + "ethjs>ethjs-unit": true + } + }, "@metamask/announcement-controller": { "packages": { "@metamask/base-controller": true @@ -837,10 +854,10 @@ "@ethersproject/providers": true, "@metamask/assets-controllers>@metamask/abi-utils": true, "@metamask/assets-controllers>@metamask/base-controller": true, + "@metamask/assets-controllers>@metamask/controller-utils": true, "@metamask/assets-controllers>abort-controller": true, "@metamask/assets-controllers>multiformats": true, "@metamask/contract-metadata": true, - "@metamask/controller-utils": true, "@metamask/metamask-eth-abis": true, "@metamask/utils": true, "browserify>events": true, @@ -875,6 +892,23 @@ "immer": true } }, + "@metamask/assets-controllers>@metamask/controller-utils": { + "globals": { + "URL": true, + "console.error": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/utils": true, + "browserify>buffer": true, + "eslint>fast-deep-equal": true, + "eth-ens-namehash": true, + "ethereumjs-util": true, + "ethjs>ethjs-unit": true + } + }, "@metamask/assets-controllers>abort-controller": { "globals": { "AbortController": true @@ -1589,8 +1623,8 @@ "setInterval": true }, "packages": { - "@metamask/controller-utils": true, "@metamask/gas-fee-controller>@metamask/base-controller": true, + "@metamask/gas-fee-controller>@metamask/controller-utils": true, "eth-query": true, "ethereumjs-util": true, "ethjs>ethjs-unit": true, @@ -1602,6 +1636,23 @@ "immer": true } }, + "@metamask/gas-fee-controller>@metamask/controller-utils": { + "globals": { + "URL": true, + "console.error": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/utils": true, + "browserify>buffer": true, + "eslint>fast-deep-equal": true, + "eth-ens-namehash": true, + "ethereumjs-util": true, + "ethjs>ethjs-unit": true + } + }, "@metamask/jazzicon": { "globals": { "document.createElement": true, @@ -1700,8 +1751,8 @@ }, "@metamask/message-manager": { "packages": { - "@metamask/controller-utils": true, "@metamask/message-manager>@metamask/base-controller": true, + "@metamask/message-manager>@metamask/controller-utils": true, "@metamask/message-manager>jsonschema": true, "browserify>buffer": true, "browserify>events": true, @@ -1715,6 +1766,23 @@ "immer": true } }, + "@metamask/message-manager>@metamask/controller-utils": { + "globals": { + "URL": true, + "console.error": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/utils": true, + "browserify>buffer": true, + "eslint>fast-deep-equal": true, + "eth-ens-namehash": true, + "ethereumjs-util": true, + "ethjs>ethjs-unit": true + } + }, "@metamask/message-manager>jsonschema": { "packages": { "browserify>url": true @@ -1722,8 +1790,8 @@ }, "@metamask/notification-controller": { "packages": { - "@metamask/controller-utils": true, "@metamask/notification-controller>@metamask/base-controller": true, + "@metamask/notification-controller>@metamask/controller-utils": true, "@metamask/notification-controller>nanoid": true } }, @@ -1732,6 +1800,23 @@ "immer": true } }, + "@metamask/notification-controller>@metamask/controller-utils": { + "globals": { + "URL": true, + "console.error": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/utils": true, + "browserify>buffer": true, + "eslint>fast-deep-equal": true, + "eth-ens-namehash": true, + "ethereumjs-util": true, + "ethjs>ethjs-unit": true + } + }, "@metamask/notification-controller>nanoid": { "globals": { "crypto.getRandomValues": true @@ -1757,8 +1842,8 @@ "console.error": true }, "packages": { - "@metamask/controller-utils": true, "@metamask/permission-controller>@metamask/base-controller": true, + "@metamask/permission-controller>@metamask/controller-utils": true, "@metamask/permission-controller>nanoid": true, "deep-freeze-strict": true, "eth-rpc-errors": true, @@ -1771,6 +1856,23 @@ "immer": true } }, + "@metamask/permission-controller>@metamask/controller-utils": { + "globals": { + "URL": true, + "console.error": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/utils": true, + "browserify>buffer": true, + "eslint>fast-deep-equal": true, + "eth-ens-namehash": true, + "ethereumjs-util": true, + "ethjs>ethjs-unit": true + } + }, "@metamask/permission-controller>nanoid": { "globals": { "crypto.getRandomValues": true @@ -1781,8 +1883,8 @@ "fetch": true }, "packages": { - "@metamask/controller-utils": true, "@metamask/phishing-controller>@metamask/base-controller": true, + "@metamask/phishing-controller>@metamask/controller-utils": true, "@metamask/phishing-warning>eth-phishing-detect": true, "punycode": true } @@ -1792,6 +1894,23 @@ "immer": true } }, + "@metamask/phishing-controller>@metamask/controller-utils": { + "globals": { + "URL": true, + "console.error": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/utils": true, + "browserify>buffer": true, + "eslint>fast-deep-equal": true, + "eth-ens-namehash": true, + "ethereumjs-util": true, + "ethjs>ethjs-unit": true + } + }, "@metamask/phishing-warning>eth-phishing-detect": { "packages": { "eslint>optionator>fast-levenshtein": true @@ -1946,9 +2065,9 @@ "console.info": true }, "packages": { - "@metamask/controller-utils": true, "@metamask/message-manager": true, "@metamask/signature-controller>@metamask/base-controller": true, + "@metamask/signature-controller>@metamask/controller-utils": true, "browserify>buffer": true, "browserify>events": true, "eth-rpc-errors": true, @@ -1960,6 +2079,23 @@ "immer": true } }, + "@metamask/signature-controller>@metamask/controller-utils": { + "globals": { + "URL": true, + "console.error": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/utils": true, + "browserify>buffer": true, + "eslint>fast-deep-equal": true, + "eth-ens-namehash": true, + "ethereumjs-util": true, + "ethjs>ethjs-unit": true + } + }, "@metamask/smart-transactions-controller": { "globals": { "URLSearchParams": true, diff --git a/lavamoat/browserify/flask/policy.json b/lavamoat/browserify/flask/policy.json index da2e9fc3a..b3752c9d9 100644 --- a/lavamoat/browserify/flask/policy.json +++ b/lavamoat/browserify/flask/policy.json @@ -790,7 +790,7 @@ "@metamask/address-book-controller": { "packages": { "@metamask/address-book-controller>@metamask/base-controller": true, - "@metamask/controller-utils": true + "@metamask/address-book-controller>@metamask/controller-utils": true } }, "@metamask/address-book-controller>@metamask/base-controller": { @@ -798,6 +798,23 @@ "immer": true } }, + "@metamask/address-book-controller>@metamask/controller-utils": { + "globals": { + "URL": true, + "console.error": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/utils": true, + "browserify>buffer": true, + "eslint>fast-deep-equal": true, + "eth-ens-namehash": true, + "ethereumjs-util": true, + "ethjs>ethjs-unit": true + } + }, "@metamask/announcement-controller": { "packages": { "@metamask/base-controller": true @@ -837,10 +854,10 @@ "@ethersproject/providers": true, "@metamask/assets-controllers>@metamask/abi-utils": true, "@metamask/assets-controllers>@metamask/base-controller": true, + "@metamask/assets-controllers>@metamask/controller-utils": true, "@metamask/assets-controllers>abort-controller": true, "@metamask/assets-controllers>multiformats": true, "@metamask/contract-metadata": true, - "@metamask/controller-utils": true, "@metamask/metamask-eth-abis": true, "@metamask/utils": true, "browserify>events": true, @@ -875,6 +892,23 @@ "immer": true } }, + "@metamask/assets-controllers>@metamask/controller-utils": { + "globals": { + "URL": true, + "console.error": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/utils": true, + "browserify>buffer": true, + "eslint>fast-deep-equal": true, + "eth-ens-namehash": true, + "ethereumjs-util": true, + "ethjs>ethjs-unit": true + } + }, "@metamask/assets-controllers>abort-controller": { "globals": { "AbortController": true @@ -1589,8 +1623,8 @@ "setInterval": true }, "packages": { - "@metamask/controller-utils": true, "@metamask/gas-fee-controller>@metamask/base-controller": true, + "@metamask/gas-fee-controller>@metamask/controller-utils": true, "eth-query": true, "ethereumjs-util": true, "ethjs>ethjs-unit": true, @@ -1602,6 +1636,23 @@ "immer": true } }, + "@metamask/gas-fee-controller>@metamask/controller-utils": { + "globals": { + "URL": true, + "console.error": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/utils": true, + "browserify>buffer": true, + "eslint>fast-deep-equal": true, + "eth-ens-namehash": true, + "ethereumjs-util": true, + "ethjs>ethjs-unit": true + } + }, "@metamask/jazzicon": { "globals": { "document.createElement": true, @@ -1700,8 +1751,8 @@ }, "@metamask/message-manager": { "packages": { - "@metamask/controller-utils": true, "@metamask/message-manager>@metamask/base-controller": true, + "@metamask/message-manager>@metamask/controller-utils": true, "@metamask/message-manager>jsonschema": true, "browserify>buffer": true, "browserify>events": true, @@ -1715,6 +1766,23 @@ "immer": true } }, + "@metamask/message-manager>@metamask/controller-utils": { + "globals": { + "URL": true, + "console.error": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/utils": true, + "browserify>buffer": true, + "eslint>fast-deep-equal": true, + "eth-ens-namehash": true, + "ethereumjs-util": true, + "ethjs>ethjs-unit": true + } + }, "@metamask/message-manager>jsonschema": { "packages": { "browserify>url": true @@ -1722,8 +1790,8 @@ }, "@metamask/notification-controller": { "packages": { - "@metamask/controller-utils": true, "@metamask/notification-controller>@metamask/base-controller": true, + "@metamask/notification-controller>@metamask/controller-utils": true, "@metamask/notification-controller>nanoid": true } }, @@ -1732,6 +1800,23 @@ "immer": true } }, + "@metamask/notification-controller>@metamask/controller-utils": { + "globals": { + "URL": true, + "console.error": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/utils": true, + "browserify>buffer": true, + "eslint>fast-deep-equal": true, + "eth-ens-namehash": true, + "ethereumjs-util": true, + "ethjs>ethjs-unit": true + } + }, "@metamask/notification-controller>nanoid": { "globals": { "crypto.getRandomValues": true @@ -1757,8 +1842,8 @@ "console.error": true }, "packages": { - "@metamask/controller-utils": true, "@metamask/permission-controller>@metamask/base-controller": true, + "@metamask/permission-controller>@metamask/controller-utils": true, "@metamask/permission-controller>nanoid": true, "deep-freeze-strict": true, "eth-rpc-errors": true, @@ -1771,6 +1856,23 @@ "immer": true } }, + "@metamask/permission-controller>@metamask/controller-utils": { + "globals": { + "URL": true, + "console.error": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/utils": true, + "browserify>buffer": true, + "eslint>fast-deep-equal": true, + "eth-ens-namehash": true, + "ethereumjs-util": true, + "ethjs>ethjs-unit": true + } + }, "@metamask/permission-controller>nanoid": { "globals": { "crypto.getRandomValues": true @@ -1781,8 +1883,8 @@ "fetch": true }, "packages": { - "@metamask/controller-utils": true, "@metamask/phishing-controller>@metamask/base-controller": true, + "@metamask/phishing-controller>@metamask/controller-utils": true, "@metamask/phishing-warning>eth-phishing-detect": true, "punycode": true } @@ -1792,6 +1894,23 @@ "immer": true } }, + "@metamask/phishing-controller>@metamask/controller-utils": { + "globals": { + "URL": true, + "console.error": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/utils": true, + "browserify>buffer": true, + "eslint>fast-deep-equal": true, + "eth-ens-namehash": true, + "ethereumjs-util": true, + "ethjs>ethjs-unit": true + } + }, "@metamask/phishing-warning>eth-phishing-detect": { "packages": { "eslint>optionator>fast-levenshtein": true @@ -1946,9 +2065,9 @@ "console.info": true }, "packages": { - "@metamask/controller-utils": true, "@metamask/message-manager": true, "@metamask/signature-controller>@metamask/base-controller": true, + "@metamask/signature-controller>@metamask/controller-utils": true, "browserify>buffer": true, "browserify>events": true, "eth-rpc-errors": true, @@ -1960,6 +2079,23 @@ "immer": true } }, + "@metamask/signature-controller>@metamask/controller-utils": { + "globals": { + "URL": true, + "console.error": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/utils": true, + "browserify>buffer": true, + "eslint>fast-deep-equal": true, + "eth-ens-namehash": true, + "ethereumjs-util": true, + "ethjs>ethjs-unit": true + } + }, "@metamask/smart-transactions-controller": { "globals": { "URLSearchParams": true, diff --git a/lavamoat/browserify/main/policy.json b/lavamoat/browserify/main/policy.json index 3b4fb05cd..251a968d4 100644 --- a/lavamoat/browserify/main/policy.json +++ b/lavamoat/browserify/main/policy.json @@ -790,7 +790,7 @@ "@metamask/address-book-controller": { "packages": { "@metamask/address-book-controller>@metamask/base-controller": true, - "@metamask/controller-utils": true + "@metamask/address-book-controller>@metamask/controller-utils": true } }, "@metamask/address-book-controller>@metamask/base-controller": { @@ -798,6 +798,23 @@ "immer": true } }, + "@metamask/address-book-controller>@metamask/controller-utils": { + "globals": { + "URL": true, + "console.error": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/utils": true, + "browserify>buffer": true, + "eslint>fast-deep-equal": true, + "eth-ens-namehash": true, + "ethereumjs-util": true, + "ethjs>ethjs-unit": true + } + }, "@metamask/announcement-controller": { "packages": { "@metamask/base-controller": true @@ -837,10 +854,10 @@ "@ethersproject/providers": true, "@metamask/assets-controllers>@metamask/abi-utils": true, "@metamask/assets-controllers>@metamask/base-controller": true, + "@metamask/assets-controllers>@metamask/controller-utils": true, "@metamask/assets-controllers>abort-controller": true, "@metamask/assets-controllers>multiformats": true, "@metamask/contract-metadata": true, - "@metamask/controller-utils": true, "@metamask/metamask-eth-abis": true, "@metamask/utils": true, "browserify>events": true, @@ -875,6 +892,23 @@ "immer": true } }, + "@metamask/assets-controllers>@metamask/controller-utils": { + "globals": { + "URL": true, + "console.error": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/utils": true, + "browserify>buffer": true, + "eslint>fast-deep-equal": true, + "eth-ens-namehash": true, + "ethereumjs-util": true, + "ethjs>ethjs-unit": true + } + }, "@metamask/assets-controllers>abort-controller": { "globals": { "AbortController": true @@ -1518,8 +1552,8 @@ "setInterval": true }, "packages": { - "@metamask/controller-utils": true, "@metamask/gas-fee-controller>@metamask/base-controller": true, + "@metamask/gas-fee-controller>@metamask/controller-utils": true, "eth-query": true, "ethereumjs-util": true, "ethjs>ethjs-unit": true, @@ -1531,6 +1565,23 @@ "immer": true } }, + "@metamask/gas-fee-controller>@metamask/controller-utils": { + "globals": { + "URL": true, + "console.error": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/utils": true, + "browserify>buffer": true, + "eslint>fast-deep-equal": true, + "eth-ens-namehash": true, + "ethereumjs-util": true, + "ethjs>ethjs-unit": true + } + }, "@metamask/jazzicon": { "globals": { "document.createElement": true, @@ -1629,8 +1680,8 @@ }, "@metamask/message-manager": { "packages": { - "@metamask/controller-utils": true, "@metamask/message-manager>@metamask/base-controller": true, + "@metamask/message-manager>@metamask/controller-utils": true, "@metamask/message-manager>jsonschema": true, "browserify>buffer": true, "browserify>events": true, @@ -1644,6 +1695,23 @@ "immer": true } }, + "@metamask/message-manager>@metamask/controller-utils": { + "globals": { + "URL": true, + "console.error": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/utils": true, + "browserify>buffer": true, + "eslint>fast-deep-equal": true, + "eth-ens-namehash": true, + "ethereumjs-util": true, + "ethjs>ethjs-unit": true + } + }, "@metamask/message-manager>jsonschema": { "packages": { "browserify>url": true @@ -1674,8 +1742,8 @@ "console.error": true }, "packages": { - "@metamask/controller-utils": true, "@metamask/permission-controller>@metamask/base-controller": true, + "@metamask/permission-controller>@metamask/controller-utils": true, "@metamask/permission-controller>nanoid": true, "deep-freeze-strict": true, "eth-rpc-errors": true, @@ -1688,6 +1756,23 @@ "immer": true } }, + "@metamask/permission-controller>@metamask/controller-utils": { + "globals": { + "URL": true, + "console.error": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/utils": true, + "browserify>buffer": true, + "eslint>fast-deep-equal": true, + "eth-ens-namehash": true, + "ethereumjs-util": true, + "ethjs>ethjs-unit": true + } + }, "@metamask/permission-controller>nanoid": { "globals": { "crypto.getRandomValues": true @@ -1698,8 +1783,8 @@ "fetch": true }, "packages": { - "@metamask/controller-utils": true, "@metamask/phishing-controller>@metamask/base-controller": true, + "@metamask/phishing-controller>@metamask/controller-utils": true, "@metamask/phishing-warning>eth-phishing-detect": true, "punycode": true } @@ -1709,6 +1794,23 @@ "immer": true } }, + "@metamask/phishing-controller>@metamask/controller-utils": { + "globals": { + "URL": true, + "console.error": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/utils": true, + "browserify>buffer": true, + "eslint>fast-deep-equal": true, + "eth-ens-namehash": true, + "ethereumjs-util": true, + "ethjs>ethjs-unit": true + } + }, "@metamask/phishing-warning>eth-phishing-detect": { "packages": { "eslint>optionator>fast-levenshtein": true @@ -1760,9 +1862,9 @@ "console.info": true }, "packages": { - "@metamask/controller-utils": true, "@metamask/message-manager": true, "@metamask/signature-controller>@metamask/base-controller": true, + "@metamask/signature-controller>@metamask/controller-utils": true, "browserify>buffer": true, "browserify>events": true, "eth-rpc-errors": true, @@ -1774,6 +1876,23 @@ "immer": true } }, + "@metamask/signature-controller>@metamask/controller-utils": { + "globals": { + "URL": true, + "console.error": true, + "fetch": true, + "setTimeout": true + }, + "packages": { + "@metamask/controller-utils>@spruceid/siwe-parser": true, + "@metamask/utils": true, + "browserify>buffer": true, + "eslint>fast-deep-equal": true, + "eth-ens-namehash": true, + "ethereumjs-util": true, + "ethjs>ethjs-unit": true + } + }, "@metamask/smart-transactions-controller": { "globals": { "URLSearchParams": true, diff --git a/package.json b/package.json index 5e5e3849d..74be6282f 100644 --- a/package.json +++ b/package.json @@ -230,7 +230,7 @@ "@metamask/base-controller": "^3.0.0", "@metamask/browser-passworder": "^4.1.0", "@metamask/contract-metadata": "^2.3.1", - "@metamask/controller-utils": "^3.3.0", + "@metamask/controller-utils": "^4.0.0", "@metamask/design-tokens": "^1.9.0", "@metamask/desktop": "^0.3.0", "@metamask/eth-json-rpc-infura": "^8.0.0", diff --git a/ui/pages/swaps/swaps.util.ts b/ui/pages/swaps/swaps.util.ts index 08aae34a9..79b16a3f4 100644 --- a/ui/pages/swaps/swaps.util.ts +++ b/ui/pages/swaps/swaps.util.ts @@ -1,5 +1,5 @@ import { BigNumber } from 'bignumber.js'; -import { Json } from '@metamask/controller-utils'; +import { Json } from '@metamask/utils'; import { IndividualTxFees } from '@metamask/smart-transactions-controller/dist/types'; import { ALLOWED_CONTRACT_ADDRESSES, diff --git a/yarn.lock b/yarn.lock index 326e688e0..15c019c42 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4019,7 +4019,7 @@ __metadata: languageName: node linkType: hard -"@metamask/controller-utils@npm:^3.0.0, @metamask/controller-utils@npm:^3.1.0, @metamask/controller-utils@npm:^3.3.0, @metamask/controller-utils@npm:^3.4.0": +"@metamask/controller-utils@npm:^3.0.0, @metamask/controller-utils@npm:^3.1.0, @metamask/controller-utils@npm:^3.4.0": version: 3.4.0 resolution: "@metamask/controller-utils@npm:3.4.0" dependencies: @@ -4034,6 +4034,21 @@ __metadata: languageName: node linkType: hard +"@metamask/controller-utils@npm:^4.0.0": + version: 4.0.0 + resolution: "@metamask/controller-utils@npm:4.0.0" + dependencies: + "@metamask/utils": ^5.0.2 + "@spruceid/siwe-parser": 1.1.3 + eth-ens-namehash: ^2.0.8 + eth-rpc-errors: ^4.0.2 + ethereumjs-util: ^7.0.10 + ethjs-unit: ^0.1.6 + fast-deep-equal: ^3.1.3 + checksum: 3efdaf9b0c9f6d3bb633eeb926e78bedd637b0e042bb1e3974b9829e38456709a2f26d02405499934239351be8bff1854e267df8d0a522738d630bac0aadb732 + languageName: node + linkType: hard + "@metamask/design-tokens@npm:^1.6.0, @metamask/design-tokens@npm:^1.9.0": version: 1.11.1 resolution: "@metamask/design-tokens@npm:1.11.1" @@ -23960,7 +23975,7 @@ __metadata: "@metamask/base-controller": ^3.0.0 "@metamask/browser-passworder": ^4.1.0 "@metamask/contract-metadata": ^2.3.1 - "@metamask/controller-utils": ^3.3.0 + "@metamask/controller-utils": ^4.0.0 "@metamask/design-tokens": ^1.9.0 "@metamask/desktop": ^0.3.0 "@metamask/eslint-config": ^9.0.0 From 58c0ac8b53da8ef397eb881d5ed4b3bbef2bf43e Mon Sep 17 00:00:00 2001 From: Mark Stacey Date: Wed, 31 May 2023 19:32:08 -0230 Subject: [PATCH 030/160] Update `@metamask/address-book-controller` to v3 (#19345) The `@metamask/address-book-controller` package has been updated to v3. This version was part of the [core monorepo v53](https://github.com/MetaMask/core/pull/1385) release. The remaining packages released as part of v53 will be updated in later PRs. This release included a number of breaking changes relating to the `chainId` format change from `string` to `Hex`. However these changes don't affect the extension because it was already using `Hex` chain IDs for all address book interactions. Relates to #19271 --- lavamoat/browserify/beta/policy.json | 26 ++----------------------- lavamoat/browserify/desktop/policy.json | 26 ++----------------------- lavamoat/browserify/flask/policy.json | 26 ++----------------------- lavamoat/browserify/main/policy.json | 26 ++----------------------- package.json | 2 +- yarn.lock | 15 +++++++------- 6 files changed, 17 insertions(+), 104 deletions(-) diff --git a/lavamoat/browserify/beta/policy.json b/lavamoat/browserify/beta/policy.json index 251a968d4..95235999f 100644 --- a/lavamoat/browserify/beta/policy.json +++ b/lavamoat/browserify/beta/policy.json @@ -789,30 +789,8 @@ }, "@metamask/address-book-controller": { "packages": { - "@metamask/address-book-controller>@metamask/base-controller": true, - "@metamask/address-book-controller>@metamask/controller-utils": true - } - }, - "@metamask/address-book-controller>@metamask/base-controller": { - "packages": { - "immer": true - } - }, - "@metamask/address-book-controller>@metamask/controller-utils": { - "globals": { - "URL": true, - "console.error": true, - "fetch": true, - "setTimeout": true - }, - "packages": { - "@metamask/controller-utils>@spruceid/siwe-parser": true, - "@metamask/utils": true, - "browserify>buffer": true, - "eslint>fast-deep-equal": true, - "eth-ens-namehash": true, - "ethereumjs-util": true, - "ethjs>ethjs-unit": true + "@metamask/base-controller": true, + "@metamask/controller-utils": true } }, "@metamask/announcement-controller": { diff --git a/lavamoat/browserify/desktop/policy.json b/lavamoat/browserify/desktop/policy.json index b3752c9d9..b2e15e812 100644 --- a/lavamoat/browserify/desktop/policy.json +++ b/lavamoat/browserify/desktop/policy.json @@ -789,30 +789,8 @@ }, "@metamask/address-book-controller": { "packages": { - "@metamask/address-book-controller>@metamask/base-controller": true, - "@metamask/address-book-controller>@metamask/controller-utils": true - } - }, - "@metamask/address-book-controller>@metamask/base-controller": { - "packages": { - "immer": true - } - }, - "@metamask/address-book-controller>@metamask/controller-utils": { - "globals": { - "URL": true, - "console.error": true, - "fetch": true, - "setTimeout": true - }, - "packages": { - "@metamask/controller-utils>@spruceid/siwe-parser": true, - "@metamask/utils": true, - "browserify>buffer": true, - "eslint>fast-deep-equal": true, - "eth-ens-namehash": true, - "ethereumjs-util": true, - "ethjs>ethjs-unit": true + "@metamask/base-controller": true, + "@metamask/controller-utils": true } }, "@metamask/announcement-controller": { diff --git a/lavamoat/browserify/flask/policy.json b/lavamoat/browserify/flask/policy.json index b3752c9d9..b2e15e812 100644 --- a/lavamoat/browserify/flask/policy.json +++ b/lavamoat/browserify/flask/policy.json @@ -789,30 +789,8 @@ }, "@metamask/address-book-controller": { "packages": { - "@metamask/address-book-controller>@metamask/base-controller": true, - "@metamask/address-book-controller>@metamask/controller-utils": true - } - }, - "@metamask/address-book-controller>@metamask/base-controller": { - "packages": { - "immer": true - } - }, - "@metamask/address-book-controller>@metamask/controller-utils": { - "globals": { - "URL": true, - "console.error": true, - "fetch": true, - "setTimeout": true - }, - "packages": { - "@metamask/controller-utils>@spruceid/siwe-parser": true, - "@metamask/utils": true, - "browserify>buffer": true, - "eslint>fast-deep-equal": true, - "eth-ens-namehash": true, - "ethereumjs-util": true, - "ethjs>ethjs-unit": true + "@metamask/base-controller": true, + "@metamask/controller-utils": true } }, "@metamask/announcement-controller": { diff --git a/lavamoat/browserify/main/policy.json b/lavamoat/browserify/main/policy.json index 251a968d4..95235999f 100644 --- a/lavamoat/browserify/main/policy.json +++ b/lavamoat/browserify/main/policy.json @@ -789,30 +789,8 @@ }, "@metamask/address-book-controller": { "packages": { - "@metamask/address-book-controller>@metamask/base-controller": true, - "@metamask/address-book-controller>@metamask/controller-utils": true - } - }, - "@metamask/address-book-controller>@metamask/base-controller": { - "packages": { - "immer": true - } - }, - "@metamask/address-book-controller>@metamask/controller-utils": { - "globals": { - "URL": true, - "console.error": true, - "fetch": true, - "setTimeout": true - }, - "packages": { - "@metamask/controller-utils>@spruceid/siwe-parser": true, - "@metamask/utils": true, - "browserify>buffer": true, - "eslint>fast-deep-equal": true, - "eth-ens-namehash": true, - "ethereumjs-util": true, - "ethjs>ethjs-unit": true + "@metamask/base-controller": true, + "@metamask/controller-utils": true } }, "@metamask/announcement-controller": { diff --git a/package.json b/package.json index 74be6282f..24c0b6c45 100644 --- a/package.json +++ b/package.json @@ -223,7 +223,7 @@ "@metamask-institutional/portfolio-dashboard": "^1.1.3", "@metamask-institutional/sdk": "^0.1.17", "@metamask-institutional/transaction-update": "^0.1.21", - "@metamask/address-book-controller": "^2.0.0", + "@metamask/address-book-controller": "^3.0.0", "@metamask/announcement-controller": "^4.0.0", "@metamask/approval-controller": "^2.1.0", "@metamask/assets-controllers": "^7.0.0", diff --git a/yarn.lock b/yarn.lock index 15c019c42..02a67a992 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3867,13 +3867,14 @@ __metadata: languageName: node linkType: hard -"@metamask/address-book-controller@npm:^2.0.0": - version: 2.0.0 - resolution: "@metamask/address-book-controller@npm:2.0.0" +"@metamask/address-book-controller@npm:^3.0.0": + version: 3.0.0 + resolution: "@metamask/address-book-controller@npm:3.0.0" dependencies: - "@metamask/base-controller": ^2.0.0 - "@metamask/controller-utils": ^3.0.0 - checksum: 7f0c091a2d95a398900b6126ca2331772a65531aa8750e2270f72a806c2ea2e0a26bd2836ab81f13efb550f240309b254395e8fb16b087b6897beb162e175c33 + "@metamask/base-controller": ^3.0.0 + "@metamask/controller-utils": ^4.0.0 + "@metamask/utils": ^5.0.2 + checksum: 3ed2f225d7e4f2d88d8139afc7e296a5cde761ec1c9e996ea6c24e4f34d2bea4b3467c9fd3a126b48f534611ca1e7135f77a76d7c5334ab2a8406271b56b1cc8 languageName: node linkType: hard @@ -23967,7 +23968,7 @@ __metadata: "@metamask-institutional/portfolio-dashboard": ^1.1.3 "@metamask-institutional/sdk": ^0.1.17 "@metamask-institutional/transaction-update": ^0.1.21 - "@metamask/address-book-controller": ^2.0.0 + "@metamask/address-book-controller": ^3.0.0 "@metamask/announcement-controller": ^4.0.0 "@metamask/approval-controller": ^2.1.0 "@metamask/assets-controllers": ^7.0.0 From 63b810f0dbf421258612e1cf5114258c13ed8710 Mon Sep 17 00:00:00 2001 From: Soralit Date: Thu, 1 Jun 2023 06:06:20 +0800 Subject: [PATCH 031/160] fix: keystone sign request break (#19349) --- lavamoat/browserify/beta/policy.json | 55 +------------ lavamoat/browserify/desktop/policy.json | 55 +------------ lavamoat/browserify/flask/policy.json | 55 +------------ lavamoat/browserify/main/policy.json | 55 +------------ package.json | 4 +- yarn.lock | 103 +++++------------------- 6 files changed, 32 insertions(+), 295 deletions(-) diff --git a/lavamoat/browserify/beta/policy.json b/lavamoat/browserify/beta/policy.json index 95235999f..c5b6d5d1d 100644 --- a/lavamoat/browserify/beta/policy.json +++ b/lavamoat/browserify/beta/policy.json @@ -528,8 +528,8 @@ "@keystonehq/metamask-airgapped-keyring": { "packages": { "@ethereumjs/tx": true, + "@keystonehq/bc-ur-registry-eth": true, "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring": true, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/bc-ur-registry-eth": true, "@keystonehq/metamask-airgapped-keyring>@metamask/obs-store": true, "browserify>buffer": true, "browserify>events": true, @@ -541,60 +541,18 @@ "packages": { "@ethereumjs/tx": true, "@ethereumjs/tx>@ethereumjs/util": true, + "@keystonehq/bc-ur-registry-eth": true, "@keystonehq/bc-ur-registry-eth>hdkey": true, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@keystonehq/bc-ur-registry-eth": true, "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>rlp": true, "browserify>buffer": true, "uuid": true } }, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@keystonehq/bc-ur-registry-eth": { - "packages": { - "@ethereumjs/tx>@ethereumjs/util": true, - "@keystonehq/bc-ur-registry-eth>hdkey": true, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@keystonehq/bc-ur-registry-eth>@keystonehq/bc-ur-registry": true, - "browserify>buffer": true, - "uuid": true - } - }, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@keystonehq/bc-ur-registry-eth>@keystonehq/bc-ur-registry": { - "globals": { - "define": true - }, - "packages": { - "@ngraveio/bc-ur": true, - "@ngraveio/bc-ur>crc>buffer": true, - "browserify>buffer": true, - "ethereumjs-wallet>bs58check": true, - "wait-on>rxjs>tslib": true - } - }, "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>rlp": { "globals": { "TextEncoder": true } }, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/bc-ur-registry-eth": { - "packages": { - "@ethereumjs/tx>@ethereumjs/util": true, - "@keystonehq/bc-ur-registry-eth>hdkey": true, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/bc-ur-registry-eth>@keystonehq/bc-ur-registry": true, - "browserify>buffer": true, - "uuid": true - } - }, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/bc-ur-registry-eth>@keystonehq/bc-ur-registry": { - "globals": { - "define": true - }, - "packages": { - "@ngraveio/bc-ur": true, - "@ngraveio/bc-ur>crc>buffer": true, - "browserify>buffer": true, - "ethereumjs-wallet>bs58check": true, - "wait-on>rxjs>tslib": true - } - }, "@keystonehq/metamask-airgapped-keyring>@metamask/obs-store": { "packages": { "@keystonehq/metamask-airgapped-keyring>@metamask/obs-store>through2": true, @@ -2011,15 +1969,6 @@ "browserify>buffer": true } }, - "@ngraveio/bc-ur>crc>buffer": { - "globals": { - "console": true - }, - "packages": { - "base64-js": true, - "browserify>buffer>ieee754": true - } - }, "@ngraveio/bc-ur>jsbi": { "globals": { "define": true diff --git a/lavamoat/browserify/desktop/policy.json b/lavamoat/browserify/desktop/policy.json index b2e15e812..99e43cbf0 100644 --- a/lavamoat/browserify/desktop/policy.json +++ b/lavamoat/browserify/desktop/policy.json @@ -528,8 +528,8 @@ "@keystonehq/metamask-airgapped-keyring": { "packages": { "@ethereumjs/tx": true, + "@keystonehq/bc-ur-registry-eth": true, "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring": true, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/bc-ur-registry-eth": true, "@keystonehq/metamask-airgapped-keyring>@metamask/obs-store": true, "browserify>buffer": true, "browserify>events": true, @@ -541,60 +541,18 @@ "packages": { "@ethereumjs/tx": true, "@ethereumjs/tx>@ethereumjs/util": true, + "@keystonehq/bc-ur-registry-eth": true, "@keystonehq/bc-ur-registry-eth>hdkey": true, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@keystonehq/bc-ur-registry-eth": true, "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>rlp": true, "browserify>buffer": true, "uuid": true } }, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@keystonehq/bc-ur-registry-eth": { - "packages": { - "@ethereumjs/tx>@ethereumjs/util": true, - "@keystonehq/bc-ur-registry-eth>hdkey": true, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@keystonehq/bc-ur-registry-eth>@keystonehq/bc-ur-registry": true, - "browserify>buffer": true, - "uuid": true - } - }, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@keystonehq/bc-ur-registry-eth>@keystonehq/bc-ur-registry": { - "globals": { - "define": true - }, - "packages": { - "@ngraveio/bc-ur": true, - "@ngraveio/bc-ur>crc>buffer": true, - "browserify>buffer": true, - "ethereumjs-wallet>bs58check": true, - "wait-on>rxjs>tslib": true - } - }, "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>rlp": { "globals": { "TextEncoder": true } }, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/bc-ur-registry-eth": { - "packages": { - "@ethereumjs/tx>@ethereumjs/util": true, - "@keystonehq/bc-ur-registry-eth>hdkey": true, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/bc-ur-registry-eth>@keystonehq/bc-ur-registry": true, - "browserify>buffer": true, - "uuid": true - } - }, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/bc-ur-registry-eth>@keystonehq/bc-ur-registry": { - "globals": { - "define": true - }, - "packages": { - "@ngraveio/bc-ur": true, - "@ngraveio/bc-ur>crc>buffer": true, - "browserify>buffer": true, - "ethereumjs-wallet>bs58check": true, - "wait-on>rxjs>tslib": true - } - }, "@keystonehq/metamask-airgapped-keyring>@metamask/obs-store": { "packages": { "@keystonehq/metamask-airgapped-keyring>@metamask/obs-store>through2": true, @@ -2489,15 +2447,6 @@ "browserify>buffer": true } }, - "@ngraveio/bc-ur>crc>buffer": { - "globals": { - "console": true - }, - "packages": { - "base64-js": true, - "browserify>buffer>ieee754": true - } - }, "@ngraveio/bc-ur>jsbi": { "globals": { "define": true diff --git a/lavamoat/browserify/flask/policy.json b/lavamoat/browserify/flask/policy.json index b2e15e812..99e43cbf0 100644 --- a/lavamoat/browserify/flask/policy.json +++ b/lavamoat/browserify/flask/policy.json @@ -528,8 +528,8 @@ "@keystonehq/metamask-airgapped-keyring": { "packages": { "@ethereumjs/tx": true, + "@keystonehq/bc-ur-registry-eth": true, "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring": true, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/bc-ur-registry-eth": true, "@keystonehq/metamask-airgapped-keyring>@metamask/obs-store": true, "browserify>buffer": true, "browserify>events": true, @@ -541,60 +541,18 @@ "packages": { "@ethereumjs/tx": true, "@ethereumjs/tx>@ethereumjs/util": true, + "@keystonehq/bc-ur-registry-eth": true, "@keystonehq/bc-ur-registry-eth>hdkey": true, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@keystonehq/bc-ur-registry-eth": true, "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>rlp": true, "browserify>buffer": true, "uuid": true } }, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@keystonehq/bc-ur-registry-eth": { - "packages": { - "@ethereumjs/tx>@ethereumjs/util": true, - "@keystonehq/bc-ur-registry-eth>hdkey": true, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@keystonehq/bc-ur-registry-eth>@keystonehq/bc-ur-registry": true, - "browserify>buffer": true, - "uuid": true - } - }, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@keystonehq/bc-ur-registry-eth>@keystonehq/bc-ur-registry": { - "globals": { - "define": true - }, - "packages": { - "@ngraveio/bc-ur": true, - "@ngraveio/bc-ur>crc>buffer": true, - "browserify>buffer": true, - "ethereumjs-wallet>bs58check": true, - "wait-on>rxjs>tslib": true - } - }, "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>rlp": { "globals": { "TextEncoder": true } }, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/bc-ur-registry-eth": { - "packages": { - "@ethereumjs/tx>@ethereumjs/util": true, - "@keystonehq/bc-ur-registry-eth>hdkey": true, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/bc-ur-registry-eth>@keystonehq/bc-ur-registry": true, - "browserify>buffer": true, - "uuid": true - } - }, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/bc-ur-registry-eth>@keystonehq/bc-ur-registry": { - "globals": { - "define": true - }, - "packages": { - "@ngraveio/bc-ur": true, - "@ngraveio/bc-ur>crc>buffer": true, - "browserify>buffer": true, - "ethereumjs-wallet>bs58check": true, - "wait-on>rxjs>tslib": true - } - }, "@keystonehq/metamask-airgapped-keyring>@metamask/obs-store": { "packages": { "@keystonehq/metamask-airgapped-keyring>@metamask/obs-store>through2": true, @@ -2489,15 +2447,6 @@ "browserify>buffer": true } }, - "@ngraveio/bc-ur>crc>buffer": { - "globals": { - "console": true - }, - "packages": { - "base64-js": true, - "browserify>buffer>ieee754": true - } - }, "@ngraveio/bc-ur>jsbi": { "globals": { "define": true diff --git a/lavamoat/browserify/main/policy.json b/lavamoat/browserify/main/policy.json index 95235999f..c5b6d5d1d 100644 --- a/lavamoat/browserify/main/policy.json +++ b/lavamoat/browserify/main/policy.json @@ -528,8 +528,8 @@ "@keystonehq/metamask-airgapped-keyring": { "packages": { "@ethereumjs/tx": true, + "@keystonehq/bc-ur-registry-eth": true, "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring": true, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/bc-ur-registry-eth": true, "@keystonehq/metamask-airgapped-keyring>@metamask/obs-store": true, "browserify>buffer": true, "browserify>events": true, @@ -541,60 +541,18 @@ "packages": { "@ethereumjs/tx": true, "@ethereumjs/tx>@ethereumjs/util": true, + "@keystonehq/bc-ur-registry-eth": true, "@keystonehq/bc-ur-registry-eth>hdkey": true, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@keystonehq/bc-ur-registry-eth": true, "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>rlp": true, "browserify>buffer": true, "uuid": true } }, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@keystonehq/bc-ur-registry-eth": { - "packages": { - "@ethereumjs/tx>@ethereumjs/util": true, - "@keystonehq/bc-ur-registry-eth>hdkey": true, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@keystonehq/bc-ur-registry-eth>@keystonehq/bc-ur-registry": true, - "browserify>buffer": true, - "uuid": true - } - }, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@keystonehq/bc-ur-registry-eth>@keystonehq/bc-ur-registry": { - "globals": { - "define": true - }, - "packages": { - "@ngraveio/bc-ur": true, - "@ngraveio/bc-ur>crc>buffer": true, - "browserify>buffer": true, - "ethereumjs-wallet>bs58check": true, - "wait-on>rxjs>tslib": true - } - }, "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>rlp": { "globals": { "TextEncoder": true } }, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/bc-ur-registry-eth": { - "packages": { - "@ethereumjs/tx>@ethereumjs/util": true, - "@keystonehq/bc-ur-registry-eth>hdkey": true, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/bc-ur-registry-eth>@keystonehq/bc-ur-registry": true, - "browserify>buffer": true, - "uuid": true - } - }, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/bc-ur-registry-eth>@keystonehq/bc-ur-registry": { - "globals": { - "define": true - }, - "packages": { - "@ngraveio/bc-ur": true, - "@ngraveio/bc-ur>crc>buffer": true, - "browserify>buffer": true, - "ethereumjs-wallet>bs58check": true, - "wait-on>rxjs>tslib": true - } - }, "@keystonehq/metamask-airgapped-keyring>@metamask/obs-store": { "packages": { "@keystonehq/metamask-airgapped-keyring>@metamask/obs-store>through2": true, @@ -2011,15 +1969,6 @@ "browserify>buffer": true } }, - "@ngraveio/bc-ur>crc>buffer": { - "globals": { - "console": true - }, - "packages": { - "base64-js": true, - "browserify>buffer>ieee754": true - } - }, "@ngraveio/bc-ur>jsbi": { "globals": { "define": true diff --git a/package.json b/package.json index 24c0b6c45..ed0858470 100644 --- a/package.json +++ b/package.json @@ -212,8 +212,8 @@ "@ethersproject/providers": "^5.7.2", "@formatjs/intl-relativetimeformat": "^5.2.6", "@fortawesome/fontawesome-free": "^5.13.0", - "@keystonehq/bc-ur-registry-eth": "^0.12.1", - "@keystonehq/metamask-airgapped-keyring": "^0.9.2", + "@keystonehq/bc-ur-registry-eth": "^0.19.1", + "@keystonehq/metamask-airgapped-keyring": "^0.13.1", "@lavamoat/snow": "^1.5.0", "@material-ui/core": "^4.11.0", "@metamask-institutional/custody-controller": "0.2.6", diff --git a/yarn.lock b/yarn.lock index 02a67a992..a7085be10 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3444,88 +3444,54 @@ __metadata: languageName: node linkType: hard -"@keystonehq/base-eth-keyring@npm:^0.10.2": - version: 0.10.2 - resolution: "@keystonehq/base-eth-keyring@npm:0.10.2" +"@keystonehq/base-eth-keyring@npm:^0.14.1": + version: 0.14.1 + resolution: "@keystonehq/base-eth-keyring@npm:0.14.1" dependencies: "@ethereumjs/tx": ^4.0.2 "@ethereumjs/util": ^8.0.0 - "@keystonehq/bc-ur-registry-eth": ^0.15.2 + "@keystonehq/bc-ur-registry-eth": ^0.19.1 hdkey: ^2.0.1 rlp: ^3.0.0 uuid: ^8.3.2 - checksum: 689e204a70828508ed9ca9da8d943cf948c7f8e84c17053944f13cfbd69d2b96bb9694542fe48753cad7a985a2e9bd80e1fc0c7b5f78158e6dc7e8487ecec2d1 + checksum: 2d61de9584631c68991686173a5356070a619a6f2873a822db35af56b8b7ee7b20b544374e0cd1972b139703362b56f5c566485eaea5a48644e34809af45b0a5 languageName: node linkType: hard -"@keystonehq/bc-ur-registry-eth@npm:^0.12.1": - version: 0.12.1 - resolution: "@keystonehq/bc-ur-registry-eth@npm:0.12.1" +"@keystonehq/bc-ur-registry-eth@npm:^0.19.1": + version: 0.19.1 + resolution: "@keystonehq/bc-ur-registry-eth@npm:0.19.1" dependencies: "@ethereumjs/util": ^8.0.0 - "@keystonehq/bc-ur-registry": ^0.5.0-alpha.5 + "@keystonehq/bc-ur-registry": ^0.6.0 hdkey: ^2.0.1 uuid: ^8.3.2 - checksum: 74c2b13cd2277478fb8a4932caf71f12a60c58b2d02322f8ee905eee11d6391deaeca712fe861955fb2b68ea0eaa0ff7155a31c66cd39d59433f2baffaf6c2ac + checksum: 51ca3ac78e68bec6b8ba1f1b938734fb7442f8b7b67f1befb8465d3b52ba1254fd5a0cf9f85825ab6a144b1c677cd6efb40a35fe4933f0e2df1fd5c4dda3c2fa languageName: node linkType: hard -"@keystonehq/bc-ur-registry-eth@npm:^0.15.2": - version: 0.15.2 - resolution: "@keystonehq/bc-ur-registry-eth@npm:0.15.2" - dependencies: - "@ethereumjs/util": ^8.0.0 - "@keystonehq/bc-ur-registry": 0.5.4 - hdkey: ^2.0.1 - uuid: ^8.3.2 - checksum: 8541040c3eea59aa39d6a9b9f17acfe505956b01ffa977e54c51c14f45b6b8af4ca3dd594866934dd06939fbd752a3d5b1ba46e017df86362c2c67de52005860 - languageName: node - linkType: hard - -"@keystonehq/bc-ur-registry@npm:0.5.0-alpha.5": - version: 0.5.0-alpha.5 - resolution: "@keystonehq/bc-ur-registry@npm:0.5.0-alpha.5" - dependencies: - "@ngraveio/bc-ur": ^1.1.5 - base58check: ^2.0.0 - tslib: ^2.3.0 - checksum: 9d0a028db36494f5d28281ed67fc17c191c4b9e72ee5088f79ed5a874cc0d958018aeafa4dc9997e10425afa5b59f0e75e8760297056d9b756837ac7b69460aa - languageName: node - linkType: hard - -"@keystonehq/bc-ur-registry@npm:0.5.4": - version: 0.5.4 - resolution: "@keystonehq/bc-ur-registry@npm:0.5.4" +"@keystonehq/bc-ur-registry@npm:^0.6.0": + version: 0.6.0 + resolution: "@keystonehq/bc-ur-registry@npm:0.6.0" dependencies: "@ngraveio/bc-ur": ^1.1.5 bs58check: ^2.1.2 tslib: ^2.3.0 - checksum: d8e4b8c4cd2a7b21fad2e24895f7b32937b64f93d0f1540833be9dcb36062a44c8fc21204502f046c0e771370ba7ff6ce2356438028229813b4f15b2ecb714c6 + checksum: a86a8775a065d422349b6624856693ca96bf00f82f1f63d23da33fe9d357e14dabf023902fbc9dd9a918ef420ea4d083b1196539e482a26cb85b691fe8b101af languageName: node linkType: hard -"@keystonehq/bc-ur-registry@patch:@keystonehq/bc-ur-registry@npm%3A0.5.0-alpha.5#./.yarn/patches/@keystonehq-bc-ur-registry-npm-0.5.0-alpha.5-b95c7992a6.patch::locator=metamask-crx%40workspace%3A.": - version: 0.5.0-alpha.5 - resolution: "@keystonehq/bc-ur-registry@patch:@keystonehq/bc-ur-registry@npm%3A0.5.0-alpha.5#./.yarn/patches/@keystonehq-bc-ur-registry-npm-0.5.0-alpha.5-b95c7992a6.patch::version=0.5.0-alpha.5&hash=2b9ed1&locator=metamask-crx%40workspace%3A." - dependencies: - "@ngraveio/bc-ur": ^1.1.5 - base58check: ^2.0.0 - tslib: ^2.3.0 - checksum: b215552f10c34a92c8651fae8b0d2794ea92f0a1261a40c4370a63fdb88945ee650e333f516ad368c1ebe84c41246337bf7579064471769f19869f8b4e7a88b2 - languageName: node - linkType: hard - -"@keystonehq/metamask-airgapped-keyring@npm:^0.9.2": - version: 0.9.2 - resolution: "@keystonehq/metamask-airgapped-keyring@npm:0.9.2" +"@keystonehq/metamask-airgapped-keyring@npm:^0.13.1": + version: 0.13.1 + resolution: "@keystonehq/metamask-airgapped-keyring@npm:0.13.1" dependencies: "@ethereumjs/tx": ^4.0.2 - "@keystonehq/base-eth-keyring": ^0.10.2 - "@keystonehq/bc-ur-registry-eth": ^0.15.2 + "@keystonehq/base-eth-keyring": ^0.14.1 + "@keystonehq/bc-ur-registry-eth": ^0.19.1 "@metamask/obs-store": ^7.0.0 rlp: ^2.2.6 uuid: ^8.3.2 - checksum: 6ac0868a26d152e51d4a9e7c02c197ec6a6bc0cb56f99ec211c10b28b9acb33cce903fa87297bbbe547c61417b81c59324ee95da96b2a8cd0a2daadc772f9d6e + checksum: 9d9f4743c8017d90da7aeaf58a3f74113aac9852f40f6354ecc864126910e5dd15688d7b25539f0f6672308e551abe7319f1ce794a7a699b9b567cf40d2037ab languageName: node linkType: hard @@ -10365,13 +10331,6 @@ __metadata: languageName: node linkType: hard -"base-x@npm:^1.1.0": - version: 1.1.0 - resolution: "base-x@npm:1.1.0" - checksum: 54e24c32919442627fe48aaa76338f8ff02187b42eae6e75e829eef3e44e37f43b128a271733322a7c798626ac7f4fb06184db2ef0ce1da7f37c448ef6f76e26 - languageName: node - linkType: hard - "base-x@npm:^4.0.0": version: 4.0.0 resolution: "base-x@npm:4.0.0" @@ -10388,15 +10347,6 @@ __metadata: languageName: node linkType: hard -"base58check@npm:^2.0.0": - version: 2.0.0 - resolution: "base58check@npm:2.0.0" - dependencies: - bs58: ^3.0.0 - checksum: 19f77522a38d66d5c9cc16411880e258899a6807b31477e3ac33ebaa64555126e9b29e7d5d2be88748aae8b1d05f91e5eb3aef4847a033af25b8a0c0f995b037 - languageName: node - linkType: hard - "base64-arraybuffer@npm:^0.1.5": version: 0.1.5 resolution: "base64-arraybuffer@npm:0.1.5" @@ -11143,15 +11093,6 @@ __metadata: languageName: node linkType: hard -"bs58@npm:^3.0.0": - version: 3.1.0 - resolution: "bs58@npm:3.1.0" - dependencies: - base-x: ^1.1.0 - checksum: 6d757a49958c43bc630f3b327511ce3ee065307c24240aa86189f72df0a4a8245c7ce7e7abad209b637f155006952c7b8f04bb4aa6ee4212a891882424bca82e - languageName: node - linkType: hard - "bs58@npm:^4.0.0, bs58@npm:^4.0.1": version: 4.0.1 resolution: "bs58@npm:4.0.1" @@ -23955,8 +23896,8 @@ __metadata: "@formatjs/intl-relativetimeformat": ^5.2.6 "@fortawesome/fontawesome-free": ^5.13.0 "@json-rpc-specification/meta-schema": ^1.0.6 - "@keystonehq/bc-ur-registry-eth": ^0.12.1 - "@keystonehq/metamask-airgapped-keyring": ^0.9.2 + "@keystonehq/bc-ur-registry-eth": ^0.19.1 + "@keystonehq/metamask-airgapped-keyring": ^0.13.1 "@lavamoat/allow-scripts": ^2.0.3 "@lavamoat/lavapack": ^5.0.0 "@lavamoat/snow": ^1.5.0 From 81dbb27c731a5b0aec6ec3a15e2f3cf0f3dee803 Mon Sep 17 00:00:00 2001 From: Mark Stacey Date: Wed, 31 May 2023 20:10:05 -0230 Subject: [PATCH 032/160] Update `@metamask/notification-controller` to v3 (#19364) The `@metamask/notification-controller` package has been updated to v3. This version was part of the [core monorepo v53](MetaMask/core#1385) release. The remaining packages released as part of v53 will be updated in later PRs. The only breaking change in this release was to update the minimum supported Node.js version to v16. Relates to #19271 --- lavamoat/browserify/desktop/policy.json | 28 +++---------------------- lavamoat/browserify/flask/policy.json | 28 +++---------------------- package.json | 2 +- yarn.lock | 14 ++++++------- 4 files changed, 14 insertions(+), 58 deletions(-) diff --git a/lavamoat/browserify/desktop/policy.json b/lavamoat/browserify/desktop/policy.json index 99e43cbf0..b3854aee4 100644 --- a/lavamoat/browserify/desktop/policy.json +++ b/lavamoat/browserify/desktop/policy.json @@ -1726,31 +1726,9 @@ }, "@metamask/notification-controller": { "packages": { - "@metamask/notification-controller>@metamask/base-controller": true, - "@metamask/notification-controller>@metamask/controller-utils": true, - "@metamask/notification-controller>nanoid": true - } - }, - "@metamask/notification-controller>@metamask/base-controller": { - "packages": { - "immer": true - } - }, - "@metamask/notification-controller>@metamask/controller-utils": { - "globals": { - "URL": true, - "console.error": true, - "fetch": true, - "setTimeout": true - }, - "packages": { - "@metamask/controller-utils>@spruceid/siwe-parser": true, - "@metamask/utils": true, - "browserify>buffer": true, - "eslint>fast-deep-equal": true, - "eth-ens-namehash": true, - "ethereumjs-util": true, - "ethjs>ethjs-unit": true + "@metamask/base-controller": true, + "@metamask/notification-controller>nanoid": true, + "@metamask/utils": true } }, "@metamask/notification-controller>nanoid": { diff --git a/lavamoat/browserify/flask/policy.json b/lavamoat/browserify/flask/policy.json index 99e43cbf0..b3854aee4 100644 --- a/lavamoat/browserify/flask/policy.json +++ b/lavamoat/browserify/flask/policy.json @@ -1726,31 +1726,9 @@ }, "@metamask/notification-controller": { "packages": { - "@metamask/notification-controller>@metamask/base-controller": true, - "@metamask/notification-controller>@metamask/controller-utils": true, - "@metamask/notification-controller>nanoid": true - } - }, - "@metamask/notification-controller>@metamask/base-controller": { - "packages": { - "immer": true - } - }, - "@metamask/notification-controller>@metamask/controller-utils": { - "globals": { - "URL": true, - "console.error": true, - "fetch": true, - "setTimeout": true - }, - "packages": { - "@metamask/controller-utils>@spruceid/siwe-parser": true, - "@metamask/utils": true, - "browserify>buffer": true, - "eslint>fast-deep-equal": true, - "eth-ens-namehash": true, - "ethereumjs-util": true, - "ethjs>ethjs-unit": true + "@metamask/base-controller": true, + "@metamask/notification-controller>nanoid": true, + "@metamask/utils": true } }, "@metamask/notification-controller>nanoid": { diff --git a/package.json b/package.json index ed0858470..63f4cf150 100644 --- a/package.json +++ b/package.json @@ -247,7 +247,7 @@ "@metamask/logo": "^3.1.1", "@metamask/message-manager": "^5.0.0", "@metamask/metamask-eth-abis": "^3.0.0", - "@metamask/notification-controller": "^2.0.0", + "@metamask/notification-controller": "^3.0.0", "@metamask/obs-store": "^8.1.0", "@metamask/permission-controller": "^3.2.0", "@metamask/phishing-controller": "^3.0.0", diff --git a/yarn.lock b/yarn.lock index a7085be10..00924d67a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4359,15 +4359,15 @@ __metadata: languageName: node linkType: hard -"@metamask/notification-controller@npm:^2.0.0": - version: 2.0.0 - resolution: "@metamask/notification-controller@npm:2.0.0" +"@metamask/notification-controller@npm:^3.0.0": + version: 3.0.0 + resolution: "@metamask/notification-controller@npm:3.0.0" dependencies: - "@metamask/base-controller": ^2.0.0 - "@metamask/controller-utils": ^3.0.0 + "@metamask/base-controller": ^3.0.0 + "@metamask/utils": ^5.0.2 immer: ^9.0.6 nanoid: ^3.1.31 - checksum: 22d299bc2816f1822d63b71820bb8c5b55b28696a91c6a2f38fcc743e79140de4f5d0a30daffcd0a141ca7efe07024c80340fb19a457375698fb5bf9fc181859 + checksum: 5661d6cf095ca322f3e6dc1a4d3c2c95f3fd6d5caf641ffe1ed424da9be07ad10220b6d53a58580f89b8ad9485b67fc2e7dc87d7188ad2dfe5ce80da546cbc7c languageName: node linkType: hard @@ -23940,7 +23940,7 @@ __metadata: "@metamask/logo": ^3.1.1 "@metamask/message-manager": ^5.0.0 "@metamask/metamask-eth-abis": ^3.0.0 - "@metamask/notification-controller": ^2.0.0 + "@metamask/notification-controller": ^3.0.0 "@metamask/obs-store": ^8.1.0 "@metamask/permission-controller": ^3.2.0 "@metamask/phishing-controller": ^3.0.0 From 20f028bf6f05c86a6943f54fdf3fe0f45c919d3c Mon Sep 17 00:00:00 2001 From: Mark Stacey Date: Wed, 31 May 2023 20:10:20 -0230 Subject: [PATCH 033/160] Update `@metamask/approval-controller` to v3 (#19365) The `@metamask/approval-controller` package has been updated to v3. This version was part of the [core monorepo v53](MetaMask/core#1385) release. The remaining packages released as part of v53 will be updated in later PRs. The only breaking change in this release was to update the minimum supported Node.js version to v16. Note that this will temporarily introduce peer dependency warnings because of the major version bump. These are safe to avoid for now because nothing is affected by the Node.js minimum version bump. A resolution has been added to force v3 to be used throughout the dependency tree so that this bump doesn't unnecessarily bloat our dependencies. In practice this is only being used in one place, the other references are just for types. The resolution can be removed once the last package using this controller has been updated, which will happen as part of #19271. The peer dependency warnings will be resolved once #19271 is completed as well. Relates to #19271 --- lavamoat/browserify/beta/policy.json | 7 +------ lavamoat/browserify/desktop/policy.json | 7 +------ lavamoat/browserify/flask/policy.json | 7 +------ lavamoat/browserify/main/policy.json | 7 +------ package.json | 3 ++- yarn.lock | 14 +++++++------- 6 files changed, 13 insertions(+), 32 deletions(-) diff --git a/lavamoat/browserify/beta/policy.json b/lavamoat/browserify/beta/policy.json index c5b6d5d1d..49f657be1 100644 --- a/lavamoat/browserify/beta/policy.json +++ b/lavamoat/browserify/beta/policy.json @@ -758,16 +758,11 @@ }, "@metamask/approval-controller": { "packages": { - "@metamask/approval-controller>@metamask/base-controller": true, "@metamask/approval-controller>nanoid": true, + "@metamask/base-controller": true, "eth-rpc-errors": true } }, - "@metamask/approval-controller>@metamask/base-controller": { - "packages": { - "immer": true - } - }, "@metamask/approval-controller>nanoid": { "globals": { "crypto.getRandomValues": true diff --git a/lavamoat/browserify/desktop/policy.json b/lavamoat/browserify/desktop/policy.json index b3854aee4..e141f96a2 100644 --- a/lavamoat/browserify/desktop/policy.json +++ b/lavamoat/browserify/desktop/policy.json @@ -758,16 +758,11 @@ }, "@metamask/approval-controller": { "packages": { - "@metamask/approval-controller>@metamask/base-controller": true, "@metamask/approval-controller>nanoid": true, + "@metamask/base-controller": true, "eth-rpc-errors": true } }, - "@metamask/approval-controller>@metamask/base-controller": { - "packages": { - "immer": true - } - }, "@metamask/approval-controller>nanoid": { "globals": { "crypto.getRandomValues": true diff --git a/lavamoat/browserify/flask/policy.json b/lavamoat/browserify/flask/policy.json index b3854aee4..e141f96a2 100644 --- a/lavamoat/browserify/flask/policy.json +++ b/lavamoat/browserify/flask/policy.json @@ -758,16 +758,11 @@ }, "@metamask/approval-controller": { "packages": { - "@metamask/approval-controller>@metamask/base-controller": true, "@metamask/approval-controller>nanoid": true, + "@metamask/base-controller": true, "eth-rpc-errors": true } }, - "@metamask/approval-controller>@metamask/base-controller": { - "packages": { - "immer": true - } - }, "@metamask/approval-controller>nanoid": { "globals": { "crypto.getRandomValues": true diff --git a/lavamoat/browserify/main/policy.json b/lavamoat/browserify/main/policy.json index c5b6d5d1d..49f657be1 100644 --- a/lavamoat/browserify/main/policy.json +++ b/lavamoat/browserify/main/policy.json @@ -758,16 +758,11 @@ }, "@metamask/approval-controller": { "packages": { - "@metamask/approval-controller>@metamask/base-controller": true, "@metamask/approval-controller>nanoid": true, + "@metamask/base-controller": true, "eth-rpc-errors": true } }, - "@metamask/approval-controller>@metamask/base-controller": { - "packages": { - "immer": true - } - }, "@metamask/approval-controller>nanoid": { "globals": { "crypto.getRandomValues": true diff --git a/package.json b/package.json index 63f4cf150..ac35af11d 100644 --- a/package.json +++ b/package.json @@ -100,6 +100,7 @@ "resolutions": { "@babel/core": "patch:@babel/core@npm%3A7.21.5#./.yarn/patches/@babel-core-npm-7.21.5-c72c337956.patch", "@babel/runtime": "patch:@babel/runtime@npm%3A7.18.9#./.yarn/patches/@babel-runtime-npm-7.18.9-28ca6b5f61.patch", + "@metamask/approval-controller": "^3.0.0", "@types/react": "^16.9.53", "analytics-node/axios": "^0.21.2", "ganache-core/lodash": "^4.17.21", @@ -225,7 +226,7 @@ "@metamask-institutional/transaction-update": "^0.1.21", "@metamask/address-book-controller": "^3.0.0", "@metamask/announcement-controller": "^4.0.0", - "@metamask/approval-controller": "^2.1.0", + "@metamask/approval-controller": "^3.0.0", "@metamask/assets-controllers": "^7.0.0", "@metamask/base-controller": "^3.0.0", "@metamask/browser-passworder": "^4.1.0", diff --git a/yarn.lock b/yarn.lock index 00924d67a..b2d5f9184 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3853,16 +3853,16 @@ __metadata: languageName: node linkType: hard -"@metamask/approval-controller@npm:^2.0.0, @metamask/approval-controller@npm:^2.1.0, @metamask/approval-controller@npm:^2.1.1": - version: 2.1.1 - resolution: "@metamask/approval-controller@npm:2.1.1" +"@metamask/approval-controller@npm:^3.0.0": + version: 3.1.0 + resolution: "@metamask/approval-controller@npm:3.1.0" dependencies: - "@metamask/base-controller": ^2.0.0 - "@metamask/controller-utils": ^3.4.0 + "@metamask/base-controller": ^3.0.0 + "@metamask/utils": ^5.0.2 eth-rpc-errors: ^4.0.2 immer: ^9.0.6 nanoid: ^3.1.31 - checksum: 2e3798e67821660be7c7a35cbe5d001085fd2814fb58bc21e1525383fe2fba66ddb4074896c530de29407d929790ee3a036e180c5576962e3b50a85afe3fd9df + checksum: 2043e62e8815a600e839617b4df26515fc33f655e21562dc230cd6dbfc4677e955e1e45a5df8fbb2def2122b3578f6a632acb939f8175419febb1471d0c48ce0 languageName: node linkType: hard @@ -23911,7 +23911,7 @@ __metadata: "@metamask-institutional/transaction-update": ^0.1.21 "@metamask/address-book-controller": ^3.0.0 "@metamask/announcement-controller": ^4.0.0 - "@metamask/approval-controller": ^2.1.0 + "@metamask/approval-controller": ^3.0.0 "@metamask/assets-controllers": ^7.0.0 "@metamask/auto-changelog": ^2.1.0 "@metamask/base-controller": ^3.0.0 From d99aecc164d2d346e7ed0b680c3d58dcf033e261 Mon Sep 17 00:00:00 2001 From: OGPoyraz Date: Thu, 1 Jun 2023 11:48:07 +0200 Subject: [PATCH 034/160] deep clone signature tx in order to avoid state mutation bug on development (#19179) --- ui/pages/confirm-signature-request/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ui/pages/confirm-signature-request/index.js b/ui/pages/confirm-signature-request/index.js index cb4c52464..48d4d4c39 100644 --- a/ui/pages/confirm-signature-request/index.js +++ b/ui/pages/confirm-signature-request/index.js @@ -3,6 +3,7 @@ import React, { useEffect, useState } from 'react'; import { useDispatch, useSelector } from 'react-redux'; import { withRouter } from 'react-router-dom'; import log from 'loglevel'; +import { cloneDeep } from 'lodash'; import * as actions from '../../store/actions'; import txHelper from '../../helpers/utils/tx-helper'; import SignatureRequest from '../../components/app/signature-request'; @@ -168,9 +169,10 @@ const ConfirmTxScreen = ({ match }) => { log.info(`rendering a combined ${unconfTxList.length} unconf msgs & txs`); - return transactionId + const unconfirmedTx = transactionId ? unconfTxList.find(({ id }) => `${id}` === transactionId) : unconfTxList[index]; + return cloneDeep(unconfirmedTx); }; const txData = getTxData() || {}; From a1050095d42ef5d80e8e24b4bf1f0a2fe818edad Mon Sep 17 00:00:00 2001 From: MetaMask Bot Date: Thu, 1 Jun 2023 13:30:13 +0000 Subject: [PATCH 035/160] Version v10.31.1 --- CHANGELOG.md | 5 ++++- package.json | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 034155a79..d2da3ac92 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [10.31.1] + ## [10.31.0] ### Added - Add extra friction to enable eth_sign in advanced settings ([#18848](https://github.com/MetaMask/metamask-extension/pull/18848)) @@ -3757,7 +3759,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Uncategorized - Added the ability to restore accounts from seed words. -[Unreleased]: https://github.com/MetaMask/metamask-extension/compare/v10.31.0...HEAD +[Unreleased]: https://github.com/MetaMask/metamask-extension/compare/v10.31.1...HEAD +[10.31.1]: https://github.com/MetaMask/metamask-extension/compare/v10.31.0...v10.31.1 [10.31.0]: https://github.com/MetaMask/metamask-extension/compare/v10.30.4...v10.31.0 [10.30.4]: https://github.com/MetaMask/metamask-extension/compare/v10.30.3...v10.30.4 [10.30.3]: https://github.com/MetaMask/metamask-extension/compare/v10.30.2...v10.30.3 diff --git a/package.json b/package.json index fe85262e8..77df69de5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "metamask-crx", - "version": "10.31.0", + "version": "10.31.1", "private": true, "repository": { "type": "git", From 8d79e285604407ad008901290e9e7fffa2b6343f Mon Sep 17 00:00:00 2001 From: Ariella Vu <20778143+digiwand@users.noreply.github.com> Date: Thu, 1 Jun 2023 16:10:26 +0200 Subject: [PATCH 036/160] Clean ConfirmTransaction page related code (#19208) * fix typo: uncofirmedTransactions -> unconfirmedTransactions * txHelper: reorganize lines and improve test * ConfirmTx: rn unconfirmedTxs->unconfirmedTxsSorted * ConfirmTx: rn unconfirmedMessages-> unconfirmedTxs --- ...irm-page-container-navigation.component.js | 6 ++-- ui/helpers/utils/tx-helper.test.js | 16 ++++++--- ui/helpers/utils/tx-helper.ts | 34 +++++++++---------- .../confirm-transaction.component.js | 14 ++++---- 4 files changed, 38 insertions(+), 32 deletions(-) diff --git a/ui/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 index f60c14318..d5a29aec4 100755 --- a/ui/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 @@ -23,7 +23,7 @@ const ConfirmPageContainerNavigation = () => { const unapprovedEncryptionPublicKeyMsgs = useSelector( unapprovedEncryptionPublicKeyMsgsSelector, ); - const uncofirmedTransactions = useSelector( + const unconfirmedTransactions = useSelector( unconfirmedTransactionsHashSelector, ); @@ -36,7 +36,7 @@ const ConfirmPageContainerNavigation = () => { ...enumUnapprovedEncryptMsgsKey, ]; - const enumUnapprovedTxs = Object.keys(uncofirmedTransactions).filter( + const enumUnapprovedTxs = Object.keys(unconfirmedTransactions).filter( (key) => enumDecryptAndEncryptMsgs.includes(key) === false, ); @@ -54,7 +54,7 @@ const ConfirmPageContainerNavigation = () => { if (txId) { dispatch(clearConfirmTransaction()); history.push( - uncofirmedTransactions[txId]?.msgParams + unconfirmedTransactions[txId]?.msgParams ? `${CONFIRM_TRANSACTION_ROUTE}/${txId}${SIGNATURE_REQUEST_PATH}` : `${CONFIRM_TRANSACTION_ROUTE}/${txId}`, ); diff --git a/ui/helpers/utils/tx-helper.test.js b/ui/helpers/utils/tx-helper.test.js index c48a67d03..579ffbf0d 100644 --- a/ui/helpers/utils/tx-helper.test.js +++ b/ui/helpers/utils/tx-helper.test.js @@ -5,15 +5,21 @@ describe('txHelper', () => { it('always shows the oldest tx first', () => { const metamaskNetworkId = NETWORK_IDS.MAINNET; const chainId = CHAIN_IDS.MAINNET; - const txs = { + const mockUnapprovedTxs = { a: { metamaskNetworkId, time: 3 }, - b: { metamaskNetworkId, time: 1 }, + b: { metamaskNetworkId, time: 6 }, c: { metamaskNetworkId, time: 2 }, }; + const mockUnapprovedMsgs = { + d: { metamaskNetworkId, time: 4 }, + e: { metamaskNetworkId, time: 1 }, + f: { metamaskNetworkId, time: 5 }, + }; + const sorted = txHelper( - txs, - null, + mockUnapprovedTxs, + mockUnapprovedMsgs, null, null, null, @@ -21,7 +27,9 @@ describe('txHelper', () => { metamaskNetworkId, chainId, ); + expect(sorted[0].time).toStrictEqual(1); expect(sorted[2].time).toStrictEqual(3); + expect(sorted[5].time).toStrictEqual(6); }); }); diff --git a/ui/helpers/utils/tx-helper.ts b/ui/helpers/utils/tx-helper.ts index e29732d24..1ce48a75e 100644 --- a/ui/helpers/utils/tx-helper.ts +++ b/ui/helpers/utils/tx-helper.ts @@ -29,35 +29,33 @@ export default function txHelper( transactionMatchesNetwork(txMeta, chainId, networkId), ) : valuesFor(unapprovedTxs); - log.debug(`tx helper found ${txValues.length} unapproved txs`); const msgValues = valuesFor(unapprovedMsgs); - log.debug(`tx helper found ${msgValues.length} unsigned messages`); - let allValues = txValues.concat(msgValues); - const personalValues = valuesFor(personalMsgs); + const decryptValues = valuesFor(decryptMsgs); + const encryptionPublicKeyValues = valuesFor(encryptionPublicKeyMsgs); + const typedValues = valuesFor(typedMessages); + + const allValues = txValues + .concat(msgValues) + .concat(personalValues) + .concat(decryptValues) + .concat(encryptionPublicKeyValues) + .concat(typedValues) + .sort((a, b) => { + return a.time - b.time; + }); + + log.debug(`tx helper found ${txValues.length} unapproved txs`); + log.debug(`tx helper found ${msgValues.length} unsigned messages`); log.debug( `tx helper found ${personalValues.length} unsigned personal messages`, ); - allValues = allValues.concat(personalValues); - - const decryptValues = valuesFor(decryptMsgs); log.debug(`tx helper found ${decryptValues.length} decrypt requests`); - allValues = allValues.concat(decryptValues); - - const encryptionPublicKeyValues = valuesFor(encryptionPublicKeyMsgs); log.debug( `tx helper found ${encryptionPublicKeyValues.length} encryptionPublicKey requests`, ); - allValues = allValues.concat(encryptionPublicKeyValues); - - const typedValues = valuesFor(typedMessages); log.debug(`tx helper found ${typedValues.length} unsigned typed messages`); - allValues = allValues.concat(typedValues); - - allValues = allValues.sort((a, b) => { - return a.time - b.time; - }); return allValues; } diff --git a/ui/pages/confirm-transaction/confirm-transaction.component.js b/ui/pages/confirm-transaction/confirm-transaction.component.js index 698a729fe..16b8d502b 100644 --- a/ui/pages/confirm-transaction/confirm-transaction.component.js +++ b/ui/pages/confirm-transaction/confirm-transaction.component.js @@ -57,22 +57,22 @@ const ConfirmTransaction = () => { const mostRecentOverviewPage = useSelector(getMostRecentOverviewPage); const sendTo = useSelector(getSendTo); const unapprovedTxs = useSelector(getUnapprovedTransactions); - const unconfirmedTxs = useSelector(unconfirmedTransactionsListSelector); - const unconfirmedMessages = useSelector(unconfirmedTransactionsHashSelector); + const unconfirmedTxsSorted = useSelector(unconfirmedTransactionsListSelector); + const unconfirmedTxs = useSelector(unconfirmedTransactionsHashSelector); - const totalUnapproved = unconfirmedTxs.length || 0; + const totalUnapproved = unconfirmedTxsSorted.length || 0; const getTransaction = useCallback(() => { return totalUnapproved ? unapprovedTxs[paramsTransactionId] || - unconfirmedMessages[paramsTransactionId] || - unconfirmedTxs[0] + unconfirmedTxs[paramsTransactionId] || + unconfirmedTxsSorted[0] : {}; }, [ paramsTransactionId, totalUnapproved, unapprovedTxs, - unconfirmedMessages, unconfirmedTxs, + unconfirmedTxsSorted, ]); const [transaction, setTransaction] = useState(getTransaction); @@ -88,8 +88,8 @@ const ConfirmTransaction = () => { paramsTransactionId, totalUnapproved, unapprovedTxs, - unconfirmedMessages, unconfirmedTxs, + unconfirmedTxsSorted, ]); const { id, type } = transaction; From ea4270babfeabb2b82db51cb2f6e34cef9f89898 Mon Sep 17 00:00:00 2001 From: Ariella Vu <20778143+digiwand@users.noreply.github.com> Date: Thu, 1 Jun 2023 16:12:09 +0200 Subject: [PATCH 037/160] ConfirmApprove: fix space occurring after footer (#19276) --- ui/pages/confirm-approve/confirm-approve-content/index.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/ui/pages/confirm-approve/confirm-approve-content/index.scss b/ui/pages/confirm-approve/confirm-approve-content/index.scss index eb63c632f..77947c2f7 100644 --- a/ui/pages/confirm-approve/confirm-approve-content/index.scss +++ b/ui/pages/confirm-approve/confirm-approve-content/index.scss @@ -4,6 +4,7 @@ align-items: center; width: 100%; font-style: normal; + flex: 1 1 auto; &__warning { padding: 0 24px 16px 24px; From 14f1ac7a66685b7d7ee235f645b71e159fc949e1 Mon Sep 17 00:00:00 2001 From: Soralit Date: Thu, 1 Jun 2023 06:06:20 +0800 Subject: [PATCH 038/160] fix: keystone sign request break (#19349) --- lavamoat/browserify/beta/policy.json | 55 +------------ lavamoat/browserify/desktop/policy.json | 55 +------------ lavamoat/browserify/flask/policy.json | 55 +------------ lavamoat/browserify/main/policy.json | 55 +------------ package.json | 4 +- yarn.lock | 103 +++++------------------- 6 files changed, 32 insertions(+), 295 deletions(-) diff --git a/lavamoat/browserify/beta/policy.json b/lavamoat/browserify/beta/policy.json index 66e7ba541..9c02a56bc 100644 --- a/lavamoat/browserify/beta/policy.json +++ b/lavamoat/browserify/beta/policy.json @@ -519,8 +519,8 @@ "@keystonehq/metamask-airgapped-keyring": { "packages": { "@ethereumjs/tx": true, + "@keystonehq/bc-ur-registry-eth": true, "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring": true, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/bc-ur-registry-eth": true, "@keystonehq/metamask-airgapped-keyring>@metamask/obs-store": true, "browserify>buffer": true, "browserify>events": true, @@ -532,60 +532,18 @@ "packages": { "@ethereumjs/tx": true, "@ethereumjs/tx>@ethereumjs/util": true, + "@keystonehq/bc-ur-registry-eth": true, "@keystonehq/bc-ur-registry-eth>hdkey": true, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@keystonehq/bc-ur-registry-eth": true, "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>rlp": true, "browserify>buffer": true, "uuid": true } }, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@keystonehq/bc-ur-registry-eth": { - "packages": { - "@ethereumjs/tx>@ethereumjs/util": true, - "@keystonehq/bc-ur-registry-eth>hdkey": true, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@keystonehq/bc-ur-registry-eth>@keystonehq/bc-ur-registry": true, - "browserify>buffer": true, - "uuid": true - } - }, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@keystonehq/bc-ur-registry-eth>@keystonehq/bc-ur-registry": { - "globals": { - "define": true - }, - "packages": { - "@ngraveio/bc-ur": true, - "@ngraveio/bc-ur>crc>buffer": true, - "browserify>buffer": true, - "ethereumjs-wallet>bs58check": true, - "wait-on>rxjs>tslib": true - } - }, "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>rlp": { "globals": { "TextEncoder": true } }, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/bc-ur-registry-eth": { - "packages": { - "@ethereumjs/tx>@ethereumjs/util": true, - "@keystonehq/bc-ur-registry-eth>hdkey": true, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/bc-ur-registry-eth>@keystonehq/bc-ur-registry": true, - "browserify>buffer": true, - "uuid": true - } - }, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/bc-ur-registry-eth>@keystonehq/bc-ur-registry": { - "globals": { - "define": true - }, - "packages": { - "@ngraveio/bc-ur": true, - "@ngraveio/bc-ur>crc>buffer": true, - "browserify>buffer": true, - "ethereumjs-wallet>bs58check": true, - "wait-on>rxjs>tslib": true - } - }, "@keystonehq/metamask-airgapped-keyring>@metamask/obs-store": { "packages": { "@keystonehq/metamask-airgapped-keyring>@metamask/obs-store>through2": true, @@ -1807,15 +1765,6 @@ "browserify>buffer": true } }, - "@ngraveio/bc-ur>crc>buffer": { - "globals": { - "console": true - }, - "packages": { - "base64-js": true, - "browserify>buffer>ieee754": true - } - }, "@ngraveio/bc-ur>jsbi": { "globals": { "define": true diff --git a/lavamoat/browserify/desktop/policy.json b/lavamoat/browserify/desktop/policy.json index 9a697c475..c95a797e6 100644 --- a/lavamoat/browserify/desktop/policy.json +++ b/lavamoat/browserify/desktop/policy.json @@ -519,8 +519,8 @@ "@keystonehq/metamask-airgapped-keyring": { "packages": { "@ethereumjs/tx": true, + "@keystonehq/bc-ur-registry-eth": true, "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring": true, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/bc-ur-registry-eth": true, "@keystonehq/metamask-airgapped-keyring>@metamask/obs-store": true, "browserify>buffer": true, "browserify>events": true, @@ -532,60 +532,18 @@ "packages": { "@ethereumjs/tx": true, "@ethereumjs/tx>@ethereumjs/util": true, + "@keystonehq/bc-ur-registry-eth": true, "@keystonehq/bc-ur-registry-eth>hdkey": true, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@keystonehq/bc-ur-registry-eth": true, "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>rlp": true, "browserify>buffer": true, "uuid": true } }, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@keystonehq/bc-ur-registry-eth": { - "packages": { - "@ethereumjs/tx>@ethereumjs/util": true, - "@keystonehq/bc-ur-registry-eth>hdkey": true, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@keystonehq/bc-ur-registry-eth>@keystonehq/bc-ur-registry": true, - "browserify>buffer": true, - "uuid": true - } - }, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@keystonehq/bc-ur-registry-eth>@keystonehq/bc-ur-registry": { - "globals": { - "define": true - }, - "packages": { - "@ngraveio/bc-ur": true, - "@ngraveio/bc-ur>crc>buffer": true, - "browserify>buffer": true, - "ethereumjs-wallet>bs58check": true, - "wait-on>rxjs>tslib": true - } - }, "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>rlp": { "globals": { "TextEncoder": true } }, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/bc-ur-registry-eth": { - "packages": { - "@ethereumjs/tx>@ethereumjs/util": true, - "@keystonehq/bc-ur-registry-eth>hdkey": true, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/bc-ur-registry-eth>@keystonehq/bc-ur-registry": true, - "browserify>buffer": true, - "uuid": true - } - }, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/bc-ur-registry-eth>@keystonehq/bc-ur-registry": { - "globals": { - "define": true - }, - "packages": { - "@ngraveio/bc-ur": true, - "@ngraveio/bc-ur>crc>buffer": true, - "browserify>buffer": true, - "ethereumjs-wallet>bs58check": true, - "wait-on>rxjs>tslib": true - } - }, "@keystonehq/metamask-airgapped-keyring>@metamask/obs-store": { "packages": { "@keystonehq/metamask-airgapped-keyring>@metamask/obs-store>through2": true, @@ -2241,15 +2199,6 @@ "browserify>buffer": true } }, - "@ngraveio/bc-ur>crc>buffer": { - "globals": { - "console": true - }, - "packages": { - "base64-js": true, - "browserify>buffer>ieee754": true - } - }, "@ngraveio/bc-ur>jsbi": { "globals": { "define": true diff --git a/lavamoat/browserify/flask/policy.json b/lavamoat/browserify/flask/policy.json index 9a697c475..c95a797e6 100644 --- a/lavamoat/browserify/flask/policy.json +++ b/lavamoat/browserify/flask/policy.json @@ -519,8 +519,8 @@ "@keystonehq/metamask-airgapped-keyring": { "packages": { "@ethereumjs/tx": true, + "@keystonehq/bc-ur-registry-eth": true, "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring": true, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/bc-ur-registry-eth": true, "@keystonehq/metamask-airgapped-keyring>@metamask/obs-store": true, "browserify>buffer": true, "browserify>events": true, @@ -532,60 +532,18 @@ "packages": { "@ethereumjs/tx": true, "@ethereumjs/tx>@ethereumjs/util": true, + "@keystonehq/bc-ur-registry-eth": true, "@keystonehq/bc-ur-registry-eth>hdkey": true, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@keystonehq/bc-ur-registry-eth": true, "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>rlp": true, "browserify>buffer": true, "uuid": true } }, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@keystonehq/bc-ur-registry-eth": { - "packages": { - "@ethereumjs/tx>@ethereumjs/util": true, - "@keystonehq/bc-ur-registry-eth>hdkey": true, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@keystonehq/bc-ur-registry-eth>@keystonehq/bc-ur-registry": true, - "browserify>buffer": true, - "uuid": true - } - }, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@keystonehq/bc-ur-registry-eth>@keystonehq/bc-ur-registry": { - "globals": { - "define": true - }, - "packages": { - "@ngraveio/bc-ur": true, - "@ngraveio/bc-ur>crc>buffer": true, - "browserify>buffer": true, - "ethereumjs-wallet>bs58check": true, - "wait-on>rxjs>tslib": true - } - }, "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>rlp": { "globals": { "TextEncoder": true } }, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/bc-ur-registry-eth": { - "packages": { - "@ethereumjs/tx>@ethereumjs/util": true, - "@keystonehq/bc-ur-registry-eth>hdkey": true, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/bc-ur-registry-eth>@keystonehq/bc-ur-registry": true, - "browserify>buffer": true, - "uuid": true - } - }, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/bc-ur-registry-eth>@keystonehq/bc-ur-registry": { - "globals": { - "define": true - }, - "packages": { - "@ngraveio/bc-ur": true, - "@ngraveio/bc-ur>crc>buffer": true, - "browserify>buffer": true, - "ethereumjs-wallet>bs58check": true, - "wait-on>rxjs>tslib": true - } - }, "@keystonehq/metamask-airgapped-keyring>@metamask/obs-store": { "packages": { "@keystonehq/metamask-airgapped-keyring>@metamask/obs-store>through2": true, @@ -2241,15 +2199,6 @@ "browserify>buffer": true } }, - "@ngraveio/bc-ur>crc>buffer": { - "globals": { - "console": true - }, - "packages": { - "base64-js": true, - "browserify>buffer>ieee754": true - } - }, "@ngraveio/bc-ur>jsbi": { "globals": { "define": true diff --git a/lavamoat/browserify/main/policy.json b/lavamoat/browserify/main/policy.json index 66e7ba541..9c02a56bc 100644 --- a/lavamoat/browserify/main/policy.json +++ b/lavamoat/browserify/main/policy.json @@ -519,8 +519,8 @@ "@keystonehq/metamask-airgapped-keyring": { "packages": { "@ethereumjs/tx": true, + "@keystonehq/bc-ur-registry-eth": true, "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring": true, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/bc-ur-registry-eth": true, "@keystonehq/metamask-airgapped-keyring>@metamask/obs-store": true, "browserify>buffer": true, "browserify>events": true, @@ -532,60 +532,18 @@ "packages": { "@ethereumjs/tx": true, "@ethereumjs/tx>@ethereumjs/util": true, + "@keystonehq/bc-ur-registry-eth": true, "@keystonehq/bc-ur-registry-eth>hdkey": true, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@keystonehq/bc-ur-registry-eth": true, "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>rlp": true, "browserify>buffer": true, "uuid": true } }, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@keystonehq/bc-ur-registry-eth": { - "packages": { - "@ethereumjs/tx>@ethereumjs/util": true, - "@keystonehq/bc-ur-registry-eth>hdkey": true, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@keystonehq/bc-ur-registry-eth>@keystonehq/bc-ur-registry": true, - "browserify>buffer": true, - "uuid": true - } - }, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@keystonehq/bc-ur-registry-eth>@keystonehq/bc-ur-registry": { - "globals": { - "define": true - }, - "packages": { - "@ngraveio/bc-ur": true, - "@ngraveio/bc-ur>crc>buffer": true, - "browserify>buffer": true, - "ethereumjs-wallet>bs58check": true, - "wait-on>rxjs>tslib": true - } - }, "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>rlp": { "globals": { "TextEncoder": true } }, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/bc-ur-registry-eth": { - "packages": { - "@ethereumjs/tx>@ethereumjs/util": true, - "@keystonehq/bc-ur-registry-eth>hdkey": true, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/bc-ur-registry-eth>@keystonehq/bc-ur-registry": true, - "browserify>buffer": true, - "uuid": true - } - }, - "@keystonehq/metamask-airgapped-keyring>@keystonehq/bc-ur-registry-eth>@keystonehq/bc-ur-registry": { - "globals": { - "define": true - }, - "packages": { - "@ngraveio/bc-ur": true, - "@ngraveio/bc-ur>crc>buffer": true, - "browserify>buffer": true, - "ethereumjs-wallet>bs58check": true, - "wait-on>rxjs>tslib": true - } - }, "@keystonehq/metamask-airgapped-keyring>@metamask/obs-store": { "packages": { "@keystonehq/metamask-airgapped-keyring>@metamask/obs-store>through2": true, @@ -1807,15 +1765,6 @@ "browserify>buffer": true } }, - "@ngraveio/bc-ur>crc>buffer": { - "globals": { - "console": true - }, - "packages": { - "base64-js": true, - "browserify>buffer>ieee754": true - } - }, "@ngraveio/bc-ur>jsbi": { "globals": { "define": true diff --git a/package.json b/package.json index 77df69de5..9d6016a17 100644 --- a/package.json +++ b/package.json @@ -223,8 +223,8 @@ "@ethersproject/providers": "^5.7.2", "@formatjs/intl-relativetimeformat": "^5.2.6", "@fortawesome/fontawesome-free": "^5.13.0", - "@keystonehq/bc-ur-registry-eth": "^0.12.1", - "@keystonehq/metamask-airgapped-keyring": "^0.9.2", + "@keystonehq/bc-ur-registry-eth": "^0.19.1", + "@keystonehq/metamask-airgapped-keyring": "^0.13.1", "@lavamoat/snow": "^1.5.0", "@material-ui/core": "^4.11.0", "@metamask/address-book-controller": "^2.0.0", diff --git a/yarn.lock b/yarn.lock index 83cef2e83..59e94ec9d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3290,88 +3290,54 @@ __metadata: languageName: node linkType: hard -"@keystonehq/base-eth-keyring@npm:^0.10.2": - version: 0.10.2 - resolution: "@keystonehq/base-eth-keyring@npm:0.10.2" +"@keystonehq/base-eth-keyring@npm:^0.14.1": + version: 0.14.1 + resolution: "@keystonehq/base-eth-keyring@npm:0.14.1" dependencies: "@ethereumjs/tx": ^4.0.2 "@ethereumjs/util": ^8.0.0 - "@keystonehq/bc-ur-registry-eth": ^0.15.2 + "@keystonehq/bc-ur-registry-eth": ^0.19.1 hdkey: ^2.0.1 rlp: ^3.0.0 uuid: ^8.3.2 - checksum: 689e204a70828508ed9ca9da8d943cf948c7f8e84c17053944f13cfbd69d2b96bb9694542fe48753cad7a985a2e9bd80e1fc0c7b5f78158e6dc7e8487ecec2d1 + checksum: 2d61de9584631c68991686173a5356070a619a6f2873a822db35af56b8b7ee7b20b544374e0cd1972b139703362b56f5c566485eaea5a48644e34809af45b0a5 languageName: node linkType: hard -"@keystonehq/bc-ur-registry-eth@npm:^0.12.1": - version: 0.12.1 - resolution: "@keystonehq/bc-ur-registry-eth@npm:0.12.1" +"@keystonehq/bc-ur-registry-eth@npm:^0.19.1": + version: 0.19.1 + resolution: "@keystonehq/bc-ur-registry-eth@npm:0.19.1" dependencies: "@ethereumjs/util": ^8.0.0 - "@keystonehq/bc-ur-registry": ^0.5.0-alpha.5 + "@keystonehq/bc-ur-registry": ^0.6.0 hdkey: ^2.0.1 uuid: ^8.3.2 - checksum: 74c2b13cd2277478fb8a4932caf71f12a60c58b2d02322f8ee905eee11d6391deaeca712fe861955fb2b68ea0eaa0ff7155a31c66cd39d59433f2baffaf6c2ac + checksum: 51ca3ac78e68bec6b8ba1f1b938734fb7442f8b7b67f1befb8465d3b52ba1254fd5a0cf9f85825ab6a144b1c677cd6efb40a35fe4933f0e2df1fd5c4dda3c2fa languageName: node linkType: hard -"@keystonehq/bc-ur-registry-eth@npm:^0.15.2": - version: 0.15.2 - resolution: "@keystonehq/bc-ur-registry-eth@npm:0.15.2" - dependencies: - "@ethereumjs/util": ^8.0.0 - "@keystonehq/bc-ur-registry": 0.5.4 - hdkey: ^2.0.1 - uuid: ^8.3.2 - checksum: 8541040c3eea59aa39d6a9b9f17acfe505956b01ffa977e54c51c14f45b6b8af4ca3dd594866934dd06939fbd752a3d5b1ba46e017df86362c2c67de52005860 - languageName: node - linkType: hard - -"@keystonehq/bc-ur-registry@npm:0.5.0-alpha.5": - version: 0.5.0-alpha.5 - resolution: "@keystonehq/bc-ur-registry@npm:0.5.0-alpha.5" - dependencies: - "@ngraveio/bc-ur": ^1.1.5 - base58check: ^2.0.0 - tslib: ^2.3.0 - checksum: 9d0a028db36494f5d28281ed67fc17c191c4b9e72ee5088f79ed5a874cc0d958018aeafa4dc9997e10425afa5b59f0e75e8760297056d9b756837ac7b69460aa - languageName: node - linkType: hard - -"@keystonehq/bc-ur-registry@npm:0.5.4": - version: 0.5.4 - resolution: "@keystonehq/bc-ur-registry@npm:0.5.4" +"@keystonehq/bc-ur-registry@npm:^0.6.0": + version: 0.6.0 + resolution: "@keystonehq/bc-ur-registry@npm:0.6.0" dependencies: "@ngraveio/bc-ur": ^1.1.5 bs58check: ^2.1.2 tslib: ^2.3.0 - checksum: d8e4b8c4cd2a7b21fad2e24895f7b32937b64f93d0f1540833be9dcb36062a44c8fc21204502f046c0e771370ba7ff6ce2356438028229813b4f15b2ecb714c6 + checksum: a86a8775a065d422349b6624856693ca96bf00f82f1f63d23da33fe9d357e14dabf023902fbc9dd9a918ef420ea4d083b1196539e482a26cb85b691fe8b101af languageName: node linkType: hard -"@keystonehq/bc-ur-registry@patch:@keystonehq/bc-ur-registry@npm%3A0.5.0-alpha.5#./.yarn/patches/@keystonehq-bc-ur-registry-npm-0.5.0-alpha.5-b95c7992a6.patch::locator=metamask-crx%40workspace%3A.": - version: 0.5.0-alpha.5 - resolution: "@keystonehq/bc-ur-registry@patch:@keystonehq/bc-ur-registry@npm%3A0.5.0-alpha.5#./.yarn/patches/@keystonehq-bc-ur-registry-npm-0.5.0-alpha.5-b95c7992a6.patch::version=0.5.0-alpha.5&hash=2b9ed1&locator=metamask-crx%40workspace%3A." - dependencies: - "@ngraveio/bc-ur": ^1.1.5 - base58check: ^2.0.0 - tslib: ^2.3.0 - checksum: b215552f10c34a92c8651fae8b0d2794ea92f0a1261a40c4370a63fdb88945ee650e333f516ad368c1ebe84c41246337bf7579064471769f19869f8b4e7a88b2 - languageName: node - linkType: hard - -"@keystonehq/metamask-airgapped-keyring@npm:^0.9.2": - version: 0.9.2 - resolution: "@keystonehq/metamask-airgapped-keyring@npm:0.9.2" +"@keystonehq/metamask-airgapped-keyring@npm:^0.13.1": + version: 0.13.1 + resolution: "@keystonehq/metamask-airgapped-keyring@npm:0.13.1" dependencies: "@ethereumjs/tx": ^4.0.2 - "@keystonehq/base-eth-keyring": ^0.10.2 - "@keystonehq/bc-ur-registry-eth": ^0.15.2 + "@keystonehq/base-eth-keyring": ^0.14.1 + "@keystonehq/bc-ur-registry-eth": ^0.19.1 "@metamask/obs-store": ^7.0.0 rlp: ^2.2.6 uuid: ^8.3.2 - checksum: 6ac0868a26d152e51d4a9e7c02c197ec6a6bc0cb56f99ec211c10b28b9acb33cce903fa87297bbbe547c61417b81c59324ee95da96b2a8cd0a2daadc772f9d6e + checksum: 9d9f4743c8017d90da7aeaf58a3f74113aac9852f40f6354ecc864126910e5dd15688d7b25539f0f6672308e551abe7319f1ce794a7a699b9b567cf40d2037ab languageName: node linkType: hard @@ -10263,13 +10229,6 @@ __metadata: languageName: node linkType: hard -"base-x@npm:^1.1.0": - version: 1.1.0 - resolution: "base-x@npm:1.1.0" - checksum: 54e24c32919442627fe48aaa76338f8ff02187b42eae6e75e829eef3e44e37f43b128a271733322a7c798626ac7f4fb06184db2ef0ce1da7f37c448ef6f76e26 - languageName: node - linkType: hard - "base-x@npm:^4.0.0": version: 4.0.0 resolution: "base-x@npm:4.0.0" @@ -10286,15 +10245,6 @@ __metadata: languageName: node linkType: hard -"base58check@npm:^2.0.0": - version: 2.0.0 - resolution: "base58check@npm:2.0.0" - dependencies: - bs58: ^3.0.0 - checksum: 19f77522a38d66d5c9cc16411880e258899a6807b31477e3ac33ebaa64555126e9b29e7d5d2be88748aae8b1d05f91e5eb3aef4847a033af25b8a0c0f995b037 - languageName: node - linkType: hard - "base64-arraybuffer@npm:^0.1.5": version: 0.1.5 resolution: "base64-arraybuffer@npm:0.1.5" @@ -11057,15 +11007,6 @@ __metadata: languageName: node linkType: hard -"bs58@npm:^3.0.0": - version: 3.1.0 - resolution: "bs58@npm:3.1.0" - dependencies: - base-x: ^1.1.0 - checksum: 6d757a49958c43bc630f3b327511ce3ee065307c24240aa86189f72df0a4a8245c7ce7e7abad209b637f155006952c7b8f04bb4aa6ee4212a891882424bca82e - languageName: node - linkType: hard - "bs58@npm:^4.0.0, bs58@npm:^4.0.1": version: 4.0.1 resolution: "bs58@npm:4.0.1" @@ -23987,8 +23928,8 @@ __metadata: "@formatjs/intl-relativetimeformat": ^5.2.6 "@fortawesome/fontawesome-free": ^5.13.0 "@json-rpc-specification/meta-schema": ^1.0.6 - "@keystonehq/bc-ur-registry-eth": ^0.12.1 - "@keystonehq/metamask-airgapped-keyring": ^0.9.2 + "@keystonehq/bc-ur-registry-eth": ^0.19.1 + "@keystonehq/metamask-airgapped-keyring": ^0.13.1 "@lavamoat/allow-scripts": ^2.0.3 "@lavamoat/lavapack": ^5.0.0 "@lavamoat/snow": ^1.5.0 From 37536646d42f32c328d60514769e22b2c69a7593 Mon Sep 17 00:00:00 2001 From: Dan J Miller Date: Thu, 1 Jun 2023 12:23:33 -0230 Subject: [PATCH 039/160] Update changelog for v10.31.1 --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d2da3ac92..c0be3efaf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ## [10.31.1] +### Fixed +- Fix signature requests for Keystone Hardware Wallet users ([#19349](https://github.com/MetaMask/metamask-extension/pull/19349)) ## [10.31.0] ### Added From c146023598b969e8b028cc21bf1c333427eb2e39 Mon Sep 17 00:00:00 2001 From: Brad Decker Date: Thu, 1 Jun 2023 10:11:22 -0500 Subject: [PATCH 040/160] ci: temporarily disable codecov status checks (#19354) --- codecov.yml | 21 +++++++++++---------- test/merge-coverage.js | 23 +++++++++++++++++++++-- 2 files changed, 32 insertions(+), 12 deletions(-) diff --git a/codecov.yml b/codecov.yml index 6f7608e07..e2065d40a 100644 --- a/codecov.yml +++ b/codecov.yml @@ -4,13 +4,14 @@ codecov: coverage: round: nearest status: - project: - global: - target: auto - threshold: 0% - base: auto - transforms: - target: 100% - threshold: 0% - paths: - - development/build/transforms/**/*.js + project: off + patch: off + # global: + # target: auto + # threshold: 0% + # base: auto + # transforms: + # target: 100% + # threshold: 0% + # paths: + # - development/build/transforms/**/*.js diff --git a/test/merge-coverage.js b/test/merge-coverage.js index 9cf8cad20..61394f1c1 100644 --- a/test/merge-coverage.js +++ b/test/merge-coverage.js @@ -6,10 +6,29 @@ const reports = require('istanbul-reports'); const glob = require('fast-glob'); const yargs = require('yargs/yargs'); const { hideBin } = require('yargs/helpers'); -const yaml = require('js-yaml'); +// Temporarily commented out as we can't rely on the commented yaml file +// Can be restored when the codecov checks are restored +// const yaml = require('js-yaml'); const codecovTargets = require('../coverage-targets'); -const codecovConfig = yaml.load(fs.readFileSync('codecov.yml', 'utf8')); +// Temporarily commented out as we can't rely on the commented yaml file +// Can be restored when the codecov checks are restored. In the meantime +// the important parts of the yaml file are copied below in normal js object +// format. +// const codecovConfig = yaml.load(fs.readFileSync('codecov.yml', 'utf8')); + +const codecovConfig = { + coverage: { + status: { + global: {}, + project: { + transforms: { + paths: ['development/build/transforms/**/*.js'], + }, + }, + }, + }, +}; const COVERAGE_DIR = './coverage/'; From 33cd2c7c18d862fca4d5035cf5cc99b2c6e65d14 Mon Sep 17 00:00:00 2001 From: Binij Shrestha <93417120+thebinij@users.noreply.github.com> Date: Thu, 1 Jun 2023 22:17:10 +0545 Subject: [PATCH 041/160] added deprecation message above SiteIcon (#19256) * added deprecation message above SiteIcon * fix eslint * Some small updates to show correct code formatting and removing params --------- Co-authored-by: georgewrmarshall --- ui/components/ui/site-icon/site-icon.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/ui/components/ui/site-icon/site-icon.js b/ui/components/ui/site-icon/site-icon.js index a1a0c6ab9..029742ee0 100644 --- a/ui/components/ui/site-icon/site-icon.js +++ b/ui/components/ui/site-icon/site-icon.js @@ -3,6 +3,14 @@ import PropTypes from 'prop-types'; import IconBorder from '../icon-border'; import IconWithFallback from '../icon-with-fallback'; +/** + * @deprecated `` has been deprecated in favor of the new `` component from the component-library. + * Please update your code to use the new component instead, which can be found at ./ui/components/component-library/avatar-favicon.js. + * You can find documentation for the new AvatarFavicon component in the MetaMask Storybook: + * {@link https://metamask.github.io/metamask-storybook/?path=/story/components-componentlibrary-avatarfavicon--default-story} + * Help to replace `SiteIcon` with `AvatarFavicon` by submitting a PR + */ + export default function SiteIcon({ icon = null, name = '', size, className }) { const iconSize = Math.floor(size * 0.75); return ( From ee9f7949f972e2e8fdcc92d761c6ae6754a5e034 Mon Sep 17 00:00:00 2001 From: rohit kerkar <129620973+rohiiittttt@users.noreply.github.com> Date: Thu, 1 Jun 2023 22:03:11 +0530 Subject: [PATCH 042/160] Replacing Deprecated Constants (#19333) --- .../component-library/form-text-field/README.mdx | 12 ++++++------ .../form-text-field/form-text-field.js | 12 ++++++------ .../form-text-field/form-text-field.stories.js | 10 +++++----- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/ui/components/component-library/form-text-field/README.mdx b/ui/components/component-library/form-text-field/README.mdx index ff487e334..5fe35c701 100644 --- a/ui/components/component-library/form-text-field/README.mdx +++ b/ui/components/component-library/form-text-field/README.mdx @@ -87,7 +87,7 @@ An example of a form using the `FormTextField` component. ```jsx import React, { useState, useEffect } from 'react'; import { - DISPLAY, + Display, TextColor, AlignItems, TextVariant, @@ -225,7 +225,7 @@ return ( error={Boolean(submitted === FORM_STATE.ERROR && errors.chainId)} helpText={submitted === FORM_STATE.ERROR ? errors.chainId : null} /> - + Submit @@ -256,7 +256,7 @@ There will be times when you will want to use a custom `Label` or `HelpText`. Th ```jsx import { Size, - DISPLAY, + Display, IconColor, AlignItems, JustifyContent, @@ -279,11 +279,11 @@ import { FormTextField component - + {/** * If you need a custom label * or require adding some form of customization @@ -314,7 +314,7 @@ import { type={TEXT_FIELD_TYPES.NUMBER} /> {label && ( @@ -102,7 +102,7 @@ export const FormTextField = ({ /> {helpText && ( { error={Boolean(submitted === FORM_STATE.ERROR && errors.chainId)} helpText={submitted === FORM_STATE.ERROR ? errors.chainId : null} /> - + Submit @@ -396,11 +396,11 @@ export const CustomLabelOrHelpText = () => ( FormTextField component - + {/* If you need a custom label or require adding some form of customization import the Label component separately */} @@ -427,7 +427,7 @@ export const CustomLabelOrHelpText = () => ( type={TEXT_FIELD_TYPES.NUMBER} /> From d5dd4fa881abca2f723ec1be0becf6b76435fa40 Mon Sep 17 00:00:00 2001 From: Ariella Vu <20778143+digiwand@users.noreply.github.com> Date: Thu, 1 Jun 2023 18:42:19 +0200 Subject: [PATCH 043/160] ConfirmTxPage: rm redundant unapprovedTxs const (#19275) * fix typo: uncofirmedTransactions -> unconfirmedTransactions * txHelper: reorganize lines and improve test * ConfirmTx: rn unconfirmedTxs->unconfirmedTxsSorted * ConfirmTx: rn unconfirmedMessages-> unconfirmedTxs * ConfirmTxPage: rm redundant unapprovedTxs const * lint: rm unused getUnapprovedTransactions --- .../confirm-transaction/confirm-transaction.component.js | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/ui/pages/confirm-transaction/confirm-transaction.component.js b/ui/pages/confirm-transaction/confirm-transaction.component.js index 16b8d502b..9d26ed3f6 100644 --- a/ui/pages/confirm-transaction/confirm-transaction.component.js +++ b/ui/pages/confirm-transaction/confirm-transaction.component.js @@ -31,7 +31,6 @@ import { import { isTokenMethodAction } from '../../helpers/utils/transactions.util'; import { usePrevious } from '../../hooks/usePrevious'; import { - getUnapprovedTransactions, unconfirmedTransactionsListSelector, unconfirmedTransactionsHashSelector, } from '../../selectors'; @@ -56,21 +55,18 @@ const ConfirmTransaction = () => { const mostRecentOverviewPage = useSelector(getMostRecentOverviewPage); const sendTo = useSelector(getSendTo); - const unapprovedTxs = useSelector(getUnapprovedTransactions); + const unconfirmedTxsSorted = useSelector(unconfirmedTransactionsListSelector); const unconfirmedTxs = useSelector(unconfirmedTransactionsHashSelector); const totalUnapproved = unconfirmedTxsSorted.length || 0; const getTransaction = useCallback(() => { return totalUnapproved - ? unapprovedTxs[paramsTransactionId] || - unconfirmedTxs[paramsTransactionId] || - unconfirmedTxsSorted[0] + ? unconfirmedTxs[paramsTransactionId] || unconfirmedTxsSorted[0] : {}; }, [ paramsTransactionId, totalUnapproved, - unapprovedTxs, unconfirmedTxs, unconfirmedTxsSorted, ]); @@ -87,7 +83,6 @@ const ConfirmTransaction = () => { getTransaction, paramsTransactionId, totalUnapproved, - unapprovedTxs, unconfirmedTxs, unconfirmedTxsSorted, ]); From 2a227c46461c8b767f6b2cad89ce347a6483cb13 Mon Sep 17 00:00:00 2001 From: rohit kerkar <129620973+rohiiittttt@users.noreply.github.com> Date: Thu, 1 Jun 2023 22:39:08 +0530 Subject: [PATCH 044/160] Part of #18714: Replacing deprecated constants in `Avatar-Favicon` folder (#19332) * sda * sad * replacing depricated constants --------- Co-authored-by: Garrett Bear --- .../component-library/avatar-favicon/avatar-favicon.js | 4 ++-- .../avatar-favicon/avatar-favicon.stories.js | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/ui/components/component-library/avatar-favicon/avatar-favicon.js b/ui/components/component-library/avatar-favicon/avatar-favicon.js index 6f83d8587..835d7033c 100644 --- a/ui/components/component-library/avatar-favicon/avatar-favicon.js +++ b/ui/components/component-library/avatar-favicon/avatar-favicon.js @@ -7,7 +7,7 @@ import { IconName, Icon } from '../icon'; import { BorderColor, Size, - DISPLAY, + Display, AlignItems, JustifyContent, IconColor, @@ -33,7 +33,7 @@ export const AvatarFavicon = React.forwardRef( ( - + @@ -62,7 +62,7 @@ export const SizeStory = (args) => ( SizeStory.storyName = 'Size'; export const Src = (args) => ( - + Date: Thu, 1 Jun 2023 16:14:38 -0500 Subject: [PATCH 045/160] Release MultiChain 0.5 (#18903) * Show portfolio icon in ETH overview * Show new copy button in QR code modal * Show address copy button in wallet overview * Update connected status component * Remove legacy MenuBar * Remove legacy ImportTokenLink * Remove AssetListItem * Remove DetectedTokensLink * Remove legacy AppHeader * Remove MULTICHAIN flag from builds.yml * Remove legacy AccountMenu * FIX: Token cell snapshot * Add data-testid for Account Picker * Remove multichain check in LoadingNetworkScreen * Remove MULTICHAIN check for AccountDetailsModal * Remove MULTICHAIN check for AssetList * Update QR dimensions * Remove MULTICHAIN declaration from metamaskrc.dist * Implement PickerNetwork and NetworkListMenu in onboarding * Remove legacy NetworkDropdown and Dropdown * Remove documentation about legacy account menu * FIX: Fixes route tests for missing data-testid=network-display * Fix account-menu-icon data-testid * Fix TokenCell test * FIX Onboarding Flow tests * Remove unused locales from AccountMenu removal * E2E: Fix Import Secret Recovery Phrase: logs out of the vault * E2E: Fix Show account details: should show the QR code for the account * E2E: Fix add-account.spec.js * E2E: Fix state-logs.spec.js * E2E: Fix lock-account.spec.js * E2E: Fix settings-general.spec.js * E2E: Fix advanced-settings.spec.js * E2E: Fix auto-lock.spec.js * E2E: Fix backup-restore.spec.js * E2E: Fix clear-activity.spec.js * E2E: Fix settings-search.spec.js * E2E: Fix encrypt-decrypt.spec.js * E2E: Fix dapp-interactions.spec.js * E2E: Fix test-snap-management.spec.js * E2E: Fix add-custom-network.spec.js * E2E: Fix from-import-ui.spec.js * E2E: Fix provider-api.spec.js * E2E: Fix chain-interactions.spec.js * E2E: Fix custom-rpc-history.spec.js * Remove network icon from overview components * E2E: Fix user-actions-benchmark.js * E2E: Fix benchmark.js * E2E: Fix add-hide-token.spec.js * E2E: Fix address-book.spec.js * E2E: Fix custom-token-add-approve.spec.js * E2E: Fix incremental-security.spec.js * E2E: Fix metamask-responsive-ui.spec.js * E2E: Onboarding.spec.js * E2E: Fix permissions.spec.js * E2E: Fix send-hex-address.spec.js * E2E: Fix send-to-contract.spec.js * Remove dead AccountOptionsMenu test * E2E: Fix token-details.spec.js * E2E: Fix switch-custom-network.spec.js * E2E: Fix metamask-ui.spec.js * Revert "UX Multichain: updated border top for activity list (#19176)" This reverts commit 15598f2a23d936d3c468a1b8849ec3baaccee4cd. * E2Es: Fix test-snap-management.spec.js and test-snap-notification.spec.js * E2Es: Fix add-account.spec.js after flaky test fixes * e2e flaky test * adds back the mmi options * scss fix * test fix * removes unnecessary double quotes * Prevent double logos on login screen * Update ui/components/ui/list-item/index.scss Co-authored-by: Nidhi Kumari --------- Co-authored-by: seaona Co-authored-by: Antonio Regadas Co-authored-by: Nidhi Kumari --- .metamaskrc.dist | 1 - app/_locales/am/messages.json | 10 - app/_locales/ar/messages.json | 10 - app/_locales/bg/messages.json | 10 - app/_locales/bn/messages.json | 10 - app/_locales/ca/messages.json | 10 - app/_locales/cs/messages.json | 7 - app/_locales/da/messages.json | 10 - app/_locales/de/messages.json | 29 - app/_locales/el/messages.json | 29 - app/_locales/en/messages.json | 34 +- app/_locales/es/messages.json | 29 - app/_locales/es_419/messages.json | 26 - app/_locales/et/messages.json | 10 - app/_locales/fa/messages.json | 10 - app/_locales/fi/messages.json | 10 - app/_locales/fil/messages.json | 10 - app/_locales/fr/messages.json | 29 - app/_locales/he/messages.json | 10 - app/_locales/hi/messages.json | 29 - app/_locales/hn/messages.json | 7 - app/_locales/hr/messages.json | 10 - app/_locales/ht/messages.json | 10 - app/_locales/hu/messages.json | 10 - app/_locales/id/messages.json | 29 - app/_locales/it/messages.json | 13 - app/_locales/ja/messages.json | 29 - app/_locales/kn/messages.json | 10 - app/_locales/ko/messages.json | 29 - app/_locales/lt/messages.json | 10 - app/_locales/lv/messages.json | 10 - app/_locales/ms/messages.json | 10 - app/_locales/nl/messages.json | 7 - app/_locales/no/messages.json | 10 - app/_locales/ph/messages.json | 13 - app/_locales/pl/messages.json | 10 - app/_locales/pt/messages.json | 29 - app/_locales/pt_BR/messages.json | 26 - app/_locales/ro/messages.json | 10 - app/_locales/ru/messages.json | 29 - app/_locales/sk/messages.json | 10 - app/_locales/sl/messages.json | 10 - app/_locales/sr/messages.json | 10 - app/_locales/sv/messages.json | 10 - app/_locales/sw/messages.json | 10 - app/_locales/ta/messages.json | 7 - app/_locales/th/messages.json | 7 - app/_locales/tl/messages.json | 29 - app/_locales/tr/messages.json | 29 - app/_locales/uk/messages.json | 10 - app/_locales/vi/messages.json | 29 - app/_locales/zh_CN/messages.json | 29 - app/_locales/zh_TW/messages.json | 13 - builds.yml | 1 - .../files-to-convert.json | 4 - docs/components/account-menu.md | 16 - test/e2e/benchmark.js | 2 +- test/e2e/helpers.js | 10 +- test/e2e/metamask-ui.spec.js | 12 +- test/e2e/snaps/test-snap-management.spec.js | 18 +- test/e2e/snaps/test-snap-notification.spec.js | 12 +- test/e2e/tests/account-details.spec.js | 7 +- test/e2e/tests/add-account.spec.js | 83 ++- test/e2e/tests/add-custom-network.spec.js | 38 +- test/e2e/tests/add-hide-token.spec.js | 10 +- test/e2e/tests/address-book.spec.js | 8 +- test/e2e/tests/advanced-settings.spec.js | 4 +- test/e2e/tests/auto-lock.spec.js | 4 +- test/e2e/tests/backup-restore.spec.js | 8 +- test/e2e/tests/chain-interactions.spec.js | 9 +- test/e2e/tests/clear-activity.spec.js | 9 +- test/e2e/tests/custom-rpc-history.spec.js | 26 +- .../tests/custom-token-add-approve.spec.js | 9 +- test/e2e/tests/dapp-interactions.spec.js | 12 +- test/e2e/tests/encrypt-decrypt.spec.js | 1 - test/e2e/tests/from-import-ui.spec.js | 132 ++-- test/e2e/tests/incremental-security.spec.js | 16 +- test/e2e/tests/lock-account.spec.js | 12 +- test/e2e/tests/metamask-responsive-ui.spec.js | 2 +- test/e2e/tests/onboarding.spec.js | 5 +- test/e2e/tests/permissions.spec.js | 4 +- test/e2e/tests/provider-api.spec.js | 2 +- test/e2e/tests/send-hex-address.spec.js | 16 +- test/e2e/tests/send-to-contract.spec.js | 4 +- test/e2e/tests/settings-general.spec.js | 4 +- test/e2e/tests/settings-search.spec.js | 36 +- test/e2e/tests/state-logs.spec.js | 4 +- test/e2e/tests/switch-custom-network.spec.js | 2 +- test/e2e/tests/token-details.spec.js | 2 +- test/e2e/user-actions-benchmark.js | 6 +- .../__snapshots__/account-menu.test.js.snap | 400 ------------ .../account-menu/account-menu.component.js | 617 ------------------ .../account-menu/account-menu.container.js | 81 --- .../app/account-menu/account-menu.test.js | 208 ------ ui/components/app/account-menu/index.js | 1 - ui/components/app/account-menu/index.scss | 291 --------- .../app/account-menu/keyring-label.js | 56 -- ui/components/app/app-components.scss | 6 - .../__snapshots__/app-header.test.js.snap | 301 --------- .../app/app-header/app-header.component.js | 195 ------ .../app/app-header/app-header.container.js | 76 --- .../app/app-header/app-header.stories.js | 25 - .../app/app-header/app-header.test.js | 182 ------ ui/components/app/app-header/index.js | 1 - ui/components/app/app-header/index.scss | 122 ---- .../app/asset-list-item/asset-list-item.js | 179 ----- .../app/asset-list-item/asset-list-item.scss | 75 --- .../asset-list-item.stories.js | 51 -- ui/components/app/asset-list-item/index.js | 1 - ui/components/app/asset-list/asset-list.js | 84 +-- .../detected-tokens-link.js | 66 -- .../detected-tokens-link.stories.js | 28 - .../detected-tokens-link.test.js | 32 - .../detected-tokens-link/index.scss | 5 - .../connected-status-indicator.js | 39 +- .../__snapshots__/dropdown.test.js.snap | 12 - ui/components/app/dropdowns/dropdown.js | 106 --- ui/components/app/dropdowns/dropdown.test.js | 31 - .../app/dropdowns/network-dropdown.js | 464 ------------- .../app/dropdowns/network-dropdown.test.js | 186 ------ .../import-token-link.test.js.snap | 53 -- .../import-token-link.component.js | 72 -- .../import-token-link.test.js | 95 --- ui/components/app/import-token-link/index.js | 1 - .../app/import-token-link/index.scss | 8 - .../loading-network-screen.container.js | 5 +- .../app/menu-bar/account-options-menu.js | 225 ------- .../menu-bar/account-options-menu.stories.js | 19 - .../app/menu-bar/account-options-menu.test.js | 104 --- ui/components/app/menu-bar/index.js | 1 - ui/components/app/menu-bar/index.scss | 42 -- ui/components/app/menu-bar/menu-bar.js | 101 --- ui/components/app/menu-bar/menu-bar.test.js | 142 ---- .../__snapshots__/token-cell.test.js.snap | 133 ++-- ui/components/app/token-cell/token-cell.js | 78 +-- .../app/token-cell/token-cell.test.js | 2 +- .../transaction-list-item.component.js | 2 - .../app/wallet-overview/eth-overview.js | 69 +- .../app/wallet-overview/token-overview.js | 4 - .../app/wallet-overview/wallet-overview.js | 14 +- .../account-list-item-menu.js | 49 ++ .../account-list-item-menu.stories.js | 2 +- .../account-list-menu/account-list-menu.js | 1 + .../__snapshots__/account-picker.test.js.snap | 1 + .../account-picker/account-picker.js | 1 + .../__snapshots__/app-header.test.js.snap | 1 + .../multichain/app-header/app-header.js | 56 +- .../multichain/app-header/app-header.scss | 27 + .../multichain/app-header/app-header.test.js | 1 + .../multichain/global-menu/global-menu.js | 1 + .../multichain-token-list-item.test.js.snap | 1 + .../multichain-token-list-item.js | 5 +- .../network-list-menu/network-list-menu.js | 19 +- .../list-item.component.test.js.snap | 4 +- ui/components/ui/list-item/index.scss | 4 - .../ui/list-item/list-item.component.js | 5 - ui/components/ui/qr-code/qr-code.js | 64 +- ui/pages/home/home.component.js | 14 +- .../onboarding-flow/onboarding-flow.test.js | 5 + .../privacy-settings/privacy-settings.js | 42 +- ui/pages/routes/routes.component.js | 27 +- ui/pages/routes/routes.component.test.js | 4 + 162 files changed, 649 insertions(+), 6163 deletions(-) delete mode 100644 docs/components/account-menu.md delete mode 100644 ui/components/app/account-menu/__snapshots__/account-menu.test.js.snap delete mode 100644 ui/components/app/account-menu/account-menu.component.js delete mode 100644 ui/components/app/account-menu/account-menu.container.js delete mode 100644 ui/components/app/account-menu/account-menu.test.js delete mode 100644 ui/components/app/account-menu/index.js delete mode 100644 ui/components/app/account-menu/index.scss delete mode 100644 ui/components/app/account-menu/keyring-label.js delete mode 100644 ui/components/app/app-header/__snapshots__/app-header.test.js.snap delete mode 100644 ui/components/app/app-header/app-header.component.js delete mode 100644 ui/components/app/app-header/app-header.container.js delete mode 100644 ui/components/app/app-header/app-header.stories.js delete mode 100644 ui/components/app/app-header/app-header.test.js delete mode 100644 ui/components/app/app-header/index.js delete mode 100644 ui/components/app/app-header/index.scss delete mode 100644 ui/components/app/asset-list-item/asset-list-item.js delete mode 100644 ui/components/app/asset-list-item/asset-list-item.scss delete mode 100644 ui/components/app/asset-list-item/asset-list-item.stories.js delete mode 100644 ui/components/app/asset-list-item/index.js delete mode 100644 ui/components/app/asset-list/detected-tokens-link/detected-tokens-link.js delete mode 100644 ui/components/app/asset-list/detected-tokens-link/detected-tokens-link.stories.js delete mode 100644 ui/components/app/asset-list/detected-tokens-link/detected-tokens-link.test.js delete mode 100644 ui/components/app/asset-list/detected-tokens-link/index.scss delete mode 100644 ui/components/app/dropdowns/__snapshots__/dropdown.test.js.snap delete mode 100644 ui/components/app/dropdowns/dropdown.js delete mode 100644 ui/components/app/dropdowns/dropdown.test.js delete mode 100644 ui/components/app/dropdowns/network-dropdown.js delete mode 100644 ui/components/app/dropdowns/network-dropdown.test.js delete mode 100644 ui/components/app/import-token-link/__snapshots__/import-token-link.test.js.snap delete mode 100644 ui/components/app/import-token-link/import-token-link.component.js delete mode 100644 ui/components/app/import-token-link/import-token-link.test.js delete mode 100644 ui/components/app/import-token-link/index.js delete mode 100644 ui/components/app/import-token-link/index.scss delete mode 100644 ui/components/app/menu-bar/account-options-menu.js delete mode 100644 ui/components/app/menu-bar/account-options-menu.stories.js delete mode 100644 ui/components/app/menu-bar/account-options-menu.test.js delete mode 100644 ui/components/app/menu-bar/index.js delete mode 100644 ui/components/app/menu-bar/index.scss delete mode 100644 ui/components/app/menu-bar/menu-bar.js delete mode 100644 ui/components/app/menu-bar/menu-bar.test.js diff --git a/.metamaskrc.dist b/.metamaskrc.dist index d00289cdb..0e0bc421e 100644 --- a/.metamaskrc.dist +++ b/.metamaskrc.dist @@ -9,7 +9,6 @@ INFURA_PROJECT_ID=00000000000 ;SWAPS_USE_DEV_APIS= ;PORTFOLIO_URL= ;TRANSACTION_SECURITY_PROVIDER= -;MULTICHAIN= ; Set this to test changes to the phishing warning page. ;PHISHING_WARNING_PAGE_URL= diff --git a/app/_locales/am/messages.json b/app/_locales/am/messages.json index c7bb730e5..0235cf116 100644 --- a/app/_locales/am/messages.json +++ b/app/_locales/am/messages.json @@ -148,9 +148,6 @@ "connect": { "message": "ይገናኙ" }, - "connectHardwareWallet": { - "message": "ከሃርድዌር ቋት ጋር ይገናኙ" - }, "connectingTo": { "message": "ከ $1ጋር መገናኘት" }, @@ -187,9 +184,6 @@ "create": { "message": "ፍጠር" }, - "createAccount": { - "message": "መለያ ፍጠር" - }, "createPassword": { "message": "የይለፍ ቃል ፍጠር" }, @@ -798,10 +792,6 @@ "transferFrom": { "message": "የማዛወሪያ ቅጽ" }, - "troubleTokenBalances": { - "message": "የተለዋጭ ስም ቀሪ ሂሳብዎን ስንጭን ችግር አጋጥሞናል። ማየት ይችላሉ", - "description": "Followed by a link (here) to view token balances" - }, "tryAgain": { "message": "እንደገና ሞክር" }, diff --git a/app/_locales/ar/messages.json b/app/_locales/ar/messages.json index 392d7fdfa..28b43b109 100644 --- a/app/_locales/ar/messages.json +++ b/app/_locales/ar/messages.json @@ -158,9 +158,6 @@ "connect": { "message": "اتصال" }, - "connectHardwareWallet": { - "message": "ربط محفظة الأجهزة" - }, "connectingTo": { "message": "جارِ الاتصال بـ $1" }, @@ -197,9 +194,6 @@ "create": { "message": "إنشاء" }, - "createAccount": { - "message": "إنشاء حساب" - }, "createPassword": { "message": "إنشاء كلمة مرور" }, @@ -810,10 +804,6 @@ "transferFrom": { "message": "التحويل من" }, - "troubleTokenBalances": { - "message": "واجهتنا مشكلة في تحميل أرصدتك من العملات الرمزية. يمكنك الاطلاع عليها", - "description": "Followed by a link (here) to view token balances" - }, "tryAgain": { "message": "إعادة المحاولة" }, diff --git a/app/_locales/bg/messages.json b/app/_locales/bg/messages.json index e4ce863f5..fd311ee6f 100644 --- a/app/_locales/bg/messages.json +++ b/app/_locales/bg/messages.json @@ -154,9 +154,6 @@ "connect": { "message": "Свързване" }, - "connectHardwareWallet": { - "message": "Свържете хардуерен портфейл" - }, "connectingTo": { "message": "Свързване с $1" }, @@ -193,9 +190,6 @@ "create": { "message": "Създаване" }, - "createAccount": { - "message": "Създай акаунт" - }, "createPassword": { "message": "Създаване на парола" }, @@ -809,10 +803,6 @@ "transferFrom": { "message": "Трансфер от" }, - "troubleTokenBalances": { - "message": "Имахме проблеми със зареждането на вашите символи. Можете да ги видите", - "description": "Followed by a link (here) to view token balances" - }, "tryAgain": { "message": "Нов опит" }, diff --git a/app/_locales/bn/messages.json b/app/_locales/bn/messages.json index 6ba3e132d..0dacc812d 100644 --- a/app/_locales/bn/messages.json +++ b/app/_locales/bn/messages.json @@ -154,9 +154,6 @@ "connect": { "message": "সংযুক্ত করুন" }, - "connectHardwareWallet": { - "message": "হার্ডওয়্যার ওয়ালেট সংযুক্ত করুন" - }, "connectingTo": { "message": " $1 এর সাথে সংযোগ করছে" }, @@ -190,9 +187,6 @@ "create": { "message": "তৈরি করুন" }, - "createAccount": { - "message": "অ্যাকাউন্ট তৈরি করুন" - }, "createPassword": { "message": "পাসওয়ার্ড তৈরি করুন" }, @@ -807,10 +801,6 @@ "transferFrom": { "message": "থেকে ট্রান্সফার করুন" }, - "troubleTokenBalances": { - "message": "আপনার টোকেন ব্যালেন্সগুলি লোড করতে আমাদের সমস্যা হয়েছিল। আপনি সেগুলি দেখতে পারেন", - "description": "Followed by a link (here) to view token balances" - }, "tryAgain": { "message": "আবার করুন" }, diff --git a/app/_locales/ca/messages.json b/app/_locales/ca/messages.json index ab1da7841..d8964e540 100644 --- a/app/_locales/ca/messages.json +++ b/app/_locales/ca/messages.json @@ -151,9 +151,6 @@ "connect": { "message": "Connecta" }, - "connectHardwareWallet": { - "message": "Connectar Moneder Hardaware" - }, "connectingTo": { "message": "Connectant a $1 " }, @@ -190,9 +187,6 @@ "create": { "message": "Crea" }, - "createAccount": { - "message": "Crea " - }, "createPassword": { "message": "Crear Contrasenya" }, @@ -785,10 +779,6 @@ "transferFrom": { "message": "Transferir Des de" }, - "troubleTokenBalances": { - "message": "Hem tingut problemes en carregar el teu saldo de fitxes. Els pots veure", - "description": "Followed by a link (here) to view token balances" - }, "tryAgain": { "message": "Torna-ho a provar" }, diff --git a/app/_locales/cs/messages.json b/app/_locales/cs/messages.json index 3b82640c9..2b6cb9a3f 100644 --- a/app/_locales/cs/messages.json +++ b/app/_locales/cs/messages.json @@ -81,9 +81,6 @@ "create": { "message": "Vytvořit" }, - "createAccount": { - "message": "Vytvořit účet" - }, "customToken": { "message": "Vlastní token" }, @@ -364,10 +361,6 @@ "transactionError": { "message": "Chyba transakce. Vyhozena výjimka v kódu kontraktu." }, - "troubleTokenBalances": { - "message": "Měli jsme problém s načtením vašich tokenových zůstatků. Můžete je vidět ", - "description": "Followed by a link (here) to view token balances" - }, "typePassword": { "message": "Zadejte své heslo" }, diff --git a/app/_locales/da/messages.json b/app/_locales/da/messages.json index 733b31dab..dde18bd24 100644 --- a/app/_locales/da/messages.json +++ b/app/_locales/da/messages.json @@ -154,9 +154,6 @@ "connect": { "message": "Få forbindelse" }, - "connectHardwareWallet": { - "message": "Forbind Hardwarepung" - }, "connectingTo": { "message": "Forbinder til $1" }, @@ -193,9 +190,6 @@ "create": { "message": "Opret" }, - "createAccount": { - "message": "Opret konto" - }, "createPassword": { "message": "Opret adgangskode" }, @@ -782,10 +776,6 @@ "transferFrom": { "message": "Overfør fra" }, - "troubleTokenBalances": { - "message": "Vi havde problemer med at indlæse dine tokenbalancer. Du kan se dem", - "description": "Followed by a link (here) to view token balances" - }, "tryAgain": { "message": "Prøv igen" }, diff --git a/app/_locales/de/messages.json b/app/_locales/de/messages.json index e2188a54b..e42405107 100644 --- a/app/_locales/de/messages.json +++ b/app/_locales/de/messages.json @@ -642,9 +642,6 @@ "connectAccountOrCreate": { "message": "Konto verbinden oder Neues erstellen" }, - "connectHardwareWallet": { - "message": "Hardware-Wallet verknüpfen" - }, "connectManually": { "message": "Manuelle Verbindung zur aktuellen Site" }, @@ -789,9 +786,6 @@ "create": { "message": "Erstellen" }, - "createAccount": { - "message": "Konto erstellen" - }, "createNewWallet": { "message": "Eine neue Wallet erstellen" }, @@ -1636,9 +1630,6 @@ "importTokenWarning": { "message": "Jeder kann ein Token mit beliebigem Namen erstellen, einschließlich gefälschter Versionen bestehender Token. Hinzufügen und Handeln auf eigene Gefahr!" }, - "importTokens": { - "message": "Token importieren" - }, "importTokensCamelCase": { "message": "Token importieren" }, @@ -1990,9 +1981,6 @@ "missingSettingRequest": { "message": "Hier anfragen" }, - "missingToken": { - "message": "Sie sehen Ihren Token nicht?" - }, "moreComingSoon": { "message": "Mehr in Kürze ..." }, @@ -2235,9 +2223,6 @@ "notEnoughGas": { "message": "Nicht genügend Gas" }, - "notifications": { - "message": "Benachrichtigungen" - }, "notifications10ActionText": { "message": "Einstellungen ansehen", "description": "The 'call to action' on the button, or link, of the 'Visit in Settings' notification. Upon clicking, users will be taken to Settings page." @@ -3214,9 +3199,6 @@ "showHexDataDescription": { "message": "Wählen Sie dies aus, um das Hexdatenfeld auf dem Senden-Bildschirm anzuzeigen" }, - "showHide": { - "message": "Ein-/Ausblenden" - }, "showIncomingTransactions": { "message": "Eingehende Transaktionen anzeigen" }, @@ -3416,9 +3398,6 @@ "status": { "message": "Status" }, - "statusConnected": { - "message": "Verbinden" - }, "statusNotConnected": { "message": "Nicht verbunden" }, @@ -3923,10 +3902,6 @@ "toggleEthSignField": { "message": "eth_sign-Anfragen ein- oder ausschalten" }, - "toggleTestNetworks": { - "message": "$1 Test-Netzwerke", - "description": "$1 is a clickable link with text defined by the 'showHide' key. The link will open Settings > Advanced where users can enable the display of test networks in the network dropdown." - }, "token": { "message": "Token" }, @@ -4106,10 +4081,6 @@ "troubleStarting": { "message": "Beim Starten von MetaMask ist ein Problem aufgetreten. Dies könnte ein vorübergehendes Problem sein. Versuchen Sie daher, die Erweiterung neu zu starten." }, - "troubleTokenBalances": { - "message": "Wir haben Schwierigkeiten dein Tokenguthaben zu laden. Du kannst es hier anzeigen lassen", - "description": "Followed by a link (here) to view token balances" - }, "trustSiteApprovePermission": { "message": "Durch Erteilung der Erlaubnis erlauben Sie den folgenden $1 Zugriff auf Ihr Guthaben" }, diff --git a/app/_locales/el/messages.json b/app/_locales/el/messages.json index 6e7732aa3..85c862b31 100644 --- a/app/_locales/el/messages.json +++ b/app/_locales/el/messages.json @@ -642,9 +642,6 @@ "connectAccountOrCreate": { "message": "Σύνδεση λογαριασμού ή δημιουργία νέου" }, - "connectHardwareWallet": { - "message": "Σύνδεση Πορτοφολιού Υλικού" - }, "connectManually": { "message": "Χειροκίνητη σύνδεση στον τρέχοντα ιστότοπο" }, @@ -789,9 +786,6 @@ "create": { "message": "Δημιουργία" }, - "createAccount": { - "message": "Δημιουργία Λογαριασμού" - }, "createNewWallet": { "message": "Δημιουργήστε ένα νέο πορτοφόλι" }, @@ -1636,9 +1630,6 @@ "importTokenWarning": { "message": "Ο καθένας μπορεί να δημιουργήσει ένα token με οποιοδήποτε όνομα, συμπεριλαμβανομένων ψεύτικων εκδόσεων των υφιστάμενων νομισμάτων. Προσθέστε και ανταλλάξτε με δική σας ευθύνη!" }, - "importTokens": { - "message": "εισαγωγή token" - }, "importTokensCamelCase": { "message": "Εισαγωγή Token" }, @@ -1990,9 +1981,6 @@ "missingSettingRequest": { "message": "Υποβάλετε αίτημα εδώ" }, - "missingToken": { - "message": "Δεν βλέπετε το token σας;" - }, "moreComingSoon": { "message": "Περισσότερα έρχονται σύντομα..." }, @@ -2235,9 +2223,6 @@ "notEnoughGas": { "message": "Δεν Υπάρχει Αρκετό τέλος συναλλαγής" }, - "notifications": { - "message": "Ειδοποιήσεις" - }, "notifications10ActionText": { "message": "Μετάβαση στις Ρυθμίσεις", "description": "The 'call to action' on the button, or link, of the 'Visit in Settings' notification. Upon clicking, users will be taken to Settings page." @@ -3211,9 +3196,6 @@ "showHexDataDescription": { "message": "Επιλέξτε αυτό για να εμφανίσετε το πεδίο hex δεδομένων στην οθόνη αποστολής" }, - "showHide": { - "message": "Εμφάνιση/απόκρυψη" - }, "showIncomingTransactions": { "message": "Εμφάνιση Εισερχομένων Συναλλαγών" }, @@ -3413,9 +3395,6 @@ "status": { "message": "Κατάσταση" }, - "statusConnected": { - "message": "Συνδεδεμένο" - }, "statusNotConnected": { "message": "Δεν έχει συνδεθεί" }, @@ -3920,10 +3899,6 @@ "toggleEthSignField": { "message": "Εναλλαγή αιτημάτων eth_sign" }, - "toggleTestNetworks": { - "message": "$1 δοκιμαστικά δίκτυα", - "description": "$1 is a clickable link with text defined by the 'showHide' key. The link will open Settings > Advanced where users can enable the display of test networks in the network dropdown." - }, "token": { "message": "Διακριτικό" }, @@ -4103,10 +4078,6 @@ "troubleStarting": { "message": "Το MetaMask αντιμετώπισε πρόβλημα κατά την εκκίνηση. Αυτό το σφάλμα μπορεί να είναι τυχαίο, γι' αυτό προσπαθήστε να επανεκκινήσετε την επέκταση." }, - "troubleTokenBalances": { - "message": "Είχαμε πρόβλημα να φορτώσουμε τα υπόλοιπα του διακριτικού σας. Μπορείτε να τα δείτε ", - "description": "Followed by a link (here) to view token balances" - }, "trustSiteApprovePermission": { "message": "Χορηγώντας άδεια, επιτρέπετε στα ακόλουθα $1 να έχουν πρόσβαση στα χρήματά σας" }, diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index df2552bb0..da0872014 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -745,9 +745,6 @@ "connectCustodialAccountTitle": { "message": "Custodial Accounts" }, - "connectHardwareWallet": { - "message": "Connect hardware wallet" - }, "connectManually": { "message": "Manually connect to current site" }, @@ -895,9 +892,6 @@ "create": { "message": "Create" }, - "createAccount": { - "message": "Create account" - }, "createNewWallet": { "message": "Create a new wallet" }, @@ -1798,7 +1792,9 @@ "message": "full access to your wallet and funds.", "description": "Is the bolded text in 'holdToRevealContentPrivateKey2'" }, - "holdToRevealLockedLabel": { "message": "hold to reveal circle locked" }, + "holdToRevealLockedLabel": { + "message": "hold to reveal circle locked" + }, "holdToRevealPrivateKey": { "message": "Hold to reveal Private Key" }, @@ -1811,7 +1807,9 @@ "holdToRevealSRPTitle": { "message": "Keep your SRP safe" }, - "holdToRevealUnlockedLabel": { "message": "hold to reveal circle unlocked" }, + "holdToRevealUnlockedLabel": { + "message": "hold to reveal circle unlocked" + }, "id": { "message": "Id" }, @@ -1879,9 +1877,6 @@ "importTokenWarning": { "message": "Anyone can create a token with any name, including fake versions of existing tokens. Add and trade at your own risk!" }, - "importTokens": { - "message": "import tokens" - }, "importTokensCamelCase": { "message": "Import tokens" }, @@ -2262,9 +2257,6 @@ "missingSettingRequest": { "message": "Request here" }, - "missingToken": { - "message": "Don't see your token?" - }, "mmiAddToken": { "message": "The page at $1 would like to authorise the following custodian token in MetaMask Institutional" }, @@ -3715,9 +3707,6 @@ "showHexDataDescription": { "message": "Select this to show the hex data field on the send screen" }, - "showHide": { - "message": "Show/hide" - }, "showIncomingTransactions": { "message": "Show incoming transactions" }, @@ -3984,9 +3973,6 @@ "status": { "message": "Status" }, - "statusConnected": { - "message": "Connected" - }, "statusNotConnected": { "message": "Not connected" }, @@ -4556,10 +4542,6 @@ "toggleEthSignOn": { "message": "ON (Not recommended)" }, - "toggleTestNetworks": { - "message": "$1 test networks", - "description": "$1 is a clickable link with text defined by the 'showHide' key. The link will open Settings > Advanced where users can enable the display of test networks in the network dropdown." - }, "token": { "message": "Token" }, @@ -4770,10 +4752,6 @@ "troubleStarting": { "message": "MetaMask had trouble starting. This error could be intermittent, so try restarting the extension." }, - "troubleTokenBalances": { - "message": "We had trouble loading your token balances. You can view them ", - "description": "Followed by a link (here) to view token balances" - }, "trustSiteApprovePermission": { "message": "By granting permission, you are allowing the following $1 to access your funds" }, diff --git a/app/_locales/es/messages.json b/app/_locales/es/messages.json index ed4a75cfe..8a406e5fb 100644 --- a/app/_locales/es/messages.json +++ b/app/_locales/es/messages.json @@ -642,9 +642,6 @@ "connectAccountOrCreate": { "message": "Conectar cuenta o crear nueva" }, - "connectHardwareWallet": { - "message": "Conectar la cartera de hardware" - }, "connectManually": { "message": "Conectarse manualmente al sitio actual" }, @@ -789,9 +786,6 @@ "create": { "message": "Crear" }, - "createAccount": { - "message": "Crear cuenta" - }, "createNewWallet": { "message": "Crear una cartera nueva" }, @@ -1636,9 +1630,6 @@ "importTokenWarning": { "message": "Toda persona puede crear un token con cualquier nombre, incluso versiones falsas de tokens existentes. ¡Agréguelo y realice transacciones bajo su propio riesgo!" }, - "importTokens": { - "message": "agregar activo" - }, "importTokensCamelCase": { "message": "Importar tokens" }, @@ -1990,9 +1981,6 @@ "missingSettingRequest": { "message": "Solicítelo aquí" }, - "missingToken": { - "message": "¿No ve su token?" - }, "moreComingSoon": { "message": "Más próximamente..." }, @@ -2235,9 +2223,6 @@ "notEnoughGas": { "message": "No hay gas suficiente" }, - "notifications": { - "message": "Notificaciones" - }, "notifications10ActionText": { "message": "Ir a configuración", "description": "The 'call to action' on the button, or link, of the 'Visit in Settings' notification. Upon clicking, users will be taken to Settings page." @@ -3214,9 +3199,6 @@ "showHexDataDescription": { "message": "Seleccione esta opción para mostrar el campo de datos hexadecimales en la pantalla de envío" }, - "showHide": { - "message": "Mostrar/ocultar" - }, "showIncomingTransactions": { "message": "Mostrar transacciones entrantes" }, @@ -3416,9 +3398,6 @@ "status": { "message": "Estado" }, - "statusConnected": { - "message": "Conectado" - }, "statusNotConnected": { "message": "No conectado" }, @@ -3923,10 +3902,6 @@ "toggleEthSignField": { "message": "Alternar solicitudes de eth_sign" }, - "toggleTestNetworks": { - "message": "$1 redes de prueba", - "description": "$1 is a clickable link with text defined by the 'showHide' key. The link will open Settings > Advanced where users can enable the display of test networks in the network dropdown." - }, "token": { "message": "Token" }, @@ -4106,10 +4081,6 @@ "troubleStarting": { "message": "MetaMask tuvo problemas para iniciar. Este error podría ser intermitente, así que intente reiniciar la extensión." }, - "troubleTokenBalances": { - "message": "Tuvimos problemas al cargar los saldos de token. Puede verlos ", - "description": "Followed by a link (here) to view token balances" - }, "trustSiteApprovePermission": { "message": "Al conceder el permiso, usted permite que los siguientes $1 tengan acceso a sus fondos" }, diff --git a/app/_locales/es_419/messages.json b/app/_locales/es_419/messages.json index b53e151f5..c5c54cfd0 100644 --- a/app/_locales/es_419/messages.json +++ b/app/_locales/es_419/messages.json @@ -389,9 +389,6 @@ "connectAccountOrCreate": { "message": "Conectar cuenta o crear nueva" }, - "connectHardwareWallet": { - "message": "Conectar la cartera de hardware" - }, "connectManually": { "message": "Conectarse manualmente al sitio actual" }, @@ -499,9 +496,6 @@ "create": { "message": "Crear" }, - "createAccount": { - "message": "Crear cuenta" - }, "createNewWallet": { "message": "Crear una nueva cartera" }, @@ -1091,9 +1085,6 @@ "importTokenWarning": { "message": "Toda persona puede crear un token con cualquier nombre, incluso versiones falsas de tokens existentes. ¡Agréguelo y realice transacciones bajo su propio riesgo!" }, - "importTokens": { - "message": "importar tokens" - }, "importTokensCamelCase": { "message": "Importar tokens" }, @@ -1351,9 +1342,6 @@ "missingNFT": { "message": "¿No ve su NFT?" }, - "missingToken": { - "message": "¿No ve su token?" - }, "mustSelectOne": { "message": "Debe seleccionar al menos 1 token." }, @@ -2064,9 +2052,6 @@ "showHexDataDescription": { "message": "Seleccione esta opción para mostrar el campo de datos hexadecimales en la pantalla de envío" }, - "showHide": { - "message": "Mostrar/ocultar" - }, "showIncomingTransactions": { "message": "Mostrar transacciones entrantes" }, @@ -2168,9 +2153,6 @@ "stateLogsDescription": { "message": "Los registros de estado contienen sus direcciones de cuentas públicas y las transacciones enviadas." }, - "statusConnected": { - "message": "Conectado" - }, "statusNotConnected": { "message": "No conectado" }, @@ -2549,10 +2531,6 @@ "message": "Para: $1", "description": "$1 is the address to include in the To label. It is typically shortened first using shortenAddress" }, - "toggleTestNetworks": { - "message": "$1 redes de prueba", - "description": "$1 is a clickable link with text defined by the 'showHide' key. The link will open Settings > Advanced where users can enable the display of test networks in the network dropdown." - }, "token": { "message": "Token" }, @@ -2692,10 +2670,6 @@ "message": "Tuvimos problemas al conectar su $1. Pruebe revisar $2 e inténtelo de nuevo.", "description": "$1 is the wallet device name; $2 is a link to wallet connection guide" }, - "troubleTokenBalances": { - "message": "Tuvimos problemas al cargar los saldos de token. Puede verlos ", - "description": "Followed by a link (here) to view token balances" - }, "trustSiteApprovePermission": { "message": "Al conceder el permiso, usted permite que los siguientes $1 tengan acceso a sus fondos" }, diff --git a/app/_locales/et/messages.json b/app/_locales/et/messages.json index f9a64457e..5cd0e5978 100644 --- a/app/_locales/et/messages.json +++ b/app/_locales/et/messages.json @@ -154,9 +154,6 @@ "connect": { "message": "Ühendamine" }, - "connectHardwareWallet": { - "message": "Ühendage riistvara rahakott" - }, "connectingTo": { "message": "Ühenduse loomine $1" }, @@ -193,9 +190,6 @@ "create": { "message": "Loo" }, - "createAccount": { - "message": "Loo konto" - }, "createPassword": { "message": "Loo parool" }, @@ -803,10 +797,6 @@ "transferFrom": { "message": "Ülekandmine asukohast" }, - "troubleTokenBalances": { - "message": "Teie loasaldode laadimisega oli probleem. Saate neid vaadata", - "description": "Followed by a link (here) to view token balances" - }, "tryAgain": { "message": "Proovi uuesti" }, diff --git a/app/_locales/fa/messages.json b/app/_locales/fa/messages.json index 6d61ed44d..8bf51ba0f 100644 --- a/app/_locales/fa/messages.json +++ b/app/_locales/fa/messages.json @@ -154,9 +154,6 @@ "connect": { "message": "اتصال" }, - "connectHardwareWallet": { - "message": "اتصال کیف سخت افزار" - }, "connectingTo": { "message": "در حال اتصال به 1$1" }, @@ -193,9 +190,6 @@ "create": { "message": "ایجاد" }, - "createAccount": { - "message": "ایجاد حساب" - }, "createPassword": { "message": "ایجاد رمز عبور" }, @@ -813,10 +807,6 @@ "transferFrom": { "message": "انتقال از" }, - "troubleTokenBalances": { - "message": "ما در بارگیری صورت حساب های رمزیاب تان دچار مشکل شدیم. شما میتوانید آنها را مشاهده کنید", - "description": "Followed by a link (here) to view token balances" - }, "tryAgain": { "message": "امتحان مجدد" }, diff --git a/app/_locales/fi/messages.json b/app/_locales/fi/messages.json index 0cea114d6..8d5109853 100644 --- a/app/_locales/fi/messages.json +++ b/app/_locales/fi/messages.json @@ -154,9 +154,6 @@ "connect": { "message": "Muodosta yhteys" }, - "connectHardwareWallet": { - "message": "Yhdistä laitteistokukkaro" - }, "connectingTo": { "message": "Yhdistetään summaan $1 " }, @@ -193,9 +190,6 @@ "create": { "message": "Luo" }, - "createAccount": { - "message": "Luo tili" - }, "createPassword": { "message": "Luo salasana" }, @@ -810,10 +804,6 @@ "transferFrom": { "message": "Siirto kohteesta" }, - "troubleTokenBalances": { - "message": "Kohtasimme ongelmia ladatessamme tietuesaldojasi. Voit katsella niitä kohteessa", - "description": "Followed by a link (here) to view token balances" - }, "tryAgain": { "message": "Yritä uudelleen" }, diff --git a/app/_locales/fil/messages.json b/app/_locales/fil/messages.json index 3f7d43347..cc9bced09 100644 --- a/app/_locales/fil/messages.json +++ b/app/_locales/fil/messages.json @@ -133,9 +133,6 @@ "connect": { "message": "Kumonekta" }, - "connectHardwareWallet": { - "message": "Magkonekta ng Hardware Wallet" - }, "connectingTo": { "message": "Kumokonekta sa $1" }, @@ -172,9 +169,6 @@ "create": { "message": "Gumawa" }, - "createAccount": { - "message": "Gumawa ng Account" - }, "createPassword": { "message": "Gumawa ng Password" }, @@ -725,10 +719,6 @@ "transferFrom": { "message": "I-transfer Mula Sa" }, - "troubleTokenBalances": { - "message": "Nagkaroon kami ng problema sa pag-loading sa iyong mga token balance. Makikita mo ang mga iyon ", - "description": "Followed by a link (here) to view token balances" - }, "tryAgain": { "message": "Subukang muli" }, diff --git a/app/_locales/fr/messages.json b/app/_locales/fr/messages.json index 253c30a8b..296b7e9fd 100644 --- a/app/_locales/fr/messages.json +++ b/app/_locales/fr/messages.json @@ -642,9 +642,6 @@ "connectAccountOrCreate": { "message": "Connecter un compte ou en créer un nouveau" }, - "connectHardwareWallet": { - "message": "Connecter un portefeuille matériel" - }, "connectManually": { "message": "Se connecter manuellement au site actuel" }, @@ -789,9 +786,6 @@ "create": { "message": "Créer" }, - "createAccount": { - "message": "Créer un compte" - }, "createNewWallet": { "message": "Créer un nouveau portefeuille" }, @@ -1636,9 +1630,6 @@ "importTokenWarning": { "message": "Tout un chacun peut créer un jeton avec n’importe quel nom, y compris de fausses versions de jetons existants. Ajoutez et échangez avec prudence !" }, - "importTokens": { - "message": "importer des jetons" - }, "importTokensCamelCase": { "message": "Importer des jetons" }, @@ -1990,9 +1981,6 @@ "missingSettingRequest": { "message": "Demandez ici" }, - "missingToken": { - "message": "Vous ne voyez pas votre jeton ?" - }, "moreComingSoon": { "message": "D’autres à venir..." }, @@ -2235,9 +2223,6 @@ "notEnoughGas": { "message": "Pas assez de gaz" }, - "notifications": { - "message": "Notifications" - }, "notifications10ActionText": { "message": "Ouvrir les paramètres", "description": "The 'call to action' on the button, or link, of the 'Visit in Settings' notification. Upon clicking, users will be taken to Settings page." @@ -3214,9 +3199,6 @@ "showHexDataDescription": { "message": "Selectionner ici pour afficher le champs de données hex dans l’écran d’envoi" }, - "showHide": { - "message": "Afficher/masquer" - }, "showIncomingTransactions": { "message": "Afficher les transactions entrantes" }, @@ -3416,9 +3398,6 @@ "status": { "message": "État" }, - "statusConnected": { - "message": "Connecté" - }, "statusNotConnected": { "message": "Non connecté" }, @@ -3923,10 +3902,6 @@ "toggleEthSignField": { "message": "Activer/Désactiver les requêtes eth-sign" }, - "toggleTestNetworks": { - "message": "$1 réseaux de test", - "description": "$1 is a clickable link with text defined by the 'showHide' key. The link will open Settings > Advanced where users can enable the display of test networks in the network dropdown." - }, "token": { "message": "Jeton" }, @@ -4106,10 +4081,6 @@ "troubleStarting": { "message": "Impossible de démarrer MetaMask. Cette erreur peut être occasionnelle, essayez donc de redémarrer lextension." }, - "troubleTokenBalances": { - "message": "Nous avons eu du mal à charger votre balance de jetons, vous pouvez la consulter ici :", - "description": "Followed by a link (here) to view token balances" - }, "trustSiteApprovePermission": { "message": "En accordant cette autorisation, vous permettez au(x) $1 suivant(s) d’accéder à vos fonds" }, diff --git a/app/_locales/he/messages.json b/app/_locales/he/messages.json index 4e3ab6b64..d5f54a97a 100644 --- a/app/_locales/he/messages.json +++ b/app/_locales/he/messages.json @@ -154,9 +154,6 @@ "connect": { "message": "התחברות" }, - "connectHardwareWallet": { - "message": "חבר ארנק חומרה" - }, "connectingTo": { "message": "מתחבר ל- $1 " }, @@ -193,9 +190,6 @@ "create": { "message": "צור" }, - "createAccount": { - "message": "פתיחת חשבון" - }, "createPassword": { "message": "יצירת ססמה" }, @@ -810,10 +804,6 @@ "transferFrom": { "message": "העברה מ-" }, - "troubleTokenBalances": { - "message": "לא הצלחנו לטעון את יתרות הטוקנים שלך. באפשרותך להציג אותן", - "description": "Followed by a link (here) to view token balances" - }, "tryAgain": { "message": "ניסיון חוזר" }, diff --git a/app/_locales/hi/messages.json b/app/_locales/hi/messages.json index 48f1459a7..59db01bc8 100644 --- a/app/_locales/hi/messages.json +++ b/app/_locales/hi/messages.json @@ -642,9 +642,6 @@ "connectAccountOrCreate": { "message": "खाता कनेक्ट करें या नया बनाएं" }, - "connectHardwareWallet": { - "message": "हार्डवेयर वॉलेट कनेक्ट करें" - }, "connectManually": { "message": "वर्तमान साइट से मैन्युअल रूप से कनेक्ट करें" }, @@ -789,9 +786,6 @@ "create": { "message": "बनाएं" }, - "createAccount": { - "message": "अकाउंट बनाएं" - }, "createNewWallet": { "message": "एक नया वॉलेट बनाएं" }, @@ -1636,9 +1630,6 @@ "importTokenWarning": { "message": "कोई भी किसी भी नाम के साथ एक टोकन बना सकता है, जिसमें मौजूदा टोकन के नकली संस्करण शामिल हैं। अपने जोखिम पर जोड़ें और व्यापार करें!" }, - "importTokens": { - "message": "टोकन आयात करें" - }, "importTokensCamelCase": { "message": "टोकन आयात करें" }, @@ -1990,9 +1981,6 @@ "missingSettingRequest": { "message": "यहां अनुरोध करें" }, - "missingToken": { - "message": "क्या अपना टोकन नहीं देख रहे हैं?" - }, "moreComingSoon": { "message": "और अधिक जल्द ही आ रहा..." }, @@ -2235,9 +2223,6 @@ "notEnoughGas": { "message": "पर्याप्त गैस नहीं" }, - "notifications": { - "message": "सूचनाएं" - }, "notifications10ActionText": { "message": "सेटिंग्स में जाएं", "description": "The 'call to action' on the button, or link, of the 'Visit in Settings' notification. Upon clicking, users will be taken to Settings page." @@ -3214,9 +3199,6 @@ "showHexDataDescription": { "message": "भेजने की स्क्रीन पर हेक्स डेटा फील्ड दिखाने के लिए इसका चयन करें" }, - "showHide": { - "message": "दिखाएं/छिपाएं" - }, "showIncomingTransactions": { "message": "आने वाले लेन-देन दिखाएं" }, @@ -3416,9 +3398,6 @@ "status": { "message": "स्टेटस" }, - "statusConnected": { - "message": "कनेक्ट किया गया" - }, "statusNotConnected": { "message": "कनेक्ट नहीं है" }, @@ -3923,10 +3902,6 @@ "toggleEthSignField": { "message": "Eth_sign अनुरोधों को टॉगल करें" }, - "toggleTestNetworks": { - "message": "$1 परीक्षण नेटवर्क", - "description": "$1 is a clickable link with text defined by the 'showHide' key. The link will open Settings > Advanced where users can enable the display of test networks in the network dropdown." - }, "token": { "message": "टोकन" }, @@ -4106,10 +4081,6 @@ "troubleStarting": { "message": "MetaMask को शुरू करने में परेशानी आई। यह त्रुटि रुक-रुक कर हो सकती है, इसलिए एक्सटेंशन को फिर से शुरू करके देखें।" }, - "troubleTokenBalances": { - "message": "हमें आपके टोकन की शेषराशि लोड करने में परेशानी हुई। आप उन्हें देख सकते हैं ", - "description": "Followed by a link (here) to view token balances" - }, "trustSiteApprovePermission": { "message": "अनुमति प्रदान करके, आप निम्नलिखित $1 को अपने फंड तक पहुंचने की इजाजत दे रहे हैं" }, diff --git a/app/_locales/hn/messages.json b/app/_locales/hn/messages.json index f94ab181c..991a4f96c 100644 --- a/app/_locales/hn/messages.json +++ b/app/_locales/hn/messages.json @@ -69,9 +69,6 @@ "create": { "message": "बनाएं" }, - "createAccount": { - "message": "खाता बनाएं" - }, "decimal": { "message": "दशमलव परिशुद्धता" }, @@ -323,10 +320,6 @@ "total": { "message": "कुल" }, - "troubleTokenBalances": { - "message": "मुसीबत... आपके टोकन शेष राशि को लोड करने में हमें परेशानी हुई थी। आप उन्हें देख सकते हैं", - "description": "Followed by a link (here) to view token balances" - }, "typePassword": { "message": "अपना पासवर्ड टाइप करें" }, diff --git a/app/_locales/hr/messages.json b/app/_locales/hr/messages.json index 72c63d315..78df36ca4 100644 --- a/app/_locales/hr/messages.json +++ b/app/_locales/hr/messages.json @@ -154,9 +154,6 @@ "connect": { "message": "Povežite se" }, - "connectHardwareWallet": { - "message": "Poveži hardverski novčanik" - }, "connectingTo": { "message": "Povezivanje na $1" }, @@ -193,9 +190,6 @@ "create": { "message": "Stvori" }, - "createAccount": { - "message": "Stvori račun" - }, "createPassword": { "message": "Stvori lozinku" }, @@ -803,10 +797,6 @@ "transferFrom": { "message": "Prenesi od" }, - "troubleTokenBalances": { - "message": "Imamo problema s učitavanjem raspoloživog stanja vaših tokena. Možete ih vidjeti", - "description": "Followed by a link (here) to view token balances" - }, "tryAgain": { "message": "Pokušaj ponovo" }, diff --git a/app/_locales/ht/messages.json b/app/_locales/ht/messages.json index 5b1aaf04f..fd92854de 100644 --- a/app/_locales/ht/messages.json +++ b/app/_locales/ht/messages.json @@ -96,9 +96,6 @@ "connect": { "message": "Konekte" }, - "connectHardwareWallet": { - "message": "Konekte Materyèl Wallet" - }, "connectingToMainnet": { "message": "Konekte ak Prensipal Ethereum Rezo a" }, @@ -120,9 +117,6 @@ "create": { "message": "Kreye" }, - "createAccount": { - "message": "Kreye Kont" - }, "currentLanguage": { "message": "Lang Aktyèl" }, @@ -563,10 +557,6 @@ "transfer": { "message": "Transfè" }, - "troubleTokenBalances": { - "message": "Nou te gen pwoblèm chaje balans token ou. Ou ka wè yo ", - "description": "Followed by a link (here) to view token balances" - }, "tryAgain": { "message": "Eseye anko" }, diff --git a/app/_locales/hu/messages.json b/app/_locales/hu/messages.json index 51270215d..b697190b7 100644 --- a/app/_locales/hu/messages.json +++ b/app/_locales/hu/messages.json @@ -154,9 +154,6 @@ "connect": { "message": "Csatlakozás" }, - "connectHardwareWallet": { - "message": "Hardverpénztárca csatlakoztatása" - }, "connectingTo": { "message": "Kapcsolódás: $1" }, @@ -193,9 +190,6 @@ "create": { "message": "Létrehozás" }, - "createAccount": { - "message": "Fiók létrehozása" - }, "createPassword": { "message": "Jelszó létrehozása" }, @@ -803,10 +797,6 @@ "transferFrom": { "message": "Átvezetés innen: " }, - "troubleTokenBalances": { - "message": "Gondjaink voltak tokenegyenlegeid betöltésével. Megtekintheted őket", - "description": "Followed by a link (here) to view token balances" - }, "tryAgain": { "message": "Újra" }, diff --git a/app/_locales/id/messages.json b/app/_locales/id/messages.json index 2e61efe24..b1c80f8b4 100644 --- a/app/_locales/id/messages.json +++ b/app/_locales/id/messages.json @@ -642,9 +642,6 @@ "connectAccountOrCreate": { "message": "Hubungkan akun atau buat baru" }, - "connectHardwareWallet": { - "message": "Hubungkan dompet perangkat keras" - }, "connectManually": { "message": "Hubungkan ke situs saat ini secara manual" }, @@ -789,9 +786,6 @@ "create": { "message": "Buat" }, - "createAccount": { - "message": "Buat akun" - }, "createNewWallet": { "message": "Buat dompet baru" }, @@ -1636,9 +1630,6 @@ "importTokenWarning": { "message": "Siapa pun dapat membuat token dengan nama apa pun, termasuk versi palsu dari token yang ada. Tambahkan dan perdagangkan dengan risiko ditanggung sendiri!" }, - "importTokens": { - "message": "impor token" - }, "importTokensCamelCase": { "message": "Impor token" }, @@ -1990,9 +1981,6 @@ "missingSettingRequest": { "message": "Minta di sini" }, - "missingToken": { - "message": "Tidak melihat token Anda?" - }, "moreComingSoon": { "message": "Selanjutnya akan segera hadir..." }, @@ -2235,9 +2223,6 @@ "notEnoughGas": { "message": "Gas tidak cukup" }, - "notifications": { - "message": "Notifikasi" - }, "notifications10ActionText": { "message": "Lihat di Pengaturan", "description": "The 'call to action' on the button, or link, of the 'Visit in Settings' notification. Upon clicking, users will be taken to Settings page." @@ -3214,9 +3199,6 @@ "showHexDataDescription": { "message": "Pilih ini untuk menampilkan bidang data hex di layar kirim" }, - "showHide": { - "message": "Tampil/Sembunyi" - }, "showIncomingTransactions": { "message": "Tampilkan transaksi masuk" }, @@ -3416,9 +3398,6 @@ "status": { "message": "Status" }, - "statusConnected": { - "message": "Terhubung" - }, "statusNotConnected": { "message": "Tidak terhubung" }, @@ -3923,10 +3902,6 @@ "toggleEthSignField": { "message": "Alihkan permintaan eth_sign" }, - "toggleTestNetworks": { - "message": "$1 jaringan pengujian", - "description": "$1 is a clickable link with text defined by the 'showHide' key. The link will open Settings > Advanced where users can enable the display of test networks in the network dropdown." - }, "token": { "message": "Token" }, @@ -4106,10 +4081,6 @@ "troubleStarting": { "message": "MetaMask mengalami masalah saat memulai. Kesalahan ini dapat terjadi berselang, coba mulai ulang ekstensi." }, - "troubleTokenBalances": { - "message": "Kami mengalami masalah saat memuat saldo token Anda. Anda dapat melihatnya ", - "description": "Followed by a link (here) to view token balances" - }, "trustSiteApprovePermission": { "message": "Dengan memberikan izin, Anda mengizinkan $1 berikut untuk mengakses dana Anda" }, diff --git a/app/_locales/it/messages.json b/app/_locales/it/messages.json index 99d323da3..4c594c6f8 100644 --- a/app/_locales/it/messages.json +++ b/app/_locales/it/messages.json @@ -485,9 +485,6 @@ "connectAccountOrCreate": { "message": "Connetti un account o creane uno nuovo" }, - "connectHardwareWallet": { - "message": "Connetti Portafoglio Hardware" - }, "connectManually": { "message": "Connettiti al sito manualmente" }, @@ -616,9 +613,6 @@ "create": { "message": "Crea" }, - "createAccount": { - "message": "Crea Account" - }, "createNewWallet": { "message": "Crea un nuovo portafoglio" }, @@ -1540,9 +1534,6 @@ "stateLogsDescription": { "message": "I log di stato contengono i tuoi indirizzi pubblici e le transazioni effettuate." }, - "statusConnected": { - "message": "Connesso" - }, "statusNotConnected": { "message": "Non connesso" }, @@ -1843,10 +1834,6 @@ "message": "Abbiamo riscontrato un errore nella connessione a $1, guarda la documentazione $2 e prova di nuovo.", "description": "$1 is the wallet device name; $2 is a link to wallet connection guide" }, - "troubleTokenBalances": { - "message": "Abbiamo avuto un problema a caricare il bilancio dei tuoi token. Puoi vederlo ", - "description": "Followed by a link (here) to view token balances" - }, "tryAgain": { "message": "Prova di nuovo" }, diff --git a/app/_locales/ja/messages.json b/app/_locales/ja/messages.json index 51e949432..93f7ba7ae 100644 --- a/app/_locales/ja/messages.json +++ b/app/_locales/ja/messages.json @@ -642,9 +642,6 @@ "connectAccountOrCreate": { "message": "アカウントを接続するか、または新規に作成します" }, - "connectHardwareWallet": { - "message": "ハードウェアウォレットの接続" - }, "connectManually": { "message": "現在のサイトに手動で接続" }, @@ -789,9 +786,6 @@ "create": { "message": "作成" }, - "createAccount": { - "message": "アカウントを作成" - }, "createNewWallet": { "message": "新規ウォレットを作成" }, @@ -1636,9 +1630,6 @@ "importTokenWarning": { "message": "誰でも既存のトークンの偽バージョンを含めて、任意の名前でトークンを作成することができます。追加および取引は自己責任となります!" }, - "importTokens": { - "message": "トークンをインポート" - }, "importTokensCamelCase": { "message": "トークンをインポート" }, @@ -1990,9 +1981,6 @@ "missingSettingRequest": { "message": "ここからリクエスト" }, - "missingToken": { - "message": "トークンが見当たりませんか?" - }, "moreComingSoon": { "message": "さらに近日追加予定..." }, @@ -2235,9 +2223,6 @@ "notEnoughGas": { "message": "ガスが不足しています" }, - "notifications": { - "message": "通知" - }, "notifications10ActionText": { "message": "設定に移動", "description": "The 'call to action' on the button, or link, of the 'Visit in Settings' notification. Upon clicking, users will be taken to Settings page." @@ -3214,9 +3199,6 @@ "showHexDataDescription": { "message": "これを選択すると、送金画面に16進データフィールドが表示されます" }, - "showHide": { - "message": "表示・非表示" - }, "showIncomingTransactions": { "message": "受信トランザクションを表示" }, @@ -3416,9 +3398,6 @@ "status": { "message": "ステータス" }, - "statusConnected": { - "message": "接続済み" - }, "statusNotConnected": { "message": "未接続" }, @@ -3923,10 +3902,6 @@ "toggleEthSignField": { "message": "eth_sign 要求の設定" }, - "toggleTestNetworks": { - "message": "$1テストネットワーク", - "description": "$1 is a clickable link with text defined by the 'showHide' key. The link will open Settings > Advanced where users can enable the display of test networks in the network dropdown." - }, "token": { "message": "トークン" }, @@ -4106,10 +4081,6 @@ "troubleStarting": { "message": "MetaMask がうまく起動しませんでした。このエラーは断続的に発生する可能性があるため、拡張機能を再起動してみてください。" }, - "troubleTokenBalances": { - "message": "トークンバランスのロードに問題があります。トークンバランスを表示できます", - "description": "Followed by a link (here) to view token balances" - }, "trustSiteApprovePermission": { "message": "パーミッションを付与することで、次の$1による資金へのアクセスが許可されます" }, diff --git a/app/_locales/kn/messages.json b/app/_locales/kn/messages.json index 77e919931..85ff83476 100644 --- a/app/_locales/kn/messages.json +++ b/app/_locales/kn/messages.json @@ -154,9 +154,6 @@ "connect": { "message": "ಸಂಪರ್ಕಿಸು" }, - "connectHardwareWallet": { - "message": "ಹಾರ್ಡ್‌ವೆರ್ ವ್ಯಾಲೆಟ್‌‌ಗೆ ಸಂಪರ್ಕಪಡಿಸಿ" - }, "connectingTo": { "message": "$1 ಗೆ ಸಂಪರ್ಕಪಡಿಸಲಾಗುತ್ತಿದೆ" }, @@ -193,9 +190,6 @@ "create": { "message": "ರಚಿಸಿ" }, - "createAccount": { - "message": "ಖಾತೆಯನ್ನು ರಚಿಸಿ" - }, "createPassword": { "message": "ಪಾಸ್‌ವರ್ಡ್ ರಚಿಸಿ" }, @@ -813,10 +807,6 @@ "transferFrom": { "message": "ಇದರಿಂದ ವರ್ಗಾಯಿಸಿ" }, - "troubleTokenBalances": { - "message": "ನಿಮ್ಮ ಟೋಕನ್ ಬ್ಯಾಲೆನ್ಸ್‌ಗಳನ್ನು ಲೋಡ್ ಮಾಡುವಲ್ಲಿ ನಮಗೆ ಸಮಸ್ಯೆಯಾಗಿದೆ. ನೀವು ಅವುಗಳನ್ನು ನೋಡಬಹುದು", - "description": "Followed by a link (here) to view token balances" - }, "tryAgain": { "message": "ಪುನಃ ಪ್ರಯತ್ನಿಸಿ" }, diff --git a/app/_locales/ko/messages.json b/app/_locales/ko/messages.json index c44c1000f..12e7d4b74 100644 --- a/app/_locales/ko/messages.json +++ b/app/_locales/ko/messages.json @@ -642,9 +642,6 @@ "connectAccountOrCreate": { "message": "계정 연결 또는 새 계정 만들기" }, - "connectHardwareWallet": { - "message": "하드웨어 지갑 연결" - }, "connectManually": { "message": "현재 사이트에 수동으로 연결" }, @@ -789,9 +786,6 @@ "create": { "message": "생성" }, - "createAccount": { - "message": "계정 생성" - }, "createNewWallet": { "message": "새 지갑 생성" }, @@ -1636,9 +1630,6 @@ "importTokenWarning": { "message": "기존 토큰의 가짜 버전을 포함하여 누구나 어떤 이름으로든 토큰을 만들 수 있습니다. 추가 및 거래는 사용자의 책임입니다." }, - "importTokens": { - "message": "토큰 가져오기" - }, "importTokensCamelCase": { "message": "토큰 가져오기" }, @@ -1990,9 +1981,6 @@ "missingSettingRequest": { "message": "여기에서 요청하세요" }, - "missingToken": { - "message": "토큰이 보이지 않나요?" - }, "moreComingSoon": { "message": "더 추가 예정..." }, @@ -2235,9 +2223,6 @@ "notEnoughGas": { "message": "가스 부족" }, - "notifications": { - "message": "알림" - }, "notifications10ActionText": { "message": "설정으로 이동하기", "description": "The 'call to action' on the button, or link, of the 'Visit in Settings' notification. Upon clicking, users will be taken to Settings page." @@ -3214,9 +3199,6 @@ "showHexDataDescription": { "message": "이 항목을 선택하면 보내기 화면에 16진수 데이터 필드가 표시됩니다." }, - "showHide": { - "message": "보기/숨기기" - }, "showIncomingTransactions": { "message": "수신 거래 표시" }, @@ -3416,9 +3398,6 @@ "status": { "message": "상태" }, - "statusConnected": { - "message": "연결됨" - }, "statusNotConnected": { "message": "연결되지 않음" }, @@ -3923,10 +3902,6 @@ "toggleEthSignField": { "message": "eth_sign 요청 토글" }, - "toggleTestNetworks": { - "message": "$1 테스트 네트워크", - "description": "$1 is a clickable link with text defined by the 'showHide' key. The link will open Settings > Advanced where users can enable the display of test networks in the network dropdown." - }, "token": { "message": "토큰" }, @@ -4106,10 +4081,6 @@ "troubleStarting": { "message": "MetaMask 실행 중 오류가 발생했습니다. 일시적인 오류일 수 있으니 확장 프로그램을 재시작해 보세요." }, - "troubleTokenBalances": { - "message": "토큰 잔액을 로드하는 도중 문제가 발생했습니다. 다음에서 잔액을 확인하세요. ", - "description": "Followed by a link (here) to view token balances" - }, "trustSiteApprovePermission": { "message": "권한을 부여하면 다음 $1이(가) 귀하의 자금에 액세스할 수 있습니다." }, diff --git a/app/_locales/lt/messages.json b/app/_locales/lt/messages.json index 3b0831431..9b5d49cdd 100644 --- a/app/_locales/lt/messages.json +++ b/app/_locales/lt/messages.json @@ -154,9 +154,6 @@ "connect": { "message": "Prisijungti" }, - "connectHardwareWallet": { - "message": "Susieti aparatinės įrangos slaptažodinę" - }, "connectingTo": { "message": "Jungiamasi prie $1" }, @@ -193,9 +190,6 @@ "create": { "message": "Sukurti" }, - "createAccount": { - "message": "Sukurti paskyrą" - }, "createPassword": { "message": "Sukurti slaptažodį" }, @@ -813,10 +807,6 @@ "transferFrom": { "message": "Pervedimas iš" }, - "troubleTokenBalances": { - "message": "Susidurta su sunkumais įkeliant jūsų žetonų likučius. Galite juos peržiūrėti ", - "description": "Followed by a link (here) to view token balances" - }, "tryAgain": { "message": "Bandyti dar kartą" }, diff --git a/app/_locales/lv/messages.json b/app/_locales/lv/messages.json index 2ffc66e5c..af75f4b5e 100644 --- a/app/_locales/lv/messages.json +++ b/app/_locales/lv/messages.json @@ -154,9 +154,6 @@ "connect": { "message": "Pievienošana" }, - "connectHardwareWallet": { - "message": "Pieslēgt aparatūras maku" - }, "connectingTo": { "message": "Pieslēdzas $1" }, @@ -193,9 +190,6 @@ "create": { "message": "Izveidot" }, - "createAccount": { - "message": "Izveidot kontu" - }, "createPassword": { "message": "Izveidot paroli" }, @@ -809,10 +803,6 @@ "transferFrom": { "message": "Nosūtīt no" }, - "troubleTokenBalances": { - "message": "Mums neizdevās ielādēt marķieru bilanci. Varat tos skatīt", - "description": "Followed by a link (here) to view token balances" - }, "tryAgain": { "message": "Mēģināt vēlreiz" }, diff --git a/app/_locales/ms/messages.json b/app/_locales/ms/messages.json index 5c304cd47..c2460d16a 100644 --- a/app/_locales/ms/messages.json +++ b/app/_locales/ms/messages.json @@ -154,9 +154,6 @@ "connect": { "message": "Sambung" }, - "connectHardwareWallet": { - "message": "Sambungkan Dompet Perkakasan" - }, "connectingTo": { "message": "Menyambungkan kepada $1" }, @@ -193,9 +190,6 @@ "create": { "message": "Cipta" }, - "createAccount": { - "message": "Cipta Akaun" - }, "createPassword": { "message": "Cipta Kata Laluan" }, @@ -790,10 +784,6 @@ "transferFrom": { "message": "Pindah Daripada" }, - "troubleTokenBalances": { - "message": "Kami menghadapi masalah memuatkan baki token anda. Anda boleh melihatnya", - "description": "Followed by a link (here) to view token balances" - }, "tryAgain": { "message": "Cuba lagi" }, diff --git a/app/_locales/nl/messages.json b/app/_locales/nl/messages.json index fc8a1e7fd..00bfdf749 100644 --- a/app/_locales/nl/messages.json +++ b/app/_locales/nl/messages.json @@ -69,9 +69,6 @@ "create": { "message": "creëren" }, - "createAccount": { - "message": "Account aanmaken" - }, "decimal": { "message": "Decimalen van precisie" }, @@ -313,10 +310,6 @@ "total": { "message": "Totaal" }, - "troubleTokenBalances": { - "message": "We hadden problemen bij het laden van uw tokenbalansen. Je kunt ze bekijken", - "description": "Followed by a link (here) to view token balances" - }, "typePassword": { "message": "Typ uw wachtwoord" }, diff --git a/app/_locales/no/messages.json b/app/_locales/no/messages.json index 2df0252ef..3ea7a7471 100644 --- a/app/_locales/no/messages.json +++ b/app/_locales/no/messages.json @@ -151,9 +151,6 @@ "connect": { "message": "Koble til" }, - "connectHardwareWallet": { - "message": "Koble til maskinvarelommebok" - }, "connectingTo": { "message": "Forbinder til $1 " }, @@ -190,9 +187,6 @@ "create": { "message": "Opprett" }, - "createAccount": { - "message": "Opprett konto" - }, "createPassword": { "message": "Opprett passord " }, @@ -788,10 +782,6 @@ "transferFrom": { "message": "Overfør fra" }, - "troubleTokenBalances": { - "message": "Vi hadde problemer med å laste inn sjetongsaldoen din. Du kan se dem", - "description": "Followed by a link (here) to view token balances" - }, "tryAgain": { "message": "Prøv igjen" }, diff --git a/app/_locales/ph/messages.json b/app/_locales/ph/messages.json index c6e24bd52..c6d6398cb 100644 --- a/app/_locales/ph/messages.json +++ b/app/_locales/ph/messages.json @@ -252,9 +252,6 @@ "connectAccountOrCreate": { "message": "Ikonekta ang account o gumawa ng bago" }, - "connectHardwareWallet": { - "message": "Ikonekta ang Hardware Wallet" - }, "connectManually": { "message": "Manu-manong kumonekta sa kasalukuyang site" }, @@ -356,9 +353,6 @@ "create": { "message": "Gumawa" }, - "createAccount": { - "message": "Gumawa ng Account" - }, "createPassword": { "message": "Gumawa ng Password" }, @@ -1394,9 +1388,6 @@ "stateLogsDescription": { "message": "Naglalaman ang mga log ng estado ng iyong mga address ng pampublikong account at ipinadalang transaksyon." }, - "statusConnected": { - "message": "Nakakonekta" - }, "statusNotConnected": { "message": "Hindi nakakonekta" }, @@ -1797,10 +1788,6 @@ "message": "Nagkaproblema kami sa pagkonekta sa iyong $1, subukang suriin ang $2 at subukan ulit.", "description": "$1 is the wallet device name; $2 is a link to wallet connection guide" }, - "troubleTokenBalances": { - "message": "Nagkaproblema kami sa pag-load ng mga balanse ng iyong token. Puwede mong tingnan ang mga iyon ", - "description": "Followed by a link (here) to view token balances" - }, "tryAgain": { "message": "Subukan ulit" }, diff --git a/app/_locales/pl/messages.json b/app/_locales/pl/messages.json index 348798703..e14f33c87 100644 --- a/app/_locales/pl/messages.json +++ b/app/_locales/pl/messages.json @@ -154,9 +154,6 @@ "connect": { "message": "Połącz" }, - "connectHardwareWallet": { - "message": "Podłącz portfel sprzętowy" - }, "connectingTo": { "message": "Łączenie z $1" }, @@ -193,9 +190,6 @@ "create": { "message": "Utwórz" }, - "createAccount": { - "message": "Utwórz konto" - }, "createPassword": { "message": "Utwórz hasło" }, @@ -801,10 +795,6 @@ "transferFrom": { "message": "Przelew z" }, - "troubleTokenBalances": { - "message": "Wystąpił problem z załadowaniem informacji o Twoich tokenach. Można je zobaczyć ", - "description": "Followed by a link (here) to view token balances" - }, "tryAgain": { "message": "Spróbuj ponownie" }, diff --git a/app/_locales/pt/messages.json b/app/_locales/pt/messages.json index 1a35b57fd..88bd6d699 100644 --- a/app/_locales/pt/messages.json +++ b/app/_locales/pt/messages.json @@ -642,9 +642,6 @@ "connectAccountOrCreate": { "message": "Conectar conta ou criar nova" }, - "connectHardwareWallet": { - "message": "Conectar carteira de hardware" - }, "connectManually": { "message": "Conectar manualmente ao site atual" }, @@ -789,9 +786,6 @@ "create": { "message": "Criar" }, - "createAccount": { - "message": "Criar conta" - }, "createNewWallet": { "message": "Criar uma nova carteira" }, @@ -1636,9 +1630,6 @@ "importTokenWarning": { "message": "Qualquer pessoa pode criar um token com qualquer nome, incluindo versões falsas de tokens existentes. Adicione e negocie por sua conta e risco!" }, - "importTokens": { - "message": "importar tokens" - }, "importTokensCamelCase": { "message": "Importar tokens" }, @@ -1990,9 +1981,6 @@ "missingSettingRequest": { "message": "Solicite aqui" }, - "missingToken": { - "message": "Não está vendo seu token?" - }, "moreComingSoon": { "message": "Mais em breve..." }, @@ -2235,9 +2223,6 @@ "notEnoughGas": { "message": "Não há gás suficiente" }, - "notifications": { - "message": "Notificações" - }, "notifications10ActionText": { "message": "Visite nas configurações", "description": "The 'call to action' on the button, or link, of the 'Visit in Settings' notification. Upon clicking, users will be taken to Settings page." @@ -3214,9 +3199,6 @@ "showHexDataDescription": { "message": "Selecione essa opção para mostrar o campo de dados hexadecimais na tela de envio" }, - "showHide": { - "message": "Mostrar/ocultar" - }, "showIncomingTransactions": { "message": "Mostrar transações recebidas" }, @@ -3416,9 +3398,6 @@ "status": { "message": "Status" }, - "statusConnected": { - "message": "Conectado" - }, "statusNotConnected": { "message": "Não conectado" }, @@ -3923,10 +3902,6 @@ "toggleEthSignField": { "message": "Ativar/desativar solicitações eth_sign" }, - "toggleTestNetworks": { - "message": "$1 redes de teste", - "description": "$1 is a clickable link with text defined by the 'showHide' key. The link will open Settings > Advanced where users can enable the display of test networks in the network dropdown." - }, "token": { "message": "Token" }, @@ -4106,10 +4081,6 @@ "troubleStarting": { "message": "A MetaMask teve problemas para iniciar. Esse erro pode ser intermitente, por isso tente reiniciar a extensão." }, - "troubleTokenBalances": { - "message": "Tivemos um problema a carregar o balanço dos seus tokens. Pode vê-los em ", - "description": "Followed by a link (here) to view token balances" - }, "trustSiteApprovePermission": { "message": "Ao conceder permissão, você estará autorizando que o $1 a seguir acesse seus fundos" }, diff --git a/app/_locales/pt_BR/messages.json b/app/_locales/pt_BR/messages.json index 5dfacf001..48a0efd1a 100644 --- a/app/_locales/pt_BR/messages.json +++ b/app/_locales/pt_BR/messages.json @@ -389,9 +389,6 @@ "connectAccountOrCreate": { "message": "Conectar conta ou criar nova" }, - "connectHardwareWallet": { - "message": "Conectar carteira de hardware" - }, "connectManually": { "message": "Conectar manualmente ao site atual" }, @@ -499,9 +496,6 @@ "create": { "message": "Criar" }, - "createAccount": { - "message": "Criar conta" - }, "createNewWallet": { "message": "Criar uma nova carteira" }, @@ -1091,9 +1085,6 @@ "importTokenWarning": { "message": "Qualquer pessoa pode criar um token com qualquer nome, incluindo versões falsas de tokens existentes. Adicione e negocie por sua conta e risco!" }, - "importTokens": { - "message": "importar tokens" - }, "importTokensCamelCase": { "message": "Importar tokens" }, @@ -1351,9 +1342,6 @@ "missingNFT": { "message": "Não está vendo o seu NFT?" }, - "missingToken": { - "message": "Não está vendo o seu token?" - }, "mustSelectOne": { "message": "Selecione pelo menos 1 token." }, @@ -2064,9 +2052,6 @@ "showHexDataDescription": { "message": "Selecione essa opção para mostrar o campo de dados hexadecimais na tela de envio" }, - "showHide": { - "message": "Mostrar/ocultar" - }, "showIncomingTransactions": { "message": "Mostrar transações recebidas" }, @@ -2168,9 +2153,6 @@ "stateLogsDescription": { "message": "Os registros de estado contêm os endereços da sua conta pública e as transações enviadas." }, - "statusConnected": { - "message": "Conectado" - }, "statusNotConnected": { "message": "Não conectado" }, @@ -2549,10 +2531,6 @@ "message": "Para: $1", "description": "$1 is the address to include in the To label. It is typically shortened first using shortenAddress" }, - "toggleTestNetworks": { - "message": "$1 redes de teste", - "description": "$1 is a clickable link with text defined by the 'showHide' key. The link will open Settings > Advanced where users can enable the display of test networks in the network dropdown." - }, "token": { "message": "Token" }, @@ -2692,10 +2670,6 @@ "message": "Tivemos dificuldade para conectar-nos à sua $1. Revise $2 e tente novamente.", "description": "$1 is the wallet device name; $2 is a link to wallet connection guide" }, - "troubleTokenBalances": { - "message": "Tivemos dificuldade para carregar os saldos do seu token. Você pode vê-los ", - "description": "Followed by a link (here) to view token balances" - }, "trustSiteApprovePermission": { "message": "Ao conceder permissão, você estará autorizando que o $1 a seguir acesse seus fundos" }, diff --git a/app/_locales/ro/messages.json b/app/_locales/ro/messages.json index 2ecf4a992..c4384f140 100644 --- a/app/_locales/ro/messages.json +++ b/app/_locales/ro/messages.json @@ -154,9 +154,6 @@ "connect": { "message": "Conectează-te" }, - "connectHardwareWallet": { - "message": "Conectare portofel hardware" - }, "connectingTo": { "message": "Se conectează la $1" }, @@ -193,9 +190,6 @@ "create": { "message": "Creați" }, - "createAccount": { - "message": "Creați cont" - }, "createPassword": { "message": "Creare parolă" }, @@ -794,10 +788,6 @@ "transferFrom": { "message": "Transferați de la" }, - "troubleTokenBalances": { - "message": "Am avut dificultăți cu încărcarea soldurilor dvs. de tokenuri. Le puteți vizualiza", - "description": "Followed by a link (here) to view token balances" - }, "tryAgain": { "message": "Încearcă din nou" }, diff --git a/app/_locales/ru/messages.json b/app/_locales/ru/messages.json index 77b9d7f8d..1365b7cb2 100644 --- a/app/_locales/ru/messages.json +++ b/app/_locales/ru/messages.json @@ -642,9 +642,6 @@ "connectAccountOrCreate": { "message": "Подключите счет или создайте новый" }, - "connectHardwareWallet": { - "message": "Подключить аппаратный кошелек" - }, "connectManually": { "message": "Подключиться к текущему сайту вручную" }, @@ -789,9 +786,6 @@ "create": { "message": "Создать" }, - "createAccount": { - "message": "Создать счет" - }, "createNewWallet": { "message": "Создать новый кошелек" }, @@ -1636,9 +1630,6 @@ "importTokenWarning": { "message": "Кто угодно может создать токен с любым именем, включая поддельные версии существующих токенов. Добавляйте и торгуйте на свой страх и риск!" }, - "importTokens": { - "message": "импорт токенов" - }, "importTokensCamelCase": { "message": "Импорт токенов" }, @@ -1990,9 +1981,6 @@ "missingSettingRequest": { "message": "Запросите здесь" }, - "missingToken": { - "message": "Не видите свой токен?" - }, "moreComingSoon": { "message": "Скоро появится больше..." }, @@ -2235,9 +2223,6 @@ "notEnoughGas": { "message": "Недостаточно газа" }, - "notifications": { - "message": "Уведомления" - }, "notifications10ActionText": { "message": "Смотреть в настройках", "description": "The 'call to action' on the button, or link, of the 'Visit in Settings' notification. Upon clicking, users will be taken to Settings page." @@ -3214,9 +3199,6 @@ "showHexDataDescription": { "message": "Выберите эту опцию, чтобы отобразить поле шестнадцатеричных данных на экране отправки" }, - "showHide": { - "message": "Показать/скрыть" - }, "showIncomingTransactions": { "message": "Показать входящие транзакции" }, @@ -3416,9 +3398,6 @@ "status": { "message": "Статус" }, - "statusConnected": { - "message": "Подключено" - }, "statusNotConnected": { "message": "Не подключено" }, @@ -3923,10 +3902,6 @@ "toggleEthSignField": { "message": "Переключить запросы eth_sign" }, - "toggleTestNetworks": { - "message": "$1 тестовые сети", - "description": "$1 is a clickable link with text defined by the 'showHide' key. The link will open Settings > Advanced where users can enable the display of test networks in the network dropdown." - }, "token": { "message": "Токен" }, @@ -4106,10 +4081,6 @@ "troubleStarting": { "message": "У MetaMask возникли проблемы с запуском. Эта ошибка может быть непостоянной, поэтому попробуйте перезапустить расширение." }, - "troubleTokenBalances": { - "message": "У нас возникли проблемы с загрузкой вашего баланса токенов. Вы можете просмотреть их ", - "description": "Followed by a link (here) to view token balances" - }, "trustSiteApprovePermission": { "message": "Давая разрешение, вы предоставляете следующему $1 доступ к вашим средствам." }, diff --git a/app/_locales/sk/messages.json b/app/_locales/sk/messages.json index 6b0057045..8c120b6c9 100644 --- a/app/_locales/sk/messages.json +++ b/app/_locales/sk/messages.json @@ -148,9 +148,6 @@ "connect": { "message": "Pripojenie" }, - "connectHardwareWallet": { - "message": "Pripojiť hardvérovú peňaženku" - }, "connectingTo": { "message": "Pripája sa k $1" }, @@ -187,9 +184,6 @@ "create": { "message": "Vytvořit" }, - "createAccount": { - "message": "Vytvořit účet" - }, "createPassword": { "message": "Vytvoriť heslo" }, @@ -779,10 +773,6 @@ "transferFrom": { "message": "Presun z" }, - "troubleTokenBalances": { - "message": "Měli jsme problém s načtením vašich tokenových zůstatků. Můžete je vidět ", - "description": "Followed by a link (here) to view token balances" - }, "tryAgain": { "message": "Skúsiť znova" }, diff --git a/app/_locales/sl/messages.json b/app/_locales/sl/messages.json index bbc88645e..8dd18a889 100644 --- a/app/_locales/sl/messages.json +++ b/app/_locales/sl/messages.json @@ -154,9 +154,6 @@ "connect": { "message": "Poveži" }, - "connectHardwareWallet": { - "message": "Poveži strojno denarnico" - }, "connectingTo": { "message": "Povezovanje na $1" }, @@ -193,9 +190,6 @@ "create": { "message": "Ustvari" }, - "createAccount": { - "message": "Ustvari račun" - }, "createPassword": { "message": "Ustvari geslo" }, @@ -801,10 +795,6 @@ "transferFrom": { "message": "Prenesi od" }, - "troubleTokenBalances": { - "message": "Če imate težave pri ogledu zneskov žetonov si jih lahko ogledate ", - "description": "Followed by a link (here) to view token balances" - }, "tryAgain": { "message": "Poskusi znova" }, diff --git a/app/_locales/sr/messages.json b/app/_locales/sr/messages.json index b95229b50..b40ef040d 100644 --- a/app/_locales/sr/messages.json +++ b/app/_locales/sr/messages.json @@ -151,9 +151,6 @@ "connect": { "message": "Повезивање" }, - "connectHardwareWallet": { - "message": "Povežite Hardverski novčanik" - }, "connectingTo": { "message": "Povezuje se na $1" }, @@ -190,9 +187,6 @@ "create": { "message": "Направи" }, - "createAccount": { - "message": "Kreirajte nalog" - }, "createPassword": { "message": "Kreirajte lozinku" }, @@ -801,10 +795,6 @@ "transferFrom": { "message": "Prebacite iz" }, - "troubleTokenBalances": { - "message": "Imali smo problema sa učitavanjem bilansa Vaših tokena. Možete ih pogledati", - "description": "Followed by a link (here) to view token balances" - }, "tryAgain": { "message": "Пробај поново" }, diff --git a/app/_locales/sv/messages.json b/app/_locales/sv/messages.json index 75a70e467..2a7718a04 100644 --- a/app/_locales/sv/messages.json +++ b/app/_locales/sv/messages.json @@ -148,9 +148,6 @@ "connect": { "message": "Ansluta" }, - "connectHardwareWallet": { - "message": "Anslut hårdvaruplånbok" - }, "connectingTo": { "message": "Ansluter till $1" }, @@ -187,9 +184,6 @@ "create": { "message": "Skapa" }, - "createAccount": { - "message": "Skapa konto" - }, "createPassword": { "message": "Skapa lösenord" }, @@ -788,10 +782,6 @@ "transferFrom": { "message": "Överför från" }, - "troubleTokenBalances": { - "message": "Vi hade problem med att ladda dina token-saldon. Du kan se dem", - "description": "Followed by a link (here) to view token balances" - }, "tryAgain": { "message": "Försök igen" }, diff --git a/app/_locales/sw/messages.json b/app/_locales/sw/messages.json index 5ec90f52f..fbb028c8d 100644 --- a/app/_locales/sw/messages.json +++ b/app/_locales/sw/messages.json @@ -148,9 +148,6 @@ "connect": { "message": "Unganisha" }, - "connectHardwareWallet": { - "message": "Unganisha Waleti ya Programu Maunzi" - }, "connectingTo": { "message": "Inaunganisha kwenye $1" }, @@ -187,9 +184,6 @@ "create": { "message": "Unda" }, - "createAccount": { - "message": "Fungua Akaunti" - }, "createPassword": { "message": "Unda Nenosiri" }, @@ -791,10 +785,6 @@ "transferFrom": { "message": "Tuma Kutoka" }, - "troubleTokenBalances": { - "message": "Tulipata shida kupakia salio lako la kianzio. Unaweza kuliona", - "description": "Followed by a link (here) to view token balances" - }, "tryAgain": { "message": "Jaribu tena" }, diff --git a/app/_locales/ta/messages.json b/app/_locales/ta/messages.json index 53b5a906e..0f042e0ac 100644 --- a/app/_locales/ta/messages.json +++ b/app/_locales/ta/messages.json @@ -96,9 +96,6 @@ "create": { "message": "உருவாக்கு" }, - "createAccount": { - "message": "உங்கள் கணக்கை துவங்குங்கள்" - }, "custom": { "message": "மேம்பட்டவை" }, @@ -434,10 +431,6 @@ "transactionError": { "message": "பரிவர்த்தனை பிழை. விதிமுறை ஒப்பந்தத்தில் விதிவிலக்கு." }, - "troubleTokenBalances": { - "message": "உங்கள் டோக்கன் நிலுவைகளை ஏற்றுவதில் சிக்கல் ஏற்பட்டது. நீங்கள் அவர்களை பார்க்க முடியும்.", - "description": "Followed by a link (here) to view token balances" - }, "tryAgain": { "message": "மீண்டும் முயல்க" }, diff --git a/app/_locales/th/messages.json b/app/_locales/th/messages.json index 23e312863..84dbefe11 100644 --- a/app/_locales/th/messages.json +++ b/app/_locales/th/messages.json @@ -87,9 +87,6 @@ "create": { "message": "สร้าง" }, - "createAccount": { - "message": "สร้างบัญชี" - }, "currencyConversion": { "message": "การแปลงสกุลเงิน" }, @@ -401,10 +398,6 @@ "transferBetweenAccounts": { "message": "โอนระหว่างบัญชีของฉัน" }, - "troubleTokenBalances": { - "message": "เรามีปัญหาในการโหลดยอดโทเค็นคงเหลือของคุณ คุณสามารถดูได้ที่นี่", - "description": "Followed by a link (here) to view token balances" - }, "typePassword": { "message": "พิมพ์รหัสผ่านของคุณ" }, diff --git a/app/_locales/tl/messages.json b/app/_locales/tl/messages.json index e0f0fd92d..765ea453e 100644 --- a/app/_locales/tl/messages.json +++ b/app/_locales/tl/messages.json @@ -642,9 +642,6 @@ "connectAccountOrCreate": { "message": "Ikonekta ang account o gumawa ng bago" }, - "connectHardwareWallet": { - "message": "Ikonekta ang hardware wallet" - }, "connectManually": { "message": "Manu-manong kumonekta sa kasalukuyang site" }, @@ -789,9 +786,6 @@ "create": { "message": "Gumawa" }, - "createAccount": { - "message": "Gumawa ng account" - }, "createNewWallet": { "message": "Gumawa ng bagong wallet" }, @@ -1636,9 +1630,6 @@ "importTokenWarning": { "message": "Sinumang ay maaaring lumikha ng token gamit ang alinmang pangalan, kabilang ang mga pekeng bersyon ng umiiral na mga token. Magdagdag at mag-trade sa sarili mong panganib!" }, - "importTokens": { - "message": "magdagdag ng mga token" - }, "importTokensCamelCase": { "message": "Mag-import ng mga Token" }, @@ -1990,9 +1981,6 @@ "missingSettingRequest": { "message": "Hilingin dito" }, - "missingToken": { - "message": "Hindi mo ba nakikita ang iyong mga token?" - }, "moreComingSoon": { "message": "Marami pang parating..." }, @@ -2235,9 +2223,6 @@ "notEnoughGas": { "message": "Hindi Sapat ang Gas" }, - "notifications": { - "message": "Mga Abiso" - }, "notifications10ActionText": { "message": "Bisitahin sa mga setting", "description": "The 'call to action' on the button, or link, of the 'Visit in Settings' notification. Upon clicking, users will be taken to Settings page." @@ -3214,9 +3199,6 @@ "showHexDataDescription": { "message": "Piliin ito para ipakita ang field ng hex data sa screen ng pagpapadala" }, - "showHide": { - "message": "Ipakita/itago" - }, "showIncomingTransactions": { "message": "Ipakita ang Mga Papasok na Transaksyon" }, @@ -3416,9 +3398,6 @@ "status": { "message": "Istado" }, - "statusConnected": { - "message": "Nakakonekta" - }, "statusNotConnected": { "message": "Hindi konektado" }, @@ -3923,10 +3902,6 @@ "toggleEthSignField": { "message": "I-toggle ang mga kahilingan sa eth_sign" }, - "toggleTestNetworks": { - "message": "$1 na test network", - "description": "$1 is a clickable link with text defined by the 'showHide' key. The link will open Settings > Advanced where users can enable the display of test networks in the network dropdown." - }, "token": { "message": "Token" }, @@ -4106,10 +4081,6 @@ "troubleStarting": { "message": "Nagkaproblema ang MetaMask sa pagsisimula. Maaaring paulit-ulit ang error na ito, kaya subukang i-restart ang extension." }, - "troubleTokenBalances": { - "message": "Nagkaproblema kami sa pag-load ng mga balanse ng iyong token. Puwede mong tingnan ang mga iyon ", - "description": "Followed by a link (here) to view token balances" - }, "trustSiteApprovePermission": { "message": "Sa pamamagitan ng pagbibigay ng pahintulot, pinapayagan mo ang sumusunod na $1 para ma-access ang pondo mo" }, diff --git a/app/_locales/tr/messages.json b/app/_locales/tr/messages.json index 0ca8ba63a..e58872f25 100644 --- a/app/_locales/tr/messages.json +++ b/app/_locales/tr/messages.json @@ -642,9 +642,6 @@ "connectAccountOrCreate": { "message": "Hesabı bağla ya da yeni hesap oluştur" }, - "connectHardwareWallet": { - "message": "Donanım Cüzdanı Bağla" - }, "connectManually": { "message": "Mevcut siteye manuel olarak bağlan" }, @@ -789,9 +786,6 @@ "create": { "message": "Oluştur" }, - "createAccount": { - "message": "Hesap Oluştur" - }, "createNewWallet": { "message": "Yeni bir cüzdan oluştur" }, @@ -1636,9 +1630,6 @@ "importTokenWarning": { "message": "Herkes, mevcut tokenlerin sahte sürümleri de dahil olmak üzere herhangi bir ada sahip bir token oluşturabilir. Riski tamamen size ait olacak şekikde token ekleyin ve işlem yapın!" }, - "importTokens": { - "message": "tokenleri içe aktar" - }, "importTokensCamelCase": { "message": "Tokenleri içe aktar" }, @@ -1990,9 +1981,6 @@ "missingSettingRequest": { "message": "Buradan talep et" }, - "missingToken": { - "message": "Tokeninizi görmüyor musunuz?" - }, "moreComingSoon": { "message": "Daha fazlası çok yakında..." }, @@ -2235,9 +2223,6 @@ "notEnoughGas": { "message": "Yeterli gaz yok" }, - "notifications": { - "message": "Bildirimler" - }, "notifications10ActionText": { "message": "Ayarlarda ziyaret et", "description": "The 'call to action' on the button, or link, of the 'Visit in Settings' notification. Upon clicking, users will be taken to Settings page." @@ -3214,9 +3199,6 @@ "showHexDataDescription": { "message": "Gönder ekranında on altılık veri alanını göstermek için bunu seçin" }, - "showHide": { - "message": "Göster/gizle" - }, "showIncomingTransactions": { "message": "Gelen işlemleri göster" }, @@ -3416,9 +3398,6 @@ "status": { "message": "Durum" }, - "statusConnected": { - "message": "Bağlandı" - }, "statusNotConnected": { "message": "Bağlanmadı" }, @@ -3923,10 +3902,6 @@ "toggleEthSignField": { "message": "eth_sign taleplerini değiştirin" }, - "toggleTestNetworks": { - "message": "Test ağlarını $1", - "description": "$1 is a clickable link with text defined by the 'showHide' key. The link will open Settings > Advanced where users can enable the display of test networks in the network dropdown." - }, "token": { "message": "Token" }, @@ -4106,10 +4081,6 @@ "troubleStarting": { "message": "MetaMask başlatılırken bir sorun oldu. Bu hata sürekli bir hata olmayabilir; bu yüzden uzantıyı yeniden başlatmayı dene." }, - "troubleTokenBalances": { - "message": "Token bakiyeleriniz yüklenirken sorun yaşadık. Burada görüntüleyebilirsiniz ", - "description": "Followed by a link (here) to view token balances" - }, "trustSiteApprovePermission": { "message": "İzin verdiğinizde paranıza aşağıdaki $1 erişimine izin verirsiniz" }, diff --git a/app/_locales/uk/messages.json b/app/_locales/uk/messages.json index acfaf09ab..8c0a96d29 100644 --- a/app/_locales/uk/messages.json +++ b/app/_locales/uk/messages.json @@ -154,9 +154,6 @@ "connect": { "message": "Під’єднатися" }, - "connectHardwareWallet": { - "message": "Приєднайте апаратний гаманець" - }, "connectingTo": { "message": "Під'єднуємось до $1" }, @@ -193,9 +190,6 @@ "create": { "message": "Створити" }, - "createAccount": { - "message": "Створити обліковий запис" - }, "createPassword": { "message": "Створити пароль" }, @@ -813,10 +807,6 @@ "transferFrom": { "message": "Передати від" }, - "troubleTokenBalances": { - "message": "В нас виникли складнощі при завантаженні ваших залишків токенів. Ви можете переглянути їх", - "description": "Followed by a link (here) to view token balances" - }, "tryAgain": { "message": "Повторити" }, diff --git a/app/_locales/vi/messages.json b/app/_locales/vi/messages.json index ab97ee5c7..6f1395985 100644 --- a/app/_locales/vi/messages.json +++ b/app/_locales/vi/messages.json @@ -642,9 +642,6 @@ "connectAccountOrCreate": { "message": "Kết nối tài khoản hoặc tạo tài khoản mới" }, - "connectHardwareWallet": { - "message": "Kết nối với ví cứng" - }, "connectManually": { "message": "Kết nối thủ công với trang web hiện tại" }, @@ -789,9 +786,6 @@ "create": { "message": "Tạo" }, - "createAccount": { - "message": "Tạo tài khoản" - }, "createNewWallet": { "message": "Tạo ví mới" }, @@ -1636,9 +1630,6 @@ "importTokenWarning": { "message": "Bất kỳ ai cũng tạo được token bằng bất kỳ tên nào, kể cả phiên bản giả của token hiện có. Bạn tự chịu rủi ro khi thêm và giao dịch!" }, - "importTokens": { - "message": "nhập token" - }, "importTokensCamelCase": { "message": "Nhập token" }, @@ -1990,9 +1981,6 @@ "missingSettingRequest": { "message": "Yêu cầu tại đây" }, - "missingToken": { - "message": "Không thấy token của mình?" - }, "moreComingSoon": { "message": "Sắp có thêm..." }, @@ -2235,9 +2223,6 @@ "notEnoughGas": { "message": "Không đủ gas" }, - "notifications": { - "message": "Thông báo" - }, "notifications10ActionText": { "message": "Xem trong phần Cài đặt", "description": "The 'call to action' on the button, or link, of the 'Visit in Settings' notification. Upon clicking, users will be taken to Settings page." @@ -3214,9 +3199,6 @@ "showHexDataDescription": { "message": "Chọn tùy chọn này để hiển thị trường dữ liệu thập lục phân trên màn hình gửi" }, - "showHide": { - "message": "Hiển thị/ẩn" - }, "showIncomingTransactions": { "message": "Hiển thị các giao dịch đến" }, @@ -3416,9 +3398,6 @@ "status": { "message": "Trạng thái" }, - "statusConnected": { - "message": "Đã kết nối" - }, "statusNotConnected": { "message": "Chưa kết nối" }, @@ -3923,10 +3902,6 @@ "toggleEthSignField": { "message": "Bật/tắt yêu cầu eth_sign" }, - "toggleTestNetworks": { - "message": "$1 mạng thử nghiệm", - "description": "$1 is a clickable link with text defined by the 'showHide' key. The link will open Settings > Advanced where users can enable the display of test networks in the network dropdown." - }, "token": { "message": "Token" }, @@ -4106,10 +4081,6 @@ "troubleStarting": { "message": "MetaMask đã gặp sự cố khi khởi động. Lỗi này có thể xảy ra không liên tục, vì vậy hãy thử khởi động lại tiện ích." }, - "troubleTokenBalances": { - "message": "Chúng tôi đã gặp phải vấn đề khi tải số dư token của bạn. Bạn có thể xem số dư ", - "description": "Followed by a link (here) to view token balances" - }, "trustSiteApprovePermission": { "message": "Bằng cách cấp quyền, bạn cho phép $1 sau đây truy cập vào các khoản tiền của mình" }, diff --git a/app/_locales/zh_CN/messages.json b/app/_locales/zh_CN/messages.json index 0fa856db0..2902731db 100644 --- a/app/_locales/zh_CN/messages.json +++ b/app/_locales/zh_CN/messages.json @@ -642,9 +642,6 @@ "connectAccountOrCreate": { "message": "连接账户或创建新账户" }, - "connectHardwareWallet": { - "message": "连接硬件钱包" - }, "connectManually": { "message": "手动连接到当前站点" }, @@ -789,9 +786,6 @@ "create": { "message": "创建" }, - "createAccount": { - "message": "创建账户" - }, "createNewWallet": { "message": "创建新钱包" }, @@ -1636,9 +1630,6 @@ "importTokenWarning": { "message": "任何人都可以用任何名称创建代币,包括现有代币的虚假版本。添加和交易风险自负!" }, - "importTokens": { - "message": "添加资产" - }, "importTokensCamelCase": { "message": "添加代币" }, @@ -1990,9 +1981,6 @@ "missingSettingRequest": { "message": "在这里请求" }, - "missingToken": { - "message": "没有看到您的代币?" - }, "moreComingSoon": { "message": "更多即将到来……" }, @@ -2235,9 +2223,6 @@ "notEnoughGas": { "message": "燃料不足" }, - "notifications": { - "message": "通知" - }, "notifications10ActionText": { "message": "在设置中访问", "description": "The 'call to action' on the button, or link, of the 'Visit in Settings' notification. Upon clicking, users will be taken to Settings page." @@ -3214,9 +3199,6 @@ "showHexDataDescription": { "message": "选择此项以在发送屏幕上显示十六进制数据字段" }, - "showHide": { - "message": "显示/隐藏" - }, "showIncomingTransactions": { "message": "显示传入的交易" }, @@ -3416,9 +3398,6 @@ "status": { "message": "状态" }, - "statusConnected": { - "message": "已连接" - }, "statusNotConnected": { "message": "未连接" }, @@ -3923,10 +3902,6 @@ "toggleEthSignField": { "message": "切换eth_sign请求" }, - "toggleTestNetworks": { - "message": "$1 测试网络", - "description": "$1 is a clickable link with text defined by the 'showHide' key. The link will open Settings > Advanced where users can enable the display of test networks in the network dropdown." - }, "token": { "message": "代币" }, @@ -4106,10 +4081,6 @@ "troubleStarting": { "message": "MetaMask无法启动。可能发生间歇性错误,因此请尝试重新启动扩展程序。" }, - "troubleTokenBalances": { - "message": "我们在加载您的代币余额时遇到问题。您可以查看它们 ", - "description": "Followed by a link (here) to view token balances" - }, "trustSiteApprovePermission": { "message": "通过授予权限,您允许以下 $1 访问您的资金" }, diff --git a/app/_locales/zh_TW/messages.json b/app/_locales/zh_TW/messages.json index fedf06a65..643010601 100644 --- a/app/_locales/zh_TW/messages.json +++ b/app/_locales/zh_TW/messages.json @@ -251,9 +251,6 @@ "connectAccountOrCreate": { "message": "連結帳戶或建立新的" }, - "connectHardwareWallet": { - "message": "連線硬體錢包" - }, "connectManually": { "message": "手動連結到目前的網站" }, @@ -355,9 +352,6 @@ "create": { "message": "建立" }, - "createAccount": { - "message": "建立帳戶" - }, "createPassword": { "message": "建立密碼" }, @@ -1322,9 +1316,6 @@ "stateLogsDescription": { "message": "狀態紀錄包含您的公開帳戶位址和已傳送的交易資訊" }, - "statusConnected": { - "message": "已連結" - }, "statusNotConnected": { "message": "未連結" }, @@ -1473,10 +1464,6 @@ "message": "我們在連線到您的 $1 的時候遇到問題,試著檢查 $2 然後再試一次。", "description": "$1 is the wallet device name; $2 is a link to wallet connection guide" }, - "troubleTokenBalances": { - "message": "無法取得代幣餘額。您可以到這裡查看 ", - "description": "Followed by a link (here) to view token balances" - }, "trustSiteApprovePermission": { "message": "您信任這個網站嗎?當您授予這個權限,$1 就能提領您的 $2 並且代替您自動發送交易。" }, diff --git a/builds.yml b/builds.yml index 950e5249e..e1833d541 100644 --- a/builds.yml +++ b/builds.yml @@ -153,7 +153,6 @@ env: - SUPPORT_LINK: https://support.metamask.io - SUPPORT_REQUEST_LINK: https://metamask.zendesk.com/hc/en-us - SKIP_BACKGROUND_INITIALIZATION: false - - MULTICHAIN: false # TODO(ritave): Move ManifestV3 into a feature? - ENABLE_MV3: false diff --git a/development/ts-migration-dashboard/files-to-convert.json b/development/ts-migration-dashboard/files-to-convert.json index bf123f1e3..08d1a48e1 100644 --- a/development/ts-migration-dashboard/files-to-convert.json +++ b/development/ts-migration-dashboard/files-to-convert.json @@ -470,10 +470,6 @@ "ui/components/app/detected-token/detected-token-values/detected-token-values.test.js", "ui/components/app/detected-token/detected-token.js", "ui/components/app/detected-token/detected-token.test.js", - "ui/components/app/dropdowns/dropdown.js", - "ui/components/app/dropdowns/dropdown.test.js", - "ui/components/app/dropdowns/network-dropdown.js", - "ui/components/app/dropdowns/network-dropdown.test.js", "ui/components/app/edit-gas-display/edit-gas-display.component.js", "ui/components/app/edit-gas-display/edit-gas-display.stories.js", "ui/components/app/edit-gas-display/edit-gas-display.test.js", diff --git a/docs/components/account-menu.md b/docs/components/account-menu.md deleted file mode 100644 index b65a99360..000000000 --- a/docs/components/account-menu.md +++ /dev/null @@ -1,16 +0,0 @@ -# Account Menu - -The account menu is the popup menu which contains options such as: - - Logging out - - Switching accounts - - Creating a new account - - Importing an account - - Connecting a HW wallet - - Looking up info & help - - Adjusting settings - - It can be seen below where it has been outlined with a red box - - ![Screenshot of account menu](https://i.imgur.com/xpkfIuR.png) - - Above screenshot showing the menu bar in MetaMask 6.7.1 diff --git a/test/e2e/benchmark.js b/test/e2e/benchmark.js index df44a6dce..fc7d701a6 100755 --- a/test/e2e/benchmark.js +++ b/test/e2e/benchmark.js @@ -26,7 +26,7 @@ async function measurePage(pageName) { await driver.navigate(); await driver.fill('#password', 'correct horse battery staple'); await driver.press('#password', driver.Key.ENTER); - await driver.findElement('.selected-account__name'); + await driver.findElement('[data-testid="account-menu-icon"]'); await driver.navigate(pageName); await driver.delay(1000); metrics = await driver.collectMetrics(); diff --git a/test/e2e/helpers.js b/test/e2e/helpers.js index ed062a98e..0e7aa4a3d 100644 --- a/test/e2e/helpers.js +++ b/test/e2e/helpers.js @@ -496,12 +496,12 @@ const findAnotherAccountFromAccountList = async ( itemNumber, accountName, ) => { - await driver.clickElement('.account-menu__icon'); - const accountMenuItemSelector = `.account-menu__account:nth-child(${itemNumber})`; - const fourthAccountName = await driver.findElement( - `${accountMenuItemSelector} .account-menu__name`, + await driver.clickElement('[data-testid="account-menu-icon"]'); + const accountMenuItemSelector = `.multichain-account-list-item:nth-child(${itemNumber})`; + const acctName = await driver.findElement( + `${accountMenuItemSelector} .multichain-account-list-item__account-name__button`, ); - assert.equal(await fourthAccountName.getText(), accountName); + assert.equal(await acctName.getText(), accountName); return accountMenuItemSelector; }; diff --git a/test/e2e/metamask-ui.spec.js b/test/e2e/metamask-ui.spec.js index 572e09076..887d46d17 100644 --- a/test/e2e/metamask-ui.spec.js +++ b/test/e2e/metamask-ui.spec.js @@ -128,13 +128,13 @@ describe('MetaMask', function () { describe('Import Secret Recovery Phrase', function () { it('logs out of the vault', async function () { - await driver.clickElement('.account-menu__icon'); + await driver.clickElement('[data-testid="account-options-menu-button"]'); await driver.delay(regularDelayMs); const lockButton = await driver.findClickableElement( - '.account-menu__lock-button', + '[data-testid="global-menu-lock"]', ); - assert.equal(await lockButton.getText(), 'Lock'); + assert.equal(await lockButton.getText(), 'Lock MetaMask'); await lockButton.click(); await driver.delay(regularDelayMs); }); @@ -163,7 +163,7 @@ describe('MetaMask', function () { it('balance renders', async function () { await driver.waitForSelector({ - css: '[data-testid="wallet-balance"] .list-item__heading', + css: '[data-testid="eth-overview__primary-currency"] .currency-display-component__text', text: '1000', }); await driver.delay(regularDelayMs); @@ -246,7 +246,7 @@ describe('MetaMask', function () { it('clicks on the import tokens button', async function () { await driver.clickElement(`[data-testid="home__asset-tab"]`); - await driver.clickElement({ text: 'import tokens', tag: 'a' }); + await driver.clickElement({ text: 'Import tokens', tag: 'button' }); await driver.delay(regularDelayMs); }); @@ -433,7 +433,7 @@ describe('MetaMask', function () { }); await driver.waitForSelector({ - css: '.asset-list-item__token-button', + css: '[data-testid="multichain-token-list-item-value"]', text: '7.5 TST', }); diff --git a/test/e2e/snaps/test-snap-management.spec.js b/test/e2e/snaps/test-snap-management.spec.js index 98503cadc..23878cfe7 100644 --- a/test/e2e/snaps/test-snap-management.spec.js +++ b/test/e2e/snaps/test-snap-management.spec.js @@ -73,15 +73,13 @@ describe('Test Snap Management', function () { await driver.switchToWindow(extensionPage); await driver.delay(1000); - // click on the account menu icon - await driver.clickElement('.account-menu__icon'); - await driver.delay(1000); + // click on the global action menu + await driver.clickElement( + '[data-testid="account-options-menu-button"]', + ); // try to click on the notification item - await driver.clickElement({ - text: 'Settings', - tag: 'div', - }); + await driver.clickElement({ text: 'Settings', tag: 'div' }); await driver.delay(1000); // try to click on the snaps item @@ -129,10 +127,14 @@ describe('Test Snap Management', function () { // check to see that there is one notification await driver.switchToWindow(extensionPage); await driver.delay(1000); + await driver.clickElement( + '[data-testid="account-options-menu-button"]', + ); const notificationResult = await driver.findElement( - '.account-menu__icon__notification-count', + '[data-testid="global-menu-notification-count"]', ); assert.equal(await notificationResult.getText(), '1'); + await driver.clickElement('.menu__background'); // try to remove snap await driver.clickElement({ diff --git a/test/e2e/snaps/test-snap-notification.spec.js b/test/e2e/snaps/test-snap-notification.spec.js index 5113a327a..959dcbf85 100644 --- a/test/e2e/snaps/test-snap-notification.spec.js +++ b/test/e2e/snaps/test-snap-notification.spec.js @@ -85,19 +85,25 @@ describe('Test Snap Notification', function () { await driver.delay(1000); // check to see that there is one notification + await driver.clickElement( + '[data-testid="account-options-menu-button"]', + ); const notificationResult = await driver.findElement( - '.account-menu__icon__notification-count', + '[data-testid="global-menu-notification-count"]', ); assert.equal(await notificationResult.getText(), '1'); + await driver.clickElement('.menu__background'); // try to click on the account menu icon (via xpath) - await driver.clickElement('.account-menu__icon'); + await driver.clickElement( + '[data-testid="account-options-menu-button"]', + ); await driver.delay(500); // try to click on the notification item (via xpath) await driver.clickElement({ text: 'Notifications', - tag: 'div', + tag: 'span', }); await driver.delay(500); diff --git a/test/e2e/tests/account-details.spec.js b/test/e2e/tests/account-details.spec.js index 8b8c990f0..9e70e6ee5 100644 --- a/test/e2e/tests/account-details.spec.js +++ b/test/e2e/tests/account-details.spec.js @@ -24,12 +24,11 @@ describe('Show account details', function () { await driver.fill('#password', 'correct horse battery staple'); await driver.press('#password', driver.Key.ENTER); + await driver.clickElement('[data-testid="account-menu-icon"]'); await driver.clickElement( - '[data-testid="account-options-menu-button"]', - ); - await driver.clickElement( - '[data-testid="account-options-menu__account-details"]', + '[data-testid="account-list-item-menu-button"]', ); + await driver.clickElement('[data-testid="account-list-menu-details"'); const qrCode = await driver.findElement('.qr-code__wrapper'); assert.equal(await qrCode.isDisplayed(), true); diff --git a/test/e2e/tests/add-account.spec.js b/test/e2e/tests/add-account.spec.js index 4b74e61b4..be1590879 100644 --- a/test/e2e/tests/add-account.spec.js +++ b/test/e2e/tests/add-account.spec.js @@ -37,13 +37,15 @@ describe('Add account', function () { await driver.fill('#password', 'correct horse battery staple'); await driver.press('#password', driver.Key.ENTER); - await driver.clickElement('.account-menu__icon'); - await driver.clickElement({ text: 'Create account', tag: 'div' }); + await driver.clickElement('[data-testid="account-menu-icon"]'); + await driver.clickElement( + '[data-testid="multichain-account-menu-add-account"]', + ); + await driver.fill('.new-account-create-form input', '2nd account'); await driver.clickElement({ text: 'Create', tag: 'button' }); - const accountName = await driver.waitForSelector({ - css: '.selected-account__name', + css: '[data-testid="account-menu-icon"]', text: '2nd', }); assert.equal(await accountName.getText(), '2nd account'); @@ -75,9 +77,10 @@ describe('Add account', function () { await driver.delay(regularDelayMs); // Create a new account - await driver.findClickableElement('.account-menu__icon'); await driver.clickElement('[data-testid="account-menu-icon"]'); - await driver.clickElement({ text: 'Create account', tag: 'div' }); + await driver.clickElement( + '[data-testid="multichain-account-menu-add-account"]', + ); await driver.fill('.new-account-create-form input', '2nd account'); await driver.clickElement({ text: 'Create', tag: 'button' }); @@ -96,13 +99,12 @@ describe('Add account', function () { await sendTransaction(driver, secondAccount, '2.8'); // Lock the account - await driver.clickElement('.account-menu__icon'); + await driver.clickElement( + '[data-testid="account-options-menu-button"]', + ); await driver.delay(regularDelayMs); - const lockButton = await driver.findClickableElement( - '.account-menu__lock-button', - ); - await lockButton.click(); + await driver.clickElement('[data-testid="global-menu-lock"]'); await driver.delay(regularDelayMs); // Recover via SRP in "forget password" option @@ -111,6 +113,7 @@ describe('Add account', function () { ); await restoreSeedLink.click(); + await driver.delay(regularDelayMs); await driver.pasteIntoField( @@ -166,24 +169,30 @@ describe('Add account', function () { await driver.delay(regularDelayMs); - await driver.clickElement('.account-menu__icon'); - await driver.clickElement({ text: 'Create account', tag: 'div' }); + await driver.clickElement('[data-testid="account-menu-icon"]'); + + await driver.clickElement( + '[data-testid="multichain-account-menu-add-account"]', + ); await driver.fill('.new-account-create-form input', '2nd account'); await driver.clickElement({ text: 'Create', tag: 'button' }); + // Open account menu again + await driver.clickElement('[data-testid="account-menu-icon"]'); + + // Show account list menu for second account await driver.clickElement( - '[data-testid="account-options-menu-button"]', + '.multichain-account-list-item--selected [data-testid="account-list-item-menu-button"]', ); const menuItems = await driver.findElements('.menu-item'); - assert.equal(menuItems.length, 3); + assert.equal(menuItems.length, 2); // click out of menu await driver.clickElement('.menu__background'); // import with private key - await driver.clickElement('.account-menu__icon'); - await driver.clickElement({ text: 'Import account', tag: 'div' }); + await driver.clickElement({ text: 'Import account', tag: 'button' }); // enter private key', await driver.fill('#private-key-box', testPrivateKey); @@ -191,37 +200,47 @@ describe('Add account', function () { // should show the correct account name const importedAccountName = await driver.findElement( - '.selected-account__name', + '[data-testid="account-menu-icon"]', ); assert.equal(await importedAccountName.getText(), 'Account 3'); + // Open account menu again + await driver.clickElement('[data-testid="account-menu-icon"]'); + + // Show account list menu for second account await driver.clickElement( - '[data-testid="account-options-menu-button"]', + '.multichain-account-list-item--selected [data-testid="account-list-item-menu-button"]', ); - const menuItems2 = await driver.findElements('.menu-item'); - assert.equal(menuItems2.length, 4); + const importedMenuItems = await driver.findElements('.menu-item'); + assert.equal(importedMenuItems.length, 3); - await driver.findElement( - '[data-testid="account-options-menu__remove-account"]', - ); + await driver.findElement('[data-testid="account-list-menu-remove"]'); }, ); }); }); async function checkAccountDetails(driver) { - await driver.clickElement('[data-testid="account-options-menu-button"]'); - await driver.clickElement( - '[data-testid="account-options-menu__account-details"]', - ); + // Open account menu again + await driver.clickElement('[data-testid="account-menu-icon"]'); + + // Select account details for second account + await driver.clickElement( + '.multichain-account-list-item--selected [data-testid="account-list-item-menu-button"]', + ); + await driver.clickElement('[data-testid="account-list-menu-details"]'); + + await driver.findVisibleElement('.popover-bg'); - await driver.findVisibleElement('.account-details-modal'); // get the public address for the "second account" - const accountDOM = await driver.findElement('.qr-code__address'); + const accountDOM = await driver.waitForSelector( + '.qr-code .multichain-address-copy-button', + ); const accountAddress = await accountDOM.getText(); - await driver.clickElement('.account-modal__close'); - await driver.waitForElementNotPresent('.account-details-modal '); + + await driver.clickElement('button[aria-label="Close"]'); + await driver.waitForElementNotPresent('.popover-bg'); return accountAddress; } diff --git a/test/e2e/tests/add-custom-network.spec.js b/test/e2e/tests/add-custom-network.spec.js index d87953bda..789514e53 100644 --- a/test/e2e/tests/add-custom-network.spec.js +++ b/test/e2e/tests/add-custom-network.spec.js @@ -1,6 +1,11 @@ const { strict: assert } = require('assert'); const FixtureBuilder = require('../fixture-builder'); -const { convertToHexValue, withFixtures, openDapp } = require('../helpers'); +const { + convertToHexValue, + withFixtures, + openDapp, + regularDelayMs, +} = require('../helpers'); describe('Custom network', function () { const chainID = '42161'; @@ -232,25 +237,28 @@ describe('Custom network', function () { title: this.test.title, }, async ({ driver }) => { + console.log('gets here -1'); await driver.navigate(); await driver.fill('#password', 'correct horse battery staple'); await driver.press('#password', driver.Key.ENTER); - await driver.clickElement('.account-menu__icon'); - await driver.clickElement({ tag: 'div', text: 'Settings' }); + // Avoid a stale element error + await driver.delay(regularDelayMs); + + await driver.clickElement('[data-testid="network-display"]'); - await driver.clickElement('.network-display'); await driver.clickElement({ tag: 'button', text: 'Add network' }); - await driver.clickElement({ tag: 'button', text: 'Add', }); + // verify network details const title = await driver.findElement({ tag: 'h6', text: 'Arbitrum One', }); + assert.equal( await title.getText(), 'Arbitrum One', @@ -298,7 +306,7 @@ describe('Custom network', function () { }); // verify network switched const networkDisplayed = await driver.findElement({ - tag: 'span', + tag: 'p', text: 'Arbitrum One', }); assert.equal( @@ -322,10 +330,10 @@ describe('Custom network', function () { await driver.fill('#password', 'correct horse battery staple'); await driver.press('#password', driver.Key.ENTER); - await driver.clickElement('.account-menu__icon'); - await driver.clickElement({ tag: 'div', text: 'Settings' }); + // Avoid a stale element error + await driver.delay(regularDelayMs); - await driver.clickElement('.network-display'); + await driver.clickElement('[data-testid="network-display"]'); await driver.clickElement({ tag: 'button', text: 'Add network' }); // had to put all Add elements in list since list is changing and networks are not always in same order @@ -342,11 +350,13 @@ describe('Custom network', function () { }); // verify if added network is in list of networks - const networkDisplay = await driver.findElement('.network-display'); + const networkDisplay = await driver.findElement( + '[data-testid="network-display"]', + ); await networkDisplay.click(); const arbitrumNetwork = await driver.findElements({ - text: `Arbitrum One`, + text: 'Arbitrum One', tag: 'span', }); assert.ok(arbitrumNetwork.length, 1); @@ -378,12 +388,14 @@ describe('Custom network', function () { await driver.fill('#password', 'correct horse battery staple'); await driver.press('#password', driver.Key.ENTER); - await driver.clickElement('.account-menu__icon'); + await driver.clickElement( + '[data-testid="account-options-menu-button"]', + ); await driver.clickElement({ text: 'Settings', tag: 'div' }); await driver.clickElement({ text: 'Networks', tag: 'div' }); const arbitrumNetwork = await driver.clickElement({ - text: `Arbitrum One`, + text: 'Arbitrum One', tag: 'div', }); diff --git a/test/e2e/tests/add-hide-token.spec.js b/test/e2e/tests/add-hide-token.spec.js index 74b66f130..f37508adf 100644 --- a/test/e2e/tests/add-hide-token.spec.js +++ b/test/e2e/tests/add-hide-token.spec.js @@ -50,16 +50,16 @@ describe('Hide token', function () { await driver.press('#password', driver.Key.ENTER); await driver.waitForSelector({ - css: '.asset-list-item__token-button', + css: '[data-testid="multichain-token-list-item-value"]', text: '0 TST', }); - let assets = await driver.findElements('.asset-list-item'); + let assets = await driver.findElements('.multichain-token-list-item'); assert.equal(assets.length, 2); await driver.clickElement({ text: 'Tokens', tag: 'button' }); - await driver.clickElement({ text: 'TST', tag: 'span' }); + await driver.clickElement({ text: 'TST', tag: 'p' }); await driver.clickElement('[data-testid="asset-options__button"]'); @@ -74,7 +74,7 @@ describe('Hide token', function () { // wait for confirm hide modal to be removed from DOM. await confirmHideModal.waitForElementState('hidden'); - assets = await driver.findElements('.asset-list-item'); + assets = await driver.findElements('.multichain-token-list-item'); assert.equal(assets.length, 1); }, ); @@ -106,7 +106,7 @@ describe('Add existing token using search', function () { await driver.fill('#password', 'correct horse battery staple'); await driver.press('#password', driver.Key.ENTER); - await driver.clickElement({ text: 'import tokens', tag: 'a' }); + await driver.clickElement({ text: 'Import tokens', tag: 'button' }); await driver.fill('#search-tokens', 'BAT'); await driver.clickElement({ text: 'BAT', diff --git a/test/e2e/tests/address-book.spec.js b/test/e2e/tests/address-book.spec.js index b1c40f409..a7dd15164 100644 --- a/test/e2e/tests/address-book.spec.js +++ b/test/e2e/tests/address-book.spec.js @@ -102,7 +102,9 @@ describe('Address Book', function () { await driver.fill('#password', 'correct horse battery staple'); await driver.press('#password', driver.Key.ENTER); - await driver.clickElement('.identicon__address-wrapper'); + await driver.clickElement( + '[data-testid="account-options-menu-button"]', + ); await driver.clickElement({ text: 'Settings', tag: 'div' }); await driver.clickElement({ text: 'Contacts', tag: 'div' }); await driver.clickElement('[data-testid="recipient"]'); @@ -163,7 +165,9 @@ describe('Address Book', function () { await driver.fill('#password', 'correct horse battery staple'); await driver.press('#password', driver.Key.ENTER); - await driver.clickElement('.identicon__address-wrapper'); + await driver.clickElement( + '[data-testid="account-options-menu-button"]', + ); await driver.clickElement({ text: 'Settings', tag: 'div' }); await driver.clickElement({ text: 'Contacts', tag: 'div' }); diff --git a/test/e2e/tests/advanced-settings.spec.js b/test/e2e/tests/advanced-settings.spec.js index 88a4a7f27..58f5d61da 100644 --- a/test/e2e/tests/advanced-settings.spec.js +++ b/test/e2e/tests/advanced-settings.spec.js @@ -26,7 +26,9 @@ describe('Advanced Settings', function () { await driver.fill('#password', 'correct horse battery staple'); await driver.press('#password', driver.Key.ENTER); - await driver.clickElement('.account-menu__icon'); + await driver.clickElement( + '[data-testid="account-options-menu-button"]', + ); await driver.clickElement({ text: 'Settings', tag: 'div' }); await driver.clickElement({ text: 'Advanced', tag: 'div' }); diff --git a/test/e2e/tests/auto-lock.spec.js b/test/e2e/tests/auto-lock.spec.js index c49680f0d..71a25966b 100644 --- a/test/e2e/tests/auto-lock.spec.js +++ b/test/e2e/tests/auto-lock.spec.js @@ -25,7 +25,9 @@ describe('Auto-Lock Timer', function () { await driver.fill('#password', 'correct horse battery staple'); await driver.press('#password', driver.Key.ENTER); // Set Auto Lock Timer - await driver.clickElement('.account-menu__icon'); + await driver.clickElement( + '[data-testid="account-options-menu-button"]', + ); await driver.clickElement({ text: 'Settings', tag: 'div' }); await driver.clickElement({ text: 'Advanced', tag: 'div' }); const sixSecsInMins = '0.1'; diff --git a/test/e2e/tests/backup-restore.spec.js b/test/e2e/tests/backup-restore.spec.js index cf90718a5..d52cf1fa6 100644 --- a/test/e2e/tests/backup-restore.spec.js +++ b/test/e2e/tests/backup-restore.spec.js @@ -70,7 +70,9 @@ describe('Backup and Restore', function () { await driver.press('#password', driver.Key.ENTER); // Download user settings - await driver.clickElement('.account-menu__icon'); + await driver.clickElement( + '[data-testid="account-options-menu-button"]', + ); await driver.clickElement({ text: 'Settings', tag: 'div' }); await driver.clickElement({ text: 'Advanced', tag: 'div' }); await driver.clickElement({ @@ -107,7 +109,9 @@ describe('Backup and Restore', function () { await driver.press('#password', driver.Key.ENTER); // Restore - await driver.clickElement('.account-menu__icon'); + await driver.clickElement( + '[data-testid="account-options-menu-button"]', + ); await driver.clickElement({ text: 'Settings', tag: 'div' }); await driver.clickElement({ text: 'Advanced', tag: 'div' }); const restore = await driver.findElement('#restore-file'); diff --git a/test/e2e/tests/chain-interactions.spec.js b/test/e2e/tests/chain-interactions.spec.js index 6597f67c1..4e474ef4e 100644 --- a/test/e2e/tests/chain-interactions.spec.js +++ b/test/e2e/tests/chain-interactions.spec.js @@ -55,9 +55,12 @@ describe('Chain Interactions', function () { await driver.switchToWindow(extension); // verify networks - const networkDisplay = await driver.findElement('.network-display'); - await networkDisplay.click(); + const networkDisplay = await driver.findElement( + '[data-testid="network-display"] p', + ); assert.equal(await networkDisplay.getText(), 'Localhost 8545'); + + await driver.clickElement('[data-testid="network-display"]'); const ganacheChain = await driver.findElements({ text: `Localhost ${port}`, tag: 'span', @@ -101,7 +104,7 @@ describe('Chain Interactions', function () { // verify current network const networkDisplay = await driver.findElement( - '[data-testid="network-display"]', + '[data-testid="network-display"] p', ); assert.equal(await networkDisplay.getText(), `Localhost ${port}`); }, diff --git a/test/e2e/tests/clear-activity.spec.js b/test/e2e/tests/clear-activity.spec.js index a16254c9c..c6767271c 100644 --- a/test/e2e/tests/clear-activity.spec.js +++ b/test/e2e/tests/clear-activity.spec.js @@ -44,12 +44,11 @@ describe('Clear account activity', function () { }); // Clear activity and nonce data - await driver.clickElement('.account-menu__icon'); + await driver.clickElement( + '[data-testid="account-options-menu-button"]', + ); await driver.clickElement({ text: 'Settings', tag: 'div' }); - await driver.clickElement({ - css: '.tab-bar__tab__content__title', - text: 'Advanced', - }); + await driver.clickElement({ text: 'Advanced', tag: 'div' }); await driver.clickElement({ text: 'Clear activity tab data', tag: 'button', diff --git a/test/e2e/tests/custom-rpc-history.spec.js b/test/e2e/tests/custom-rpc-history.spec.js index 8696d2f7f..8b43ab712 100644 --- a/test/e2e/tests/custom-rpc-history.spec.js +++ b/test/e2e/tests/custom-rpc-history.spec.js @@ -1,5 +1,9 @@ const { strict: assert } = require('assert'); -const { convertToHexValue, withFixtures } = require('../helpers'); +const { + convertToHexValue, + withFixtures, + regularDelayMs, +} = require('../helpers'); const FixtureBuilder = require('../fixture-builder'); describe('Stores custom RPC history', function () { @@ -31,7 +35,7 @@ describe('Stores custom RPC history', function () { const networkName = 'Secondary Ganache Testnet'; await driver.waitForElementNotPresent('.loading-overlay'); - await driver.clickElement('.network-display'); + await driver.clickElement('[data-testid="network-display"]'); await driver.clickElement({ text: 'Add network', tag: 'button' }); @@ -66,7 +70,7 @@ describe('Stores custom RPC history', function () { '.networks-tab__add-network-form-footer .btn-primary', ); - await driver.findElement({ text: networkName, tag: 'span' }); + await driver.findElement({ text: networkName, tag: 'p' }); }, ); }); @@ -87,7 +91,7 @@ describe('Stores custom RPC history', function () { const duplicateRpcUrl = 'https://mainnet.infura.io/v3/'; await driver.waitForElementNotPresent('.loading-overlay'); - await driver.clickElement('.network-display'); + await driver.clickElement('[data-testid="network-display"]'); await driver.clickElement({ text: 'Add network', tag: 'button' }); @@ -131,7 +135,7 @@ describe('Stores custom RPC history', function () { const duplicateChainId = '1'; await driver.waitForElementNotPresent('.loading-overlay'); - await driver.clickElement('.network-display'); + await driver.clickElement('[data-testid="network-display"]'); await driver.clickElement({ text: 'Add network', tag: 'button' }); @@ -179,7 +183,7 @@ describe('Stores custom RPC history', function () { await driver.press('#password', driver.Key.ENTER); await driver.waitForElementNotPresent('.loading-overlay'); - await driver.clickElement('.network-display'); + await driver.clickElement('[data-testid="network-display"]'); await driver.clickElement({ text: 'Ethereum Mainnet', tag: 'span' }); }, @@ -218,12 +222,16 @@ describe('Stores custom RPC history', function () { await driver.press('#password', driver.Key.ENTER); await driver.waitForElementNotPresent('.loading-overlay'); - await driver.clickElement('.network-display'); + await driver.clickElement('[data-testid="network-display"]'); + + await driver.clickElement('.toggle-button'); + + await driver.delay(regularDelayMs); // only recent 3 are found and in correct order (most recent at the top) const customRpcs = await driver.findElements({ text: 'http://127.0.0.1:8545/', - tag: 'span', + tag: 'div', }); // click Mainnet to dismiss network dropdown @@ -267,7 +275,7 @@ describe('Stores custom RPC history', function () { await driver.press('#password', driver.Key.ENTER); await driver.waitForElementNotPresent('.loading-overlay'); - await driver.clickElement('.network-display'); + await driver.clickElement('[data-testid="network-display"]'); await driver.clickElement({ text: 'Add network', tag: 'button' }); diff --git a/test/e2e/tests/custom-token-add-approve.spec.js b/test/e2e/tests/custom-token-add-approve.spec.js index 086651f87..fe78862d4 100644 --- a/test/e2e/tests/custom-token-add-approve.spec.js +++ b/test/e2e/tests/custom-token-add-approve.spec.js @@ -46,7 +46,7 @@ describe('Create token, approve token and approve token without gas', function ( await driver.clickElement(`[data-testid="home__asset-tab"]`); await driver.clickElement({ tag: 'button', text: 'Tokens' }); - await driver.clickElement({ text: 'import tokens', tag: 'a' }); + await driver.clickElement({ text: 'Import tokens', tag: 'button' }); await driver.clickElement({ text: 'Custom token', tag: 'button', @@ -69,11 +69,10 @@ describe('Create token, approve token and approve token without gas', function ( // renders balance for newly created token await driver.clickElement('.app-header__logo-container'); await driver.clickElement({ tag: 'button', text: 'Tokens' }); - const asset = await driver.waitForSelector({ - css: '.asset-list-item__token-value', - text: '10', + await driver.waitForSelector({ + css: '[data-testid="multichain-token-list-item-value"]', + text: '10 TST', }); - assert.equal(await asset.getText(), '10'); }, ); }); diff --git a/test/e2e/tests/dapp-interactions.spec.js b/test/e2e/tests/dapp-interactions.spec.js index bfd0a8e22..dae045ef0 100644 --- a/test/e2e/tests/dapp-interactions.spec.js +++ b/test/e2e/tests/dapp-interactions.spec.js @@ -43,8 +43,10 @@ describe('Dapp interactions', function () { // Lock Account await driver.switchToWindow(extension); - await driver.clickElement('.account-menu__icon'); - await driver.clickElement({ text: 'Lock', tag: 'button' }); + await driver.clickElement( + '[data-testid="account-options-menu-button"]', + ); + await driver.clickElement({ text: 'Lock', tag: 'div' }); // Trigger Notification await driver.switchToWindowWithTitle('E2E Test Dapp', windowHandles); @@ -88,8 +90,10 @@ describe('Dapp interactions', function () { // Lock Account await driver.switchToWindow(extension); - await driver.clickElement('.account-menu__icon'); - await driver.clickElement({ text: 'Lock', tag: 'button' }); + await driver.clickElement( + '[data-testid="account-options-menu-button"]', + ); + await driver.clickElement({ text: 'Lock', tag: 'div' }); // Connect to Dapp1 await openDapp(driver, null, DAPP_ONE_URL); diff --git a/test/e2e/tests/encrypt-decrypt.spec.js b/test/e2e/tests/encrypt-decrypt.spec.js index a311b7545..47e453de9 100644 --- a/test/e2e/tests/encrypt-decrypt.spec.js +++ b/test/e2e/tests/encrypt-decrypt.spec.js @@ -152,7 +152,6 @@ describe('Encrypt Decrypt', function () { await driver.fill('#password', 'correct horse battery staple'); await driver.press('#password', driver.Key.ENTER); - await driver.clickElement('.account-menu__icon'); await openDapp(driver); // ------ Get Encryption key and display ETH ------ diff --git a/test/e2e/tests/from-import-ui.spec.js b/test/e2e/tests/from-import-ui.spec.js index e0966999d..d964b7b41 100644 --- a/test/e2e/tests/from-import-ui.spec.js +++ b/test/e2e/tests/from-import-ui.spec.js @@ -25,7 +25,6 @@ const ganacheOptions = { describe('MetaMask Import UI', function () { it('Importing wallet using Secret Recovery Phrase', async function () { const testPassword = 'correct horse battery staple'; - const testAddress = '0x0Cc5261AB8cE458dc977078A3623E2BaDD27afD3'; await withFixtures( { @@ -44,29 +43,31 @@ describe('MetaMask Import UI', function () { ); // Show account information + await driver.clickElement('[data-testid="account-menu-icon"]'); + await driver.clickElement( + '[data-testid="account-list-item-menu-button"]', + ); + await driver.clickElement('[data-testid="account-list-menu-details"'); + await driver.findVisibleElement('.qr-code__wrapper'); + + // shows a QR code for the account + await driver.findVisibleElement('.popover-container'); + // shows the correct account address + const address = await driver.findElement( + '.multichain-address-copy-button', + ); + assert.equal(await address.getText(), '0x0Cc...afD3'); + + await driver.clickElement('[data-testid="popover-close"]'); + + // logs out of the account await driver.clickElement( '[data-testid="account-options-menu-button"]', ); - await driver.clickElement( - '[data-testid="account-options-menu__account-details"]', - ); - await driver.findVisibleElement('.qr-code__wrapper'); - // shows a QR code for the account - const detailsModal = await driver.findVisibleElement('span .modal'); - // shows the correct account address - const address = await driver.findElement('.qr-code__address'); - - assert.equal(await address.getText(), testAddress); - - await driver.clickElement('.account-modal__close'); - await detailsModal.waitForElementState('hidden'); - - // logs out of the account - await driver.clickElement('.account-menu__icon .identicon'); const lockButton = await driver.findClickableElement( - '.account-menu__lock-button', + '[data-testid="global-menu-lock"]', ); - assert.equal(await lockButton.getText(), 'Lock'); + assert.equal(await lockButton.getText(), 'Lock MetaMask'); await lockButton.click(); // accepts the account password after lock @@ -76,12 +77,13 @@ describe('MetaMask Import UI', function () { // Create a new account // switches to localhost await driver.delay(largeDelayMs); - await driver.clickElement('.network-display'); + await driver.clickElement('[data-testid="network-display"]'); + await driver.clickElement('.toggle-button'); await driver.clickElement({ text: 'Localhost', tag: 'span' }); // choose Create account from the account menu - await driver.clickElement('.account-menu__icon'); - await driver.clickElement({ text: 'Create account', tag: 'div' }); + await driver.clickElement('[data-testid="account-menu-icon"]'); + await driver.clickElement({ text: 'Add account', tag: 'button' }); // set account name await driver.fill('.new-account-create-form input', '2nd account'); @@ -89,13 +91,19 @@ describe('MetaMask Import UI', function () { await driver.clickElement({ text: 'Create', tag: 'button' }); // should show the correct account name - const accountName = await driver.findElement('.selected-account__name'); - assert.equal(await accountName.getText(), '2nd account'); + const accountName = await driver.isElementPresent({ + tag: 'span', + text: '2nd account', + }); + + assert.equal(accountName, true, 'Account name is not correct'); // Switch back to original account // chooses the original account from the account menu - await driver.clickElement('.account-menu__icon'); - await driver.clickElement('.account-menu__name'); + await driver.clickElement('[data-testid="account-menu-icon"]'); + await driver.clickElement( + '.multichain-account-list-item__account-name__button', + ); // Send ETH from inside MetaMask // starts a send transaction @@ -151,15 +159,16 @@ describe('MetaMask Import UI', function () { ); // Show account information + await driver.clickElement('[data-testid="account-menu-icon"]'); await driver.clickElement( - '[data-testid="account-options-menu-button"]', - ); - await driver.clickElement( - '[data-testid="account-options-menu__account-details"]', + '[data-testid="account-list-item-menu-button"]', ); + await driver.clickElement('[data-testid="account-list-menu-details"'); await driver.findVisibleElement('.qr-code__wrapper'); // shows the correct account address - const address = await driver.findElement('.qr-code__address'); + const address = await driver.findElement( + '.qr-code [data-testid="address-copy-button-text"]', + ); assert.equal(await address.getText(), testAddress); }, @@ -188,16 +197,18 @@ describe('MetaMask Import UI', function () { // Imports an account with private key // choose Create account from the account menu - await driver.clickElement('.account-menu__icon'); - await driver.clickElement({ text: 'Import account', tag: 'div' }); + await driver.clickElement('[data-testid="account-menu-icon"]'); + await driver.clickElement({ text: 'Import account', tag: 'button' }); // enter private key', + await driver.delay(regularDelayMs); await driver.fill('#private-key-box', testPrivateKey1); + await driver.delay(regularDelayMs); await driver.clickElement({ text: 'Import', tag: 'button' }); // should show the correct account name const importedAccountName = await driver.findElement( - '.selected-account__name', + '[data-testid="account-menu-icon"]', ); assert.equal(await importedAccountName.getText(), 'Account 4'); @@ -210,53 +221,48 @@ describe('MetaMask Import UI', function () { ); // confirm label is present on the same menu item const importedLabel = await driver.findElement( - `${accountMenuItemSelector} .keyring-label`, + `${accountMenuItemSelector} .mm-tag`, ); - assert.equal(await importedLabel.getText(), 'IMPORTED'); + assert.equal(await importedLabel.getText(), 'Imported'); // Imports and removes an account // choose Create account from the account menu - await driver.clickElement({ text: 'Import account', tag: 'div' }); + await driver.clickElement({ text: 'Import account', tag: 'button' }); // enter private key await driver.fill('#private-key-box', testPrivateKey2); await driver.clickElement({ text: 'Import', tag: 'button' }); // should see new account in account menu const importedAccount2Name = await driver.findElement( - '.selected-account__name', + '[data-testid="account-menu-icon"]', ); assert.equal(await importedAccount2Name.getText(), 'Account 5'); - await driver.clickElement('.account-menu__icon'); + await driver.clickElement('[data-testid="account-menu-icon"]'); const accountListItems = await driver.findElements( - '.account-menu__account', + '.multichain-account-list-item', ); assert.equal(accountListItems.length, 5); - await driver.clickPoint('.account-menu__icon', 0, 0); + await driver.clickElement( + '.multichain-account-list-item--selected [data-testid="account-list-item-menu-button"]', + ); - // should open the remove account modal - await driver.clickElement( - '[data-testid="account-options-menu-button"]', - ); - await driver.clickElement( - '[data-testid="account-options-menu__remove-account"]', - ); - await driver.findElement('.confirm-remove-account__account'); + await driver.clickElement('[data-testid="account-list-menu-remove"]'); // should remove the account await driver.clickElement({ text: 'Remove', tag: 'button' }); // Wait until selected account switches away from removed account to first account await driver.waitForSelector({ - css: '.selected-account__name', + css: '[data-testid="account-menu-icon"]', text: 'Account 1', }); await driver.delay(regularDelayMs); - await driver.clickElement('.account-menu__icon'); + await driver.clickElement('[data-testid="account-menu-icon"]'); const accountListItemsAfterRemoval = await driver.findElements( - '.account-menu__account', + '.multichain-account-list-item', ); assert.equal(accountListItemsAfterRemoval.length, 4); }, @@ -279,8 +285,8 @@ describe('MetaMask Import UI', function () { await driver.press('#password', driver.Key.ENTER); // Imports an account with JSON file - await driver.clickElement('.account-menu__icon'); - await driver.clickElement({ text: 'Import account', tag: 'div' }); + await driver.clickElement('[data-testid="account-menu-icon"]'); + await driver.clickElement({ text: 'Import account', tag: 'button' }); await driver.clickElement('.dropdown__select'); await driver.clickElement({ text: 'JSON File', tag: 'option' }); @@ -301,7 +307,7 @@ describe('MetaMask Import UI', function () { // should show the correct account name const importedAccountName = await driver.findElement( - '.selected-account__name', + '[data-testid="account-menu-icon"]', ); assert.equal(await importedAccountName.getText(), 'Account 4'); @@ -315,12 +321,12 @@ describe('MetaMask Import UI', function () { // confirm label is present on the same menu item const importedLabel = await driver.findElement( - `${accountMenuItemSelector} .keyring-label`, + `${accountMenuItemSelector} .mm-tag`, ); - assert.equal(await importedLabel.getText(), 'IMPORTED'); + assert.equal(await importedLabel.getText(), 'Imported'); const accountListItems = await driver.findElements( - '.account-menu__account', + '.multichain-account-list-item', ); assert.equal(accountListItems.length, 4); }, @@ -345,8 +351,8 @@ describe('MetaMask Import UI', function () { await driver.press('#password', driver.Key.ENTER); // choose Import Account from the account menu - await driver.clickElement('.account-menu__icon'); - await driver.clickElement({ text: 'Import account', tag: 'div' }); + await driver.clickElement('[data-testid="account-menu-icon"]'); + await driver.clickElement({ text: 'Import account', tag: 'button' }); // enter private key', await driver.fill('#private-key-box', testPrivateKey); @@ -375,10 +381,10 @@ describe('MetaMask Import UI', function () { await driver.press('#password', driver.Key.ENTER); // choose Connect hardware wallet from the account menu - await driver.clickElement('.account-menu__icon'); + await driver.clickElement('[data-testid="account-menu-icon"]'); await driver.clickElement({ - text: 'Connect hardware wallet', - tag: 'div', + text: 'Hardware wallet', + tag: 'button', }); await driver.delay(regularDelayMs); diff --git a/test/e2e/tests/incremental-security.spec.js b/test/e2e/tests/incremental-security.spec.js index 6c243bd79..29535738c 100644 --- a/test/e2e/tests/incremental-security.spec.js +++ b/test/e2e/tests/incremental-security.spec.js @@ -65,21 +65,21 @@ describe('Incremental Security', function () { await driver.clickElement('[data-testid="pin-extension-done"]'); // open account menu + await driver.clickElement('[data-testid="account-menu-icon"]'); await driver.clickElement( - '[data-testid="account-options-menu-button"]', - ); - await driver.clickElement( - '[data-testid="account-options-menu__account-details"]', + '.multichain-account-list-item--selected [data-testid="account-list-item-menu-button"]', ); + await driver.clickElement('[data-testid="account-list-menu-details"'); // gets the current accounts address - const address = await driver.findElement('.qr-code__address'); + const address = await driver.findElement( + '.qr-code .multichain-address-copy-button', + ); const publicAddress = await address.getText(); // wait for account modal to be visible - const accountModal = await driver.findVisibleElement('span .modal'); - - await driver.clickElement('.account-modal__close'); + const accountModal = await driver.findVisibleElement('.popover-bg'); + await driver.clickElement('[data-testid="popover-close"]'); // wait for account modal to be removed from DOM await accountModal.waitForElementState('hidden'); diff --git a/test/e2e/tests/lock-account.spec.js b/test/e2e/tests/lock-account.spec.js index 1fd2910a6..5b03fd724 100644 --- a/test/e2e/tests/lock-account.spec.js +++ b/test/e2e/tests/lock-account.spec.js @@ -24,17 +24,19 @@ describe('Lock and unlock', function () { await driver.fill('#password', 'correct horse battery staple'); await driver.press('#password', driver.Key.ENTER); - await driver.clickElement('.account-menu__icon'); - const lockButton = await driver.findClickableElement( - '.account-menu__lock-button', + await driver.clickElement( + '[data-testid="account-options-menu-button"]', ); - assert.equal(await lockButton.getText(), 'Lock'); + const lockButton = await driver.findClickableElement( + '[data-testid="global-menu-lock"]', + ); + assert.equal(await lockButton.getText(), 'Lock MetaMask'); await lockButton.click(); await driver.fill('#password', 'correct horse battery staple'); await driver.press('#password', driver.Key.ENTER); const walletBalance = await driver.findElement( - '[data-testid="wallet-balance"] .list-item__heading', + '.eth-overview__primary-balance', ); assert.equal(/^25\s*ETH$/u.test(await walletBalance.getText()), true); }, diff --git a/test/e2e/tests/metamask-responsive-ui.spec.js b/test/e2e/tests/metamask-responsive-ui.spec.js index 5d69b8c7c..ff4fd09ab 100644 --- a/test/e2e/tests/metamask-responsive-ui.spec.js +++ b/test/e2e/tests/metamask-responsive-ui.spec.js @@ -72,7 +72,7 @@ describe('MetaMask Responsive UI', function () { // assert balance const balance = await driver.findElement( - '[data-testid="wallet-balance"]', + '[data-testid="eth-overview__primary-currency"]', ); assert.ok(/^0\sETH$/u.test(await balance.getText())); }, diff --git a/test/e2e/tests/onboarding.spec.js b/test/e2e/tests/onboarding.spec.js index e00b96a61..f1ea9b262 100644 --- a/test/e2e/tests/onboarding.spec.js +++ b/test/e2e/tests/onboarding.spec.js @@ -271,8 +271,9 @@ describe('MetaMask onboarding', function () { // Add custome network localhost 8546 during onboarding await driver.clickElement({ text: 'Advanced configuration', tag: 'a' }); + await driver.clickElement('.mm-picker-network'); await driver.clickElement({ - text: 'Add custom network', + text: 'Add network', tag: 'button', }); @@ -301,7 +302,7 @@ describe('MetaMask onboarding', function () { // Check localhost 8546 is selected and its balance value is correct const networkDisplay = await driver.findElement( - '[data-testid="network-display"]', + '[data-testid="network-display"] p', ); assert.equal(await networkDisplay.getText(), networkName); diff --git a/test/e2e/tests/permissions.spec.js b/test/e2e/tests/permissions.spec.js index 5ea819b64..648e0552e 100644 --- a/test/e2e/tests/permissions.spec.js +++ b/test/e2e/tests/permissions.spec.js @@ -55,9 +55,7 @@ describe('Permissions', function () { await driver.clickElement( '[data-testid="account-options-menu-button"]', ); - await driver.clickElement( - '[data-testid="account-options-menu__connected-sites"]', - ); + await driver.clickElement('.menu-item'); await driver.findElement({ text: 'Connected sites', diff --git a/test/e2e/tests/provider-api.spec.js b/test/e2e/tests/provider-api.spec.js index 2321e0157..b8c0e0edc 100644 --- a/test/e2e/tests/provider-api.spec.js +++ b/test/e2e/tests/provider-api.spec.js @@ -46,7 +46,7 @@ describe('MetaMask', function () { const windowHandles = await driver.getAllWindowHandles(); await driver.switchToWindow(windowHandles[0]); - await driver.clickElement('.network-display'); + await driver.clickElement('[data-testid="network-display"]'); await driver.clickElement({ text: 'Ethereum Mainnet', tag: 'span' }); await driver.switchToWindowWithTitle('E2E Test Dapp', windowHandles); diff --git a/test/e2e/tests/send-hex-address.spec.js b/test/e2e/tests/send-hex-address.spec.js index b1d8edfad..414176bb3 100644 --- a/test/e2e/tests/send-hex-address.spec.js +++ b/test/e2e/tests/send-hex-address.spec.js @@ -141,7 +141,9 @@ describe('Send ERC20 to a 40 character hexadecimal address', function () { // Send TST await driver.clickElement('[data-testid="home__asset-tab"]'); - await driver.clickElement('.token-cell'); + await driver.clickElement( + '[data-testid="multichain-token-list-button"]', + ); await driver.clickElement('[data-testid="eth-overview-send"]'); // Paste address without hex prefix @@ -155,14 +157,14 @@ describe('Send ERC20 to a 40 character hexadecimal address', function () { }); await driver.waitForSelector({ css: '.transaction-detail-item', - text: '0.00008455 ETH', + text: '0.000042 ETH', }); await driver.clickElement({ text: 'Next', tag: 'button' }); // Confirm transaction await driver.waitForSelector({ css: '.confirm-page-container-summary__title', - text: '0 TST', + text: '0', }); await driver.clickElement({ text: 'Confirm', tag: 'button' }); await driver.clickElement('[data-testid="home__activity-tab"]'); @@ -203,7 +205,9 @@ describe('Send ERC20 to a 40 character hexadecimal address', function () { // Send TST await driver.clickElement('[data-testid="home__asset-tab"]'); - await driver.clickElement('.token-cell'); + await driver.clickElement( + '[data-testid="multichain-token-list-button"]', + ); await driver.clickElement('[data-testid="eth-overview-send"]'); // Type address without hex prefix @@ -217,14 +221,14 @@ describe('Send ERC20 to a 40 character hexadecimal address', function () { }); await driver.waitForSelector({ css: '.transaction-detail-item', - text: '0.00008455 ETH', + text: '0.000042 ETH', }); await driver.clickElement({ text: 'Next', tag: 'button' }); // Confirm transaction await driver.waitForSelector({ css: '.confirm-page-container-summary__title', - text: '0 TST', + text: '0', }); await driver.clickElement({ text: 'Confirm', tag: 'button' }); await driver.clickElement('[data-testid="home__activity-tab"]'); diff --git a/test/e2e/tests/send-to-contract.spec.js b/test/e2e/tests/send-to-contract.spec.js index 62a6a58e4..b8dfd4f5e 100644 --- a/test/e2e/tests/send-to-contract.spec.js +++ b/test/e2e/tests/send-to-contract.spec.js @@ -34,7 +34,9 @@ describe('Send ERC20 token to contract address', function () { // Send TST await driver.clickElement('[data-testid="home__asset-tab"]'); - await driver.clickElement('.token-cell'); + await driver.clickElement( + '[data-testid="multichain-token-list-button"]', + ); await driver.clickElement('[data-testid="eth-overview-send"]'); // Type contract address diff --git a/test/e2e/tests/settings-general.spec.js b/test/e2e/tests/settings-general.spec.js index 4279f6908..ad937acd0 100644 --- a/test/e2e/tests/settings-general.spec.js +++ b/test/e2e/tests/settings-general.spec.js @@ -26,7 +26,9 @@ describe('Settings', function () { await driver.press('#password', driver.Key.ENTER); // goes to the settings screen - await driver.clickElement('.account-menu__icon'); + await driver.clickElement( + '[data-testid="account-options-menu-button"]', + ); await driver.clickElement({ text: 'Settings', tag: 'div' }); // finds the jazzicon toggle turned on diff --git a/test/e2e/tests/settings-search.spec.js b/test/e2e/tests/settings-search.spec.js index c4af0ccc2..343b16ccf 100644 --- a/test/e2e/tests/settings-search.spec.js +++ b/test/e2e/tests/settings-search.spec.js @@ -35,7 +35,9 @@ describe('Settings Search', function () { await driver.fill('#password', 'correct horse battery staple'); await driver.press('#password', driver.Key.ENTER); - await driver.clickElement('.account-menu__icon'); + await driver.clickElement( + '[data-testid="account-options-menu-button"]', + ); await driver.clickElement({ text: 'Settings', tag: 'div' }); await driver.fill('#search-settings', settingsSearch.general); @@ -61,7 +63,9 @@ describe('Settings Search', function () { await driver.fill('#password', 'correct horse battery staple'); await driver.press('#password', driver.Key.ENTER); - await driver.clickElement('.account-menu__icon'); + await driver.clickElement( + '[data-testid="account-options-menu-button"]', + ); await driver.clickElement({ text: 'Settings', tag: 'div' }); await driver.fill('#search-settings', settingsSearch.advanced); @@ -88,7 +92,9 @@ describe('Settings Search', function () { await driver.fill('#password', 'correct horse battery staple'); await driver.press('#password', driver.Key.ENTER); - await driver.clickElement('.account-menu__icon'); + await driver.clickElement( + '[data-testid="account-options-menu-button"]', + ); await driver.clickElement({ text: 'Settings', tag: 'div' }); await driver.fill('#search-settings', settingsSearch.contacts); @@ -115,7 +121,9 @@ describe('Settings Search', function () { await driver.fill('#password', 'correct horse battery staple'); await driver.press('#password', driver.Key.ENTER); - await driver.clickElement('.account-menu__icon'); + await driver.clickElement( + '[data-testid="account-options-menu-button"]', + ); await driver.clickElement({ text: 'Settings', tag: 'div' }); await driver.fill('#search-settings', settingsSearch.security); @@ -142,7 +150,9 @@ describe('Settings Search', function () { await driver.fill('#password', 'correct horse battery staple'); await driver.press('#password', driver.Key.ENTER); - await driver.clickElement('.account-menu__icon'); + await driver.clickElement( + '[data-testid="account-options-menu-button"]', + ); await driver.clickElement({ text: 'Settings', tag: 'div' }); await driver.fill('#search-settings', settingsSearch.alerts); @@ -169,7 +179,9 @@ describe('Settings Search', function () { await driver.fill('#password', 'correct horse battery staple'); await driver.press('#password', driver.Key.ENTER); - await driver.clickElement('.account-menu__icon'); + await driver.clickElement( + '[data-testid="account-options-menu-button"]', + ); await driver.clickElement({ text: 'Settings', tag: 'div' }); await driver.fill('#search-settings', settingsSearch.networks); @@ -196,7 +208,9 @@ describe('Settings Search', function () { await driver.fill('#password', 'correct horse battery staple'); await driver.press('#password', driver.Key.ENTER); - await driver.clickElement('.account-menu__icon'); + await driver.clickElement( + '[data-testid="account-options-menu-button"]', + ); await driver.clickElement({ text: 'Settings', tag: 'div' }); await driver.fill('#search-settings', settingsSearch.experimental); @@ -223,7 +237,9 @@ describe('Settings Search', function () { await driver.fill('#password', 'correct horse battery staple'); await driver.press('#password', driver.Key.ENTER); - await driver.clickElement('.account-menu__icon'); + await driver.clickElement( + '[data-testid="account-options-menu-button"]', + ); await driver.clickElement({ text: 'Settings', tag: 'div' }); await driver.fill('#search-settings', settingsSearch.about); @@ -250,7 +266,9 @@ describe('Settings Search', function () { await driver.fill('#password', 'correct horse battery staple'); await driver.press('#password', driver.Key.ENTER); - await driver.clickElement('.account-menu__icon'); + await driver.clickElement( + '[data-testid="account-options-menu-button"]', + ); await driver.clickElement({ text: 'Settings', tag: 'div' }); await driver.fill('#search-settings', 'Lorem ipsum'); diff --git a/test/e2e/tests/state-logs.spec.js b/test/e2e/tests/state-logs.spec.js index 2f33af584..f08a38fd1 100644 --- a/test/e2e/tests/state-logs.spec.js +++ b/test/e2e/tests/state-logs.spec.js @@ -45,7 +45,9 @@ describe('State logs', function () { await driver.press('#password', driver.Key.ENTER); // Download state logs - await driver.clickElement('.account-menu__icon'); + await driver.clickElement( + '[data-testid="account-options-menu-button"]', + ); await driver.clickElement({ text: 'Settings', tag: 'div' }); await driver.clickElement({ text: 'Advanced', tag: 'div' }); await driver.clickElement({ diff --git a/test/e2e/tests/switch-custom-network.spec.js b/test/e2e/tests/switch-custom-network.spec.js index a670f913f..9e0cf6857 100644 --- a/test/e2e/tests/switch-custom-network.spec.js +++ b/test/e2e/tests/switch-custom-network.spec.js @@ -88,7 +88,7 @@ describe('Swtich ethereum chain', function () { await driver.switchToWindow(extension); const currentNetworkName = await driver.findElement({ - tag: 'span', + tag: 'p', text: 'Localhost 8546', }); diff --git a/test/e2e/tests/token-details.spec.js b/test/e2e/tests/token-details.spec.js index 6f5ed33c0..07c4a8570 100644 --- a/test/e2e/tests/token-details.spec.js +++ b/test/e2e/tests/token-details.spec.js @@ -24,7 +24,7 @@ describe('Token Details', function () { await driver.fill('#password', 'correct horse battery staple'); await driver.press('#password', driver.Key.ENTER); - await driver.clickElement({ text: 'import tokens', tag: 'a' }); + await driver.clickElement({ text: 'Import tokens', tag: 'button' }); await driver.clickElement({ text: 'Custom token', tag: 'button' }); const tokenAddress = '0x2EFA2Cb29C2341d8E5Ba7D3262C9e9d6f1Bf3711'; diff --git a/test/e2e/user-actions-benchmark.js b/test/e2e/user-actions-benchmark.js index 7b72c73f5..722a43d25 100644 --- a/test/e2e/user-actions-benchmark.js +++ b/test/e2e/user-actions-benchmark.js @@ -33,9 +33,11 @@ async function loadNewAccount() { await driver.fill('#password', 'correct horse battery staple'); await driver.press('#password', driver.Key.ENTER); - await driver.clickElement('.account-menu__icon'); + await driver.clickElement('[data-testid="account-menu-icon"]'); const timestampBeforeAction = new Date(); - await driver.clickElement({ text: 'Create account', tag: 'div' }); + await driver.clickElement( + '[data-testid="multichain-account-menu-add-account"]', + ); await driver.fill('.new-account-create-form input', '2nd account'); await driver.clickElement({ text: 'Create', tag: 'button' }); await driver.waitForSelector({ diff --git a/ui/components/app/account-menu/__snapshots__/account-menu.test.js.snap b/ui/components/app/account-menu/__snapshots__/account-menu.test.js.snap deleted file mode 100644 index f7d981ce4..000000000 --- a/ui/components/app/account-menu/__snapshots__/account-menu.test.js.snap +++ /dev/null @@ -1,400 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Account Menu Render Content should not render keyring label if keyring tyoe is Custody - JSONRPC 1`] = ` -
-