|
|
@ -138,18 +138,20 @@ module.exports = class TransactionController extends EventEmitter { |
|
|
|
|
|
|
|
|
|
|
|
async newUnapprovedTransaction (txParams) { |
|
|
|
async newUnapprovedTransaction (txParams) { |
|
|
|
log.debug(`MetaMaskController newUnapprovedTransaction ${JSON.stringify(txParams)}`) |
|
|
|
log.debug(`MetaMaskController newUnapprovedTransaction ${JSON.stringify(txParams)}`) |
|
|
|
const txMeta = await this.addUnapprovedTransaction(txParams) |
|
|
|
const initialTxMeta = await this.addUnapprovedTransaction(txParams) |
|
|
|
this.emit('newUnapprovedTx', txMeta) |
|
|
|
this.emit('newUnapprovedTx', initialTxMeta) |
|
|
|
// listen for tx completion (success, fail)
|
|
|
|
// listen for tx completion (success, fail)
|
|
|
|
return new Promise((resolve, reject) => { |
|
|
|
return new Promise((resolve, reject) => { |
|
|
|
this.txStateManager.once(`${txMeta.id}:finished`, (completedTx) => { |
|
|
|
this.txStateManager.once(`${initialTxMeta.id}:finished`, (finishedTxMeta) => { |
|
|
|
switch (completedTx.status) { |
|
|
|
switch (finishedTxMeta.status) { |
|
|
|
case 'submitted': |
|
|
|
case 'submitted': |
|
|
|
return resolve(completedTx.hash) |
|
|
|
return resolve(finishedTxMeta.hash) |
|
|
|
case 'rejected': |
|
|
|
case 'rejected': |
|
|
|
return reject(new Error('MetaMask Tx Signature: User denied transaction signature.')) |
|
|
|
return reject(new Error('MetaMask Tx Signature: User denied transaction signature.')) |
|
|
|
|
|
|
|
case 'failed': |
|
|
|
|
|
|
|
return reject(new Error(finishedTxMeta.err.message)) |
|
|
|
default: |
|
|
|
default: |
|
|
|
return reject(new Error(`MetaMask Tx Signature: Unknown problem: ${JSON.stringify(completedTx.txParams)}`)) |
|
|
|
return reject(new Error(`MetaMask Tx Signature: Unknown problem: ${JSON.stringify(finishedTxMeta.txParams)}`)) |
|
|
|
} |
|
|
|
} |
|
|
|
}) |
|
|
|
}) |
|
|
|
}) |
|
|
|
}) |
|
|
|