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 9c06b07c3c
Synchronously update transaction status (#8563)
All transaction status updates were moved into a `setTimeout` callback
and wrapped in a `try...catch` block in #4131, apparently in an attempt
to prevent failures in event subscribers from interrupting the
transaction logic. The `try...catch` block did accomplish that, but by
putting the status update in a `setTimeout` callback the operation was
made asynchronous.

Transaction status updates now happen unpredictably, in some future
event loop from when they're triggered. This creates a race condition,
where the transaction status update may occur before or after
subsequent state changes. This also introduces a risk of accidentally
undoing a change to the transaction state, as the update made to the
transaction inside the `setTimeout` callback uses a reference to
`txMeta` obtained synchronously before the `setTimeout` call. Any
replacement of the `txMeta` between the `setTxStatus` call and the
execution of the timeout would be erased. Luckily the `txMeta` object
is more often than not mutated rather than replaced, which may explain
why we haven't seen this happen yet.

Everything seems to work correctly with the `setTimeout` call removed,
and now the transaction logic is easier to understand.
2020-05-09 10:46:58 -03:00
.circleci ci/scripts/deps-install - exit if any command fails (#8368) 2020-04-20 10:18:16 -03:00
.github Add @kumavis for CircleCI and dev directories (#8394) 2020-04-23 14:09:26 -02:30
.storybook Fix Font Awesome in Storybook build (#8304) 2020-04-08 10:22:20 -03:00
app Synchronously update transaction status (#8563) 2020-05-09 10:46:58 -03:00
development add version dimension to metrics event (#8419) 2020-05-05 15:40:36 +02:00
docs add version dimension to metrics event (#8419) 2020-05-05 15:40:36 +02:00
test Allow disabling alerts (#8550) 2020-05-08 16:45:52 -03:00
ui Fix alert disabling type error (#8561) 2020-05-08 21:49:41 -03:00
.editorconfig
.eslintignore Use shared MetaMask ESLint config (#7882) 2020-01-22 11:07:19 -03:30
.eslintrc.js Add no-tabs ESLint rule (#8518) 2020-05-05 18:35:12 -02:30
.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
.stylelintrc
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
MISSION.md
nyc.config.js Add permissions controller unit tests (#7969) 2020-03-16 10:13:22 -07:00
package.json Update ganache-cli, ganache-core (#8538) 2020-05-07 19:10:22 -07:00
README.md Update README.md (#8393) 2020-04-23 13:30:14 -02:30
USER_AGREEMENT.md
yarn.lock Update ganache-cli, ganache-core (#8538) 2020-05-07 19:10:22 -07:00

MetaMask Browser Extension

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