diff options
author | Dan Finlay <flyswatter@users.noreply.github.com> | 2017-01-18 04:08:47 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-01-18 04:08:47 +0800 |
commit | c53932a19a77516110a45d7b201b85dc6ea71a47 (patch) | |
tree | 4b53230af166215f932b0d5c3ac17888946c85ca /app/scripts/metamask-controller.js | |
parent | 79040c2e681012c98869b7e4d49a9e0ed406c52f (diff) | |
parent | a245fb7d22a5fe08c4fc8c2c1c64d406805018a8 (diff) | |
download | tangerine-wallet-browser-c53932a19a77516110a45d7b201b85dc6ea71a47.tar tangerine-wallet-browser-c53932a19a77516110a45d7b201b85dc6ea71a47.tar.gz tangerine-wallet-browser-c53932a19a77516110a45d7b201b85dc6ea71a47.tar.bz2 tangerine-wallet-browser-c53932a19a77516110a45d7b201b85dc6ea71a47.tar.lz tangerine-wallet-browser-c53932a19a77516110a45d7b201b85dc6ea71a47.tar.xz tangerine-wallet-browser-c53932a19a77516110a45d7b201b85dc6ea71a47.tar.zst tangerine-wallet-browser-c53932a19a77516110a45d7b201b85dc6ea71a47.zip |
Merge branch 'dev' into conversion-api-err
Diffstat (limited to 'app/scripts/metamask-controller.js')
-rw-r--r-- | app/scripts/metamask-controller.js | 55 |
1 files changed, 20 insertions, 35 deletions
diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index 1fc97e81d..b94b98eac 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -45,6 +45,7 @@ module.exports = class MetamaskController extends EventEmitter { getSelectedAccount: this.configManager.getSelectedAccount.bind(this.configManager), getGasMultiplier: this.configManager.getGasMultiplier.bind(this.configManager), getNetwork: this.getStateNetwork.bind(this), + signTransaction: this.keyringController.signTransaction.bind(this.keyringController), provider: this.provider, blockTracker: this.provider, }) @@ -65,6 +66,7 @@ module.exports = class MetamaskController extends EventEmitter { this.ethStore.on('update', this.sendUpdate.bind(this)) this.keyringController.on('update', this.sendUpdate.bind(this)) + this.txManager.on('update', this.sendUpdate.bind(this)) } getState () { @@ -188,26 +190,7 @@ module.exports = class MetamaskController extends EventEmitter { cb(null, result) }, // tx signing - approveTransaction: this.newUnsignedTransaction.bind(this), - signTransaction: (txParams, cb) => { - this.txManager.formatTxForSigining(txParams) - .then(({ethTx, address, txId}) => { - return this.keyringController.signTransaction(ethTx, address, txId) - }) - .then(({tx, txId}) => { - return this.txManager.resolveSignedTransaction({tx, txId}) - }) - .then((rawTx) => { - cb(null, rawTx) - this.sendUpdate() - this.txManager.emit(`${txParams.metamaskId}:signingComplete`) - }) - .catch((err) => { - console.error(err) - cb(err) - }) - }, - + processTransaction: (txParams, cb) => this.newUnapprovedTransaction(txParams, cb), // msg signing approveMessage: this.newUnsignedMessage.bind(this), signMessage: (...args) => { @@ -256,24 +239,26 @@ module.exports = class MetamaskController extends EventEmitter { return publicConfigStore } - newUnsignedTransaction (txParams, onTxDoneCb) { - const txManager = this.txManager - const err = this.enforceTxValidations(txParams) - if (err) return onTxDoneCb(err) - txManager.addUnapprovedTransaction(txParams, onTxDoneCb, (err, txData) => { - if (err) return onTxDoneCb(err) - this.sendUpdate() - this.opts.showUnapprovedTx(txParams, txData, onTxDoneCb) + newUnapprovedTransaction (txParams, cb) { + const self = this + self.txManager.addUnapprovedTransaction(txParams, (err, txMeta) => { + if (err) return cb(err) + self.sendUpdate() + self.opts.showUnapprovedTx(txMeta) + // listen for tx completion (success, fail) + self.txManager.once(`${txMeta.id}:finished`, (status) => { + switch (status) { + case 'submitted': + return cb(null, txMeta.hash) + case 'rejected': + return cb(new Error('MetaMask Tx Signature: User denied transaction signature.')) + default: + return cb(new Error(`MetaMask Tx Signature: Unknown problem: ${JSON.stringify(txMeta.txParams)}`)) + } + }) }) } - enforceTxValidations (txParams) { - if (('value' in txParams) && txParams.value.indexOf('-') === 0) { - const msg = `Invalid transaction value of ${txParams.value} not a positive number.` - return new Error(msg) - } - } - newUnsignedMessage (msgParams, cb) { var state = this.keyringController.getState() if (!state.isUnlocked) { |