1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-12-23 09:52:26 +01:00
🦊 Minimalized version of MetaMask for my own personal use.
Go to file
Mark Stacey 63633635ab
Fix order of accounts in eth_accounts response (#8342)
* Fix order of accounts in `eth_accounts` response

The accounts returned by `eth_accounts` were in a fixed order - the
order in which the keyring returned them - rather than ordered with the
selected account first. The accounts returned by the `accountsChanged`
event were ordered with the selected account first, but the same order
wasn't used for `eth_accounts`.

We needed to store additional state in order to determine the correct
account order correctly on all dapps. We had only been storing the
current selected account, but since we also need to determine the
primary account per dapp (i.e. the last "selected" account among the
accounts exposed to that dapp), that wasn't enough.

A `lastSelected` property has been added to each identity in the
preferences controller to keep track of the last selected time. This
property is set to the current time (in milliseconds) whenever a new
selection is made. The accounts returned with `accountsChanged` and by
`eth_accounts` are both ordered by this property.

The `updatePermittedAccounts` function was merged with the internal
methods for responding to account selection, to keep things simpler. It
wasn't called externally anyway, so it wasn't needed in the public API.

* Remove caveat update upon change in selected account

The order of accounts in the caveat isn't meaningful, so the caveat
doesn't need to be updated when the accounts get re-ordered.

* Emit event regardless of account order

Now that we're no longer relying upon the caveat for the account order,
we also have no way of knowing if a particular account selection
resulted in a change in order or not. The notification is now emitted
whenever an exposed account is selected - even if the order stayed the
same.

The inpage provider currently caches the account order, so it can be
relied upon to ignore these redundant events. We were already emiting
redundant `accountsChanged` events in some cases anyway.
2020-04-16 15:20:01 -03:00
.circleci Build system refactor (#8140) 2020-03-09 08:55:02 +08:00
.github add jenny to codeowners (#8219) 2020-03-19 16:28:38 -03:00
.storybook Fix Font Awesome in Storybook build (#8304) 2020-04-08 10:22:20 -03:00
app Fix order of accounts in eth_accounts response (#8342) 2020-04-16 15:20:01 -03:00
development Remove unused states (#8345) 2020-04-16 12:27:25 -03:00
docs Remove version bump scripts (#8006) 2020-02-06 18:56:31 -03:30
test Fix order of accounts in eth_accounts response (#8342) 2020-04-16 15:20:01 -03:00
ui Handle account selection on all domains that can view the selection (#8341) 2020-04-16 13:16:53 -03:00
.editorconfig Clean EditorConfig file 2019-05-23 07:17:42 -02:30
.eslintignore Use shared MetaMask ESLint config (#7882) 2020-01-22 11:07:19 -03:30
.eslintrc.js Prevent accidental use of globals (#8340) 2020-04-15 14:23:27 -03:00
.gitattributes Suppress diffs for test/e2e/send-eth-with-private-key-test/*.js (#7767) 2020-01-08 13:02:16 -03:30
.gitignore Enable Storybook deploy on CI (#8009) 2020-02-08 16:26:33 -03:30
.nvmrc Bump Node version to 10.18 (#7925) 2020-01-29 13:36:10 -03:30
.stylelintignore mascara - remove from project (#6283) 2019-03-12 11:17:21 -02:30
.stylelintrc Remove trailing commas from JSON files (#7284) 2019-10-16 22:01:19 -02:30
babel.config.js Add optional chaining (#8052) 2020-02-18 10:11:52 -05:00
CHANGELOG.md Make seed phrase import case-insensitive (#8246) 2020-03-30 10:21:04 -02:30
LICENSE License 2018-06-22 16:28:54 -04:00
MISSION.md Mission v2 2018-05-29 09:30:59 -07:00
nyc.config.js Add permissions controller unit tests (#7969) 2020-03-16 10:13:22 -07:00
package.json Prevent accidental use of globals (#8340) 2020-04-15 14:23:27 -03:00
README.md Browser tests (#8010) 2020-02-07 13:19:32 -03:30
USER_AGREEMENT.md fix tos link; 2018-07-12 16:24:13 -04:00
yarn.lock Prevent accidental use of globals (#8340) 2020-04-15 14:23:27 -03:00

MetaMask Browser Extension

Hey! We are hiring a Senior Mobile Engineer! Apply here: https://boards.greenhouse.io/consensys/jobs/1990589

Build Status Coverage Status

You can find the latest version of MetaMask on our official website. For help using MetaMask, visit our User Support Site.

MetaMask supports Firefox, Google Chrome, and Chromium-based browsers. We recommend using the latest available browser version.

For up to the minute news, follow our Twitter or Medium pages.

To learn how to develop MetaMask-compatible applications, visit our Developer Docs.

To learn how to contribute to the MetaMask project itself, visit our Internal Docs.

Building locally

  • Install Node.js version 10
    • If you are using nvm (recommended) running nvm use will automatically choose the right node version for you.
  • Install Yarn
  • Install dependencies: yarn
  • Build the project to the ./dist/ folder with yarn dist.
  • Optionally, to start a development build (e.g. with logging and file watching) run yarn start instead.
    • To start the React DevTools and Redux DevTools Extension alongside the app, use yarn start:dev.
      • React DevTools will open in a separate window; no browser extension is required
      • Redux DevTools will need to be installed as a browser extension. Open the Redux Remote Devtools to access Redux state logs. This can be done by either right clicking within the web browser to bring up the context menu, expanding the Redux DevTools panel and clicking Open Remote DevTools OR clicking the Redux DevTools extension icon and clicking Open Remote DevTools.
        • You will also need to check the "Use custom (local) server" checkbox in the Remote DevTools Settings, using the default server configuration (host localhost, port 8000, secure connection checkbox unchecked)

Uncompressed builds can be found in /dist, compressed builds can be found in /builds once they're built.

Contributing

Running Tests

Run tests with yarn test.

You can also test with a continuously watching process, via yarn watch.

You can run the linter by itself with yarn lint.

Architecture

Architecture Diagram

Development

yarn
yarn start

Build for Publishing

yarn dist

Other Docs