diff options
-rw-r--r-- | CHANGELOG.md | 14 | ||||
-rw-r--r-- | app/manifest.json | 2 | ||||
-rw-r--r-- | package.json | 2 | ||||
-rw-r--r-- | test/unit/actions/tx_test.js | 87 | ||||
-rw-r--r-- | ui/app/account-detail.js | 2 | ||||
-rw-r--r-- | ui/app/actions.js | 23 | ||||
-rw-r--r-- | ui/app/components/pending-msg-details.js | 2 | ||||
-rw-r--r-- | ui/app/components/pending-msg.js | 5 | ||||
-rw-r--r-- | ui/app/components/token-list.js | 45 |
9 files changed, 47 insertions, 135 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 516e8f9e8..3b26afd47 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,20 @@ ## Current Master +- Fix bug where some transaction submission errors would show an empty screen. +- Fix bug that could mis-render token balances when very small. +- Fix formatting of eth_sign "Sign Message" view. +- Add deprecation warning to eth_sign "Sign Message" view. + + +## 3.9.8 2017-8-16 + +- Reenable token list. +- Remove default tokens. + +## 3.9.7 2017-8-15 + +- hotfix - disable token list - Added a deprecation warning for web3 https://github.com/ethereum/mist/releases/tag/v0.9.0 ## 3.9.6 2017-8-09 diff --git a/app/manifest.json b/app/manifest.json index f34bdcec3..4af7923c2 100644 --- a/app/manifest.json +++ b/app/manifest.json @@ -1,7 +1,7 @@ { "name": "MetaMask", "short_name": "Metamask", - "version": "3.9.6", + "version": "3.9.8", "manifest_version": 2, "author": "https://metamask.io", "description": "Ethereum Browser Extension", diff --git a/package.json b/package.json index 396fd53a7..9a09e6305 100644 --- a/package.json +++ b/package.json @@ -73,7 +73,7 @@ "eth-query": "^2.1.2", "eth-sig-util": "^1.2.2", "eth-simple-keyring": "^1.1.1", - "eth-token-tracker": "^1.1.2", + "eth-token-tracker": "^1.1.3", "ethereumjs-tx": "^1.3.0", "ethereumjs-util": "github:ethereumjs/ethereumjs-util#ac5d0908536b447083ea422b435da27f26615de9", "ethereumjs-wallet": "^0.6.0", diff --git a/test/unit/actions/tx_test.js b/test/unit/actions/tx_test.js index 67c72e9a5..ea6dfda6a 100644 --- a/test/unit/actions/tx_test.js +++ b/test/unit/actions/tx_test.js @@ -53,7 +53,7 @@ describe('tx confirmation screen', function () { result = reducers(initialState, action) done() }) - + }) it('should transition to the account detail view', function () { @@ -65,91 +65,6 @@ describe('tx confirmation screen', function () { 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) - }) - }) }) }) diff --git a/ui/app/account-detail.js b/ui/app/account-detail.js index f6041e856..02089ecd0 100644 --- a/ui/app/account-detail.js +++ b/ui/app/account-detail.js @@ -117,7 +117,7 @@ AccountDetailScreen.prototype.render = function () { h('h2', { style: { maxWidth: '180px', - overflowX: 'hidden', + overflow: 'hidden', textOverflow: 'ellipsis', padding: '5px 0px', }, diff --git a/ui/app/actions.js b/ui/app/actions.js index eafd04b4c..eebe65ba2 100644 --- a/ui/app/actions.js +++ b/ui/app/actions.js @@ -97,7 +97,6 @@ var actions = { cancelMsg: cancelMsg, signPersonalMsg, cancelPersonalMsg, - sendTx: sendTx, signTx: signTx, updateAndApproveTx, cancelTx: cancelTx, @@ -397,26 +396,13 @@ function signPersonalMsg (msgData) { function signTx (txData) { return (dispatch) => { + dispatch(actions.showLoadingIndication()) global.ethQuery.sendTransaction(txData, (err, data) => { dispatch(actions.hideLoadingIndication()) - if (err) return dispatch(actions.displayWarning(err.message)) - dispatch(actions.hideWarning()) - }) - 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)) + if (err) dispatch(actions.displayWarning(err.message)) + dispatch(this.goHome()) }) + dispatch(actions.showConfTxPage()) } } @@ -428,6 +414,7 @@ function updateAndApproveTx (txData) { dispatch(actions.hideLoadingIndication()) if (err) { dispatch(actions.txError(err)) + dispatch(actions.goHome()) return log.error(err.message) } dispatch(actions.completedTx(txData.id)) diff --git a/ui/app/components/pending-msg-details.js b/ui/app/components/pending-msg-details.js index 16308d121..718a22de0 100644 --- a/ui/app/components/pending-msg-details.js +++ b/ui/app/components/pending-msg-details.js @@ -38,7 +38,7 @@ PendingMsgDetails.prototype.render = function () { // message data h('.tx-data.flex-column.flex-justify-center.flex-grow.select-none', [ - h('.flex-row.flex-space-between', [ + h('.flex-column.flex-space-between', [ h('label.font-small', 'MESSAGE'), h('span.font-small', msgParams.data), ]), diff --git a/ui/app/components/pending-msg.js b/ui/app/components/pending-msg.js index b2cac164a..b7133cda8 100644 --- a/ui/app/components/pending-msg.js +++ b/ui/app/components/pending-msg.js @@ -18,6 +18,9 @@ PendingMsg.prototype.render = function () { h('div', { key: msgData.id, + style: { + maxWidth: '350px', + }, }, [ // header @@ -35,7 +38,7 @@ PendingMsg.prototype.render = function () { }, `Signing this message can have dangerous side effects. Only sign messages from sites you fully trust with your entire account. - This will be fixed in a future version.`), + This dangerous method will be removed in a future version.`), // message details h(PendingTxDetails, state), diff --git a/ui/app/components/token-list.js b/ui/app/components/token-list.js index 5ea31ae8d..2346568bc 100644 --- a/ui/app/components/token-list.js +++ b/ui/app/components/token-list.js @@ -3,17 +3,6 @@ const h = require('react-hyperscript') const inherits = require('util').inherits const TokenTracker = require('eth-token-tracker') const TokenCell = require('./token-cell.js') -const normalizeAddress = require('eth-sig-util').normalize - -const defaultTokens = [] -const contracts = require('eth-contract-metadata') -for (const address in contracts) { - const contract = contracts[address] - if (contract.erc20) { - contract.address = address - defaultTokens.push(contract) - } -} module.exports = TokenList @@ -38,7 +27,24 @@ TokenList.prototype.render = function () { if (error) { log.error(error) - return this.message('There was a problem loading your token balances.') + return h('.hotFix', { + style: { + padding: '80px', + }, + }, [ + 'We had trouble loading your token balances. You can view them ', + h('span.hotFix', { + style: { + color: 'rgba(247, 134, 28, 1)', + cursor: 'pointer', + }, + onClick: () => { + global.platform.openWindow({ + url: `https://ethplorer.io/address/${userAddress}`, + }) + }, + }, 'here'), + ]) } const tokenViews = tokens.map((tokenData) => { @@ -153,7 +159,7 @@ TokenList.prototype.createFreshTokenTracker = function () { this.tracker = new TokenTracker({ userAddress, provider: global.ethereumProvider, - tokens: uniqueMergeTokens(defaultTokens, this.props.tokens), + tokens: this.props.tokens, pollingInterval: 8000, }) @@ -199,16 +205,3 @@ TokenList.prototype.componentWillUnmount = function () { this.tracker.stop() } -function uniqueMergeTokens (tokensA, tokensB) { - const uniqueAddresses = [] - const result = [] - tokensA.concat(tokensB).forEach((token) => { - const normal = normalizeAddress(token.address) - if (!uniqueAddresses.includes(normal)) { - uniqueAddresses.push(normal) - result.push(token) - } - }) - return result -} - |