diff --git a/.circleci/config.yml b/.circleci/config.yml index 81b8a7301..4d9d01ee6 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -9,6 +9,9 @@ workflows: - prep-build: requires: - prep-deps-npm + - prep-docs: + requires: + - prep-deps-npm - prep-scss: requires: - prep-deps-npm @@ -25,7 +28,7 @@ workflows: - test-e2e-firefox: requires: - prep-deps-npm - - prep-deps-firefox + - prep-deps-firefox - prep-build - test-unit: requires: @@ -63,12 +66,22 @@ workflows: - prep-deps-npm - prep-build - all-tests-pass - - job-publish: + - job-publish-prerelease: requires: - prep-deps-npm - prep-build - job-screens - all-tests-pass + - job-publish-release: + filters: + branches: + only: master + requires: + - prep-deps-npm + - prep-build + - prep-docs + - job-screens + - all-tests-pass jobs: prep-deps-npm: @@ -124,6 +137,21 @@ jobs: - dist - builds + prep-docs: + docker: + - image: circleci/node:8-browsers + steps: + - checkout + - restore_cache: + key: dependency-cache-{{ .Revision }} + - run: + name: build:dist + command: npm run doc + - save_cache: + key: docs-cache-{{ .Revision }} + paths: + - docs/jsdoc + prep-scss: docker: - image: circleci/node:8-browsers @@ -180,7 +208,7 @@ jobs: - store_artifacts: path: test-artifacts destination: test-artifacts - + test-e2e-firefox: environment: browsers: '["Firefox"]' @@ -200,7 +228,7 @@ jobs: - restore_cache: key: dependency-cache-{{ .Revision }} - restore_cache: - key: build-cache-{{ .Revision }} + key: build-cache-{{ .Revision }} - run: name: test:e2e:firefox command: npm run test:e2e:firefox @@ -225,7 +253,7 @@ jobs: paths: - test-artifacts - job-publish: + job-publish-prerelease: docker: - image: circleci/node:8-browsers steps: @@ -251,9 +279,29 @@ jobs: - run: name: build:announce command: ./development/metamaskbot-build-announce.js + + job-publish-release: + docker: + - image: circleci/node:8-browsers + steps: + - checkout + - restore_cache: + key: dependency-cache-{{ .Revision }} + - restore_cache: + key: build-cache-{{ .Revision }} + - restore_cache: + key: docs-cache-{{ .Revision }} + - restore_cache: + key: job-screens-{{ .Revision }} - run: name: sentry sourcemaps upload command: npm run sentry:publish + - run: + name: github gh-pages docs publish + command: > + git config user.name metamaskbot + git config user.email admin@metamask.io + gh-pages -d docs/jsdocs test-unit: docker: @@ -367,4 +415,4 @@ jobs: - run: name: All Tests Passed command: echo 'weew - everything passed!' - + diff --git a/app/scripts/background.js b/app/scripts/background.js index 69d549c85..686296329 100644 --- a/app/scripts/background.js +++ b/app/scripts/background.js @@ -322,7 +322,7 @@ function setupController (initState, initLangCode) { /** * A runtime.Port object, as provided by the browser: - * @link https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/runtime/Port + * @see https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/runtime/Port * @typedef Port * @type Object */ diff --git a/app/scripts/controllers/transactions/index.js b/app/scripts/controllers/transactions/index.js index 3886db104..541f1db73 100644 --- a/app/scripts/controllers/transactions/index.js +++ b/app/scripts/controllers/transactions/index.js @@ -111,21 +111,6 @@ class TransactionController extends EventEmitter { this.txStateManager.wipeTransactions(address) } - /** - Check if a txMeta in the list with the same nonce has been confirmed in a block - if the txParams dont have a nonce will return false - @returns {boolean} whether the nonce has been used in a transaction confirmed in a block - @param {object} txMeta - the txMeta object - */ - async isNonceTaken (txMeta) { - const { from, nonce } = txMeta.txParams - if ('nonce' in txMeta.txParams) { - const sameNonceTxList = this.txStateManager.getFilteredTxList({from, nonce, status: 'confirmed'}) - return (sameNonceTxList.length >= 1) - } - return false - } - /** add a new unapproved transaction to the pipeline diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index 807c9a0b9..1b1d26886 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -382,7 +382,7 @@ module.exports = class MetamaskController extends EventEmitter { updateTransaction: nodeify(txController.updateTransaction, txController), updateAndApproveTransaction: nodeify(txController.updateAndApproveTransaction, txController), retryTransaction: nodeify(this.retryTransaction, this), - isNonceTaken: nodeify(txController.isNonceTaken, txController), + getFilteredTxList: nodeify(txController.getFilteredTxList, txController), // messageManager signMessage: nodeify(this.signMessage, this), diff --git a/package.json b/package.json index 2630cb1fc..5637f202e 100644 --- a/package.json +++ b/package.json @@ -231,6 +231,7 @@ "ganache-cli": "^6.1.0", "ganache-core": "^2.1.0", "geckodriver": "^1.11.0", + "gh-pages": "^1.1.0", "gifencoder": "^1.1.0", "gulp": "github:gulpjs/gulp#6d71a658c61edb3090221579d8f97dbe086ba2ed", "gulp-babel": "^7.0.0", diff --git a/test/unit/app/controllers/transactions/tx-controller-test.js b/test/unit/app/controllers/transactions/tx-controller-test.js index f1d67f64e..1f32a0f37 100644 --- a/test/unit/app/controllers/transactions/tx-controller-test.js +++ b/test/unit/app/controllers/transactions/tx-controller-test.js @@ -40,36 +40,6 @@ describe('Transaction Controller', function () { txController.nonceTracker.getNonceLock = () => Promise.resolve({ nextNonce: 0, releaseLock: noop }) }) - describe('#isNonceTaken', function () { - it('should return true', function (done) { - txController.txStateManager._saveTxList([ - { id: 1, status: 'submitted', metamaskNetworkId: currentNetworkId, txParams: {nonce: 0, from: '0x8ACCE2391C0d510a6C5E5D8f819A678F79B7E675'} }, - { id: 2, status: 'confirmed', metamaskNetworkId: currentNetworkId, txParams: {nonce: 0, from: '0x8ACCE2391C0d510a6C5E5D8f819A678F79B7E675'} }, - { id: 3, status: 'submitted', metamaskNetworkId: currentNetworkId, txParams: {nonce: 0, from: '0x8ACCE2391C0d510a6C5E5D8f819A678F79B7E675'} }, - ]) - txController.isNonceTaken({txParams: {nonce:0, from:'0x8ACCE2391C0d510a6C5E5D8f819A678F79B7E675'}}) - .then((isNonceTaken) => { - assert(isNonceTaken) - done() - }).catch(done) - - }) - it('should return false', function (done) { - txController.txStateManager._saveTxList([ - { id: 1, status: 'submitted', metamaskNetworkId: currentNetworkId, txParams: {nonce: 0, from: '0x8ACCE2391C0d510a6C5E5D8f819A678F79B7E675'} }, - { id: 2, status: 'submitted', metamaskNetworkId: currentNetworkId, txParams: {nonce: 0, from: '0x8ACCE2391C0d510a6C5E5D8f819A678F79B7E675'} }, - { id: 3, status: 'submitted', metamaskNetworkId: currentNetworkId, txParams: {nonce: 0, from: '0x8ACCE2391C0d510a6C5E5D8f819A678F79B7E675'} }, - ]) - - txController.isNonceTaken({txParams: {nonce:0, from:'0x8ACCE2391C0d510a6C5E5D8f819A678F79B7E675'}}) - .then((isNonceTaken) => { - assert(!isNonceTaken) - done() - }).catch(done) - - }) - }) - describe('#getState', function () { it('should return a state object with the right keys and datat types', function () { const exposedState = txController.getState()