Merge pull request #1935 from MetaMask/i1091-ShowTxErrors

Transition home after tx errors
feature/default_network_editable
Frankie 7 years ago committed by GitHub
commit 5f9862c89e
  1. 2
      CHANGELOG.md
  2. 85
      test/unit/actions/tx_test.js
  3. 23
      ui/app/actions.js

@ -2,6 +2,8 @@
## Current Master ## Current Master
- Fix bug where some transaction submission errors would show an empty screen.
## 3.9.8 2017-8-16 ## 3.9.8 2017-8-16
- Reenable token list. - Reenable token list.

@ -65,91 +65,6 @@ describe('tx confirmation screen', function () {
assert.equal(count, 0) assert.equal(count, 0)
}) })
}) })
describe('sendTx', function () {
var result
describe('when there is an error', function () {
before(function (done) {
actions._setBackgroundConnection({
approveTransaction (txId, cb) { cb({message: 'An error!'}) },
})
actions.sendTx({id: firstTxId})(function (action) {
result = reducers(initialState, action)
done()
})
})
it('should stay on the page', function () {
assert.equal(result.appState.currentView.name, 'confTx')
})
it('should set errorMessage on the currentView', function () {
assert(result.appState.currentView.errorMessage)
})
})
describe('when there is success', function () {
it('should complete tx and go home', function () {
actions._setBackgroundConnection({
approveTransaction (txId, cb) { cb() },
})
var dispatchExpect = sinon.mock()
dispatchExpect.twice()
actions.sendTx({id: firstTxId})(dispatchExpect)
})
})
})
describe('when there are two pending txs', function () {
var firstTxId = 1457634084250832
var result, initialState
before(function (done) {
initialState = {
appState: {
currentView: {
name: 'confTx',
},
},
metamask: {
unapprovedTxs: {
'1457634084250832': {
id: firstTxId,
status: 'unconfirmed',
time: 1457634084250,
},
'1457634084250833': {
id: 1457634084250833,
status: 'unconfirmed',
time: 1457634084255,
},
},
},
}
freeze(initialState)
// Mocking a background connection:
actions._setBackgroundConnection({
approveTransaction (firstTxId, cb) { cb() },
})
actions.sendTx({id: firstTxId})(function (action) {
result = reducers(initialState, action)
})
done()
})
it('should stay on the confTx view', function () {
assert.equal(result.appState.currentView.name, 'confTx')
})
it('should transition to the first tx', function () {
assert.equal(result.appState.currentView.context, 0)
})
})
}) })
}) })

@ -97,7 +97,6 @@ var actions = {
cancelMsg: cancelMsg, cancelMsg: cancelMsg,
signPersonalMsg, signPersonalMsg,
cancelPersonalMsg, cancelPersonalMsg,
sendTx: sendTx,
signTx: signTx, signTx: signTx,
updateAndApproveTx, updateAndApproveTx,
cancelTx: cancelTx, cancelTx: cancelTx,
@ -397,26 +396,13 @@ function signPersonalMsg (msgData) {
function signTx (txData) { function signTx (txData) {
return (dispatch) => { return (dispatch) => {
dispatch(actions.showLoadingIndication())
global.ethQuery.sendTransaction(txData, (err, data) => { global.ethQuery.sendTransaction(txData, (err, data) => {
dispatch(actions.hideLoadingIndication()) dispatch(actions.hideLoadingIndication())
if (err) return dispatch(actions.displayWarning(err.message)) if (err) dispatch(actions.displayWarning(err.message))
dispatch(actions.hideWarning()) dispatch(this.goHome())
})
dispatch(this.showConfTxPage())
}
}
function sendTx (txData) {
log.info(`actions - sendTx: ${JSON.stringify(txData.txParams)}`)
return (dispatch) => {
log.debug(`actions calling background.approveTransaction`)
background.approveTransaction(txData.id, (err) => {
if (err) {
dispatch(actions.txError(err))
return log.error(err.message)
}
dispatch(actions.completedTx(txData.id))
}) })
dispatch(actions.showConfTxPage())
} }
} }
@ -428,6 +414,7 @@ function updateAndApproveTx (txData) {
dispatch(actions.hideLoadingIndication()) dispatch(actions.hideLoadingIndication())
if (err) { if (err) {
dispatch(actions.txError(err)) dispatch(actions.txError(err))
dispatch(actions.goHome())
return log.error(err.message) return log.error(err.message)
} }
dispatch(actions.completedTx(txData.id)) dispatch(actions.completedTx(txData.id))

Loading…
Cancel
Save