Merge branch 'master' into NewUI-flat

This commit is contained in:
Chi Kei Chan 2017-10-24 16:56:49 -07:00
commit 301c737bbc
21 changed files with 60 additions and 48 deletions

View File

@ -32,13 +32,13 @@ class ComputedbalancesController {
this.accountTracker.store.subscribe(this.syncAllAccountsFromStore.bind(this)) this.accountTracker.store.subscribe(this.syncAllAccountsFromStore.bind(this))
} }
syncAllAccountsFromStore(store) { syncAllAccountsFromStore (store) {
const upstream = Object.keys(store.accounts) const upstream = Object.keys(store.accounts)
const balances = Object.keys(this.balances) const balances = Object.keys(this.balances)
.map(address => this.balances[address]) .map(address => this.balances[address])
// Follow new addresses // Follow new addresses
for (let address in balances) { for (const address in balances) {
this.trackAddressIfNotAlready(address) this.trackAddressIfNotAlready(address)
} }
@ -58,14 +58,14 @@ class ComputedbalancesController {
} }
trackAddress (address) { trackAddress (address) {
let updater = new BalanceController({ const updater = new BalanceController({
address, address,
accountTracker: this.accountTracker, accountTracker: this.accountTracker,
txController: this.txController, txController: this.txController,
blockTracker: this.blockTracker, blockTracker: this.blockTracker,
}) })
updater.store.subscribe((accountBalance) => { updater.store.subscribe((accountBalance) => {
let newState = this.store.getState() const newState = this.store.getState()
newState.computedBalances[address] = accountBalance newState.computedBalances[address] = accountBalance
this.store.updateState(newState) this.store.updateState(newState)
}) })

View File

@ -105,7 +105,7 @@ module.exports = class NetworkController extends EventEmitter {
this.emit('networkDidChange') this.emit('networkDidChange')
} }
_configureStandardProvider(_providerParams) { _configureStandardProvider (_providerParams) {
const providerParams = extend(this._baseProviderParams, _providerParams) const providerParams = extend(this._baseProviderParams, _providerParams)
const provider = createMetamaskProvider(providerParams) const provider = createMetamaskProvider(providerParams)
this._setProvider(provider) this._setProvider(provider)

View File

@ -1,7 +1,7 @@
// log rpc activity // log rpc activity
module.exports = createLoggerMiddleware module.exports = createLoggerMiddleware
function createLoggerMiddleware({ origin }) { function createLoggerMiddleware ({ origin }) {
return function loggerMiddleware (req, res, next, end) { return function loggerMiddleware (req, res, next, end) {
next((cb) => { next((cb) => {
if (res.error) { if (res.error) {
@ -12,4 +12,4 @@ function createLoggerMiddleware({ origin }) {
cb() cb()
}) })
} }
} }

View File

@ -1,9 +1,9 @@
// append dapp origin domain to request // append dapp origin domain to request
module.exports = createOriginMiddleware module.exports = createOriginMiddleware
function createOriginMiddleware({ origin }) { function createOriginMiddleware ({ origin }) {
return function originMiddleware (req, res, next, end) { return function originMiddleware (req, res, next, end) {
req.origin = origin req.origin = origin
next() next()
} }
} }

View File

@ -1,8 +1,7 @@
module.exports = createProviderMiddleware module.exports = createProviderMiddleware
// forward requests to provider // forward requests to provider
function createProviderMiddleware({ provider }) { function createProviderMiddleware ({ provider }) {
return (req, res, next, end) => { return (req, res, next, end) => {
provider.sendAsync(req, (err, _res) => { provider.sendAsync(req, (err, _res) => {
if (err) return end(err) if (err) return end(err)
@ -10,4 +9,4 @@ function createProviderMiddleware({ provider }) {
end() end()
}) })
} }
} }

View File

@ -1,4 +1,4 @@
module.exports = function createEventEmitterProxy(eventEmitter, listeners) { module.exports = function createEventEmitterProxy (eventEmitter, listeners) {
let target = eventEmitter let target = eventEmitter
const eventHandlers = listeners || {} const eventHandlers = listeners || {}
const proxy = new Proxy({}, { const proxy = new Proxy({}, {
@ -28,4 +28,4 @@ module.exports = function createEventEmitterProxy(eventEmitter, listeners) {
} }
if (listeners) proxy.setTarget(eventEmitter) if (listeners) proxy.setTarget(eventEmitter)
return proxy return proxy
} }

View File

@ -1,8 +1,8 @@
const promiseToCallback = require('promise-to-callback') const promiseToCallback = require('promise-to-callback')
const noop = function(){} const noop = function () {}
module.exports = function nodeify (fn, context) { module.exports = function nodeify (fn, context) {
return function(){ return function () {
const args = [].slice.call(arguments) const args = [].slice.call(arguments)
const lastArg = args[args.length - 1] const lastArg = args[args.length - 1]
const lastArgIsCallback = typeof lastArg === 'function' const lastArgIsCallback = typeof lastArg === 'function'

View File

@ -13,7 +13,7 @@ class PendingBalanceCalculator {
this.getNetworkBalance = getBalance this.getNetworkBalance = getBalance
} }
async getBalance() { async getBalance () {
const results = await Promise.all([ const results = await Promise.all([
this.getNetworkBalance(), this.getNetworkBalance(),
this.getPendingTransactions(), this.getPendingTransactions(),

View File

@ -81,14 +81,14 @@ module.exports = class PendingTransactionTracker extends EventEmitter {
const errorMessage = err.message.toLowerCase() const errorMessage = err.message.toLowerCase()
const isKnownTx = ( const isKnownTx = (
// geth // geth
errorMessage.includes('replacement transaction underpriced') errorMessage.includes('replacement transaction underpriced') ||
|| errorMessage.includes('known transaction') errorMessage.includes('known transaction') ||
// parity // parity
|| errorMessage.includes('gas price too low to replace') errorMessage.includes('gas price too low to replace') ||
|| errorMessage.includes('transaction with the same hash was already imported') errorMessage.includes('transaction with the same hash was already imported') ||
// other // other
|| errorMessage.includes('gateway timeout') errorMessage.includes('gateway timeout') ||
|| errorMessage.includes('nonce too low') errorMessage.includes('nonce too low')
) )
// ignore resubmit warnings, return early // ignore resubmit warnings, return early
if (isKnownTx) return if (isKnownTx) return

View File

@ -1,6 +1,6 @@
const Duplex = require('readable-stream').Duplex const Duplex = require('readable-stream').Duplex
const inherits = require('util').inherits const inherits = require('util').inherits
const noop = function(){} const noop = function () {}
module.exports = PortDuplexStream module.exports = PortDuplexStream

View File

@ -81,4 +81,4 @@ module.exports = class txProvideUtil {
throw new Error(`Invalid transaction value of ${txParams.value} not a positive number.`) throw new Error(`Invalid transaction value of ${txParams.value} not a positive number.`)
} }
} }
} }

View File

@ -9,7 +9,7 @@ module.exports = {
} }
function migrateFromSnapshotsToDiffs(longHistory) { function migrateFromSnapshotsToDiffs (longHistory) {
return ( return (
longHistory longHistory
// convert non-initial history entries into diffs // convert non-initial history entries into diffs
@ -20,22 +20,22 @@ function migrateFromSnapshotsToDiffs(longHistory) {
) )
} }
function generateHistoryEntry(previousState, newState, note) { function generateHistoryEntry (previousState, newState, note) {
const entry = jsonDiffer.compare(previousState, newState) const entry = jsonDiffer.compare(previousState, newState)
// Add a note to the first op, since it breaks if we append it to the entry // Add a note to the first op, since it breaks if we append it to the entry
if (note && entry[0]) entry[0].note = note if (note && entry[0]) entry[0].note = note
return entry return entry
} }
function replayHistory(_shortHistory) { function replayHistory (_shortHistory) {
const shortHistory = clone(_shortHistory) const shortHistory = clone(_shortHistory)
return shortHistory.reduce((val, entry) => jsonDiffer.applyPatch(val, entry).newDocument) return shortHistory.reduce((val, entry) => jsonDiffer.applyPatch(val, entry).newDocument)
} }
function snapshotFromTxMeta(txMeta) { function snapshotFromTxMeta (txMeta) {
// create txMeta snapshot for history // create txMeta snapshot for history
const snapshot = clone(txMeta) const snapshot = clone(txMeta)
// dont include previous history in this snapshot // dont include previous history in this snapshot
delete snapshot.history delete snapshot.history
return snapshot return snapshot
} }

View File

@ -91,7 +91,7 @@ module.exports = class TransactionStateManger extends EventEmitter {
updateTx (txMeta, note) { updateTx (txMeta, note) {
if (txMeta.txParams) { if (txMeta.txParams) {
Object.keys(txMeta.txParams).forEach((key) => { Object.keys(txMeta.txParams).forEach((key) => {
let value = txMeta.txParams[key] const value = txMeta.txParams[key]
if (typeof value !== 'string') console.error(`${key}: ${value} in txParams is not a string`) if (typeof value !== 'string') console.error(`${key}: ${value} in txParams is not a string`)
if (!ethUtil.isHexPrefixed(value)) console.error('is not hex prefixed, anything on txParams must be hex prefixed') if (!ethUtil.isHexPrefixed(value)) console.error('is not hex prefixed, anything on txParams must be hex prefixed')
}) })

View File

@ -165,7 +165,20 @@ gulp.task('lint', function () {
// To have the process exit with an error code (1) on // To have the process exit with an error code (1) on
// lint error, return the stream and pipe to failAfterError last. // lint error, return the stream and pipe to failAfterError last.
.pipe(eslint.failAfterError()) .pipe(eslint.failAfterError())
}) });
gulp.task('lint:fix', function () {
return gulp.src(['app/**/*.js', 'ui/**/*.js', 'mascara/src/*.js', 'mascara/server/*.js', '!node_modules/**', '!dist/firefox/**', '!docs/**', '!app/scripts/chromereload.js', '!mascara/test/jquery-3.1.0.min.js'])
.pipe(eslint(Object.assign(fs.readFileSync(path.join(__dirname, '.eslintrc')), {fix: true})))
.pipe(eslint.format())
.pipe(eslint.failAfterError())
});
/*
gulp.task('default', ['lint'], function () {
// This will only run if the lint task is successful...
});
*/
// build js // build js

View File

@ -1,3 +1,4 @@
const path = require('path')
const express = require('express') const express = require('express')
const createBundle = require('./util').createBundle const createBundle = require('./util').createBundle
const serveBundle = require('./util').serveBundle const serveBundle = require('./util').serveBundle
@ -8,22 +9,22 @@ module.exports = createMetamascaraServer
function createMetamascaraServer () { function createMetamascaraServer () {
// start bundlers // start bundlers
const metamascaraBundle = createBundle(__dirname + '/../src/mascara.js') const metamascaraBundle = createBundle(path.join(__dirname, '/../src/mascara.js'))
const proxyBundle = createBundle(__dirname + '/../src/proxy.js') const proxyBundle = createBundle(path.join(__dirname, '/../src/proxy.js'))
const uiBundle = createBundle(__dirname + '/../src/ui.js') const uiBundle = createBundle(path.join(__dirname, '/../src/ui.js'))
const backgroundBuild = createBundle(__dirname + '/../src/background.js') const backgroundBuild = createBundle(path.join(__dirname, '/../src/background.js'))
// serve bundles // serve bundles
const server = express() const server = express()
// ui window // ui window
serveBundle(server, '/ui.js', uiBundle) serveBundle(server, '/ui.js', uiBundle)
server.use(express.static(__dirname + '/../ui/', { setHeaders: (res) => res.set('X-Frame-Options', 'DENY') })) server.use(express.static(path.join(__dirname, '/../ui/', { setHeaders: (res) => res.set('X-Frame-Options', 'DENY') })))
server.use(express.static(__dirname + '/../../dist/chrome')) server.use(express.static(path.join(__dirname, '/../../dist/chrome')))
// metamascara // metamascara
serveBundle(server, '/metamascara.js', metamascaraBundle) serveBundle(server, '/metamascara.js', metamascaraBundle)
// proxy // proxy
serveBundle(server, '/proxy/proxy.js', proxyBundle) serveBundle(server, '/proxy/proxy.js', proxyBundle)
server.use('/proxy/', express.static(__dirname + '/../proxy')) server.use('/proxy/', express.static(path.join(__dirname, '/../proxy')))
// background // background
serveBundle(server, '/background.js', backgroundBuild) serveBundle(server, '/background.js', backgroundBuild)

View File

@ -29,6 +29,7 @@
"test:mascara:build:background": "browserify mascara/src/background.js -o dist/mascara/background.js", "test:mascara:build:background": "browserify mascara/src/background.js -o dist/mascara/background.js",
"test:mascara:build:tests": "browserify test/integration/lib/first-time.js -o dist/mascara/tests.js", "test:mascara:build:tests": "browserify test/integration/lib/first-time.js -o dist/mascara/tests.js",
"lint": "gulp lint", "lint": "gulp lint",
"lint:fix": "gulp lint:fix",
"disc": "gulp disc --debug", "disc": "gulp disc --debug",
"announce": "node development/announcer.js", "announce": "node development/announcer.js",
"generateNotice": "node notices/notice-generator.js", "generateNotice": "node notices/notice-generator.js",

View File

@ -161,8 +161,6 @@ class AccountDropdowns extends Component {
) )
} }
renderAccountOptions () { renderAccountOptions () {
const { actions } = this.props const { actions } = this.props
const { optionsMenuActive } = this.state const { optionsMenuActive } = this.state

View File

@ -130,8 +130,8 @@ ShapeshiftForm.prototype.renderMain = function () {
alignItems: 'flex-start', alignItems: 'flex-start',
}, },
}, [ }, [
this.props.warning this.props.warning ?
? this.props.warning && this.props.warning &&
h('span.error.flex-center', { h('span.error.flex-center', {
style: { style: {
textAlign: 'center', textAlign: 'center',

View File

@ -32,11 +32,11 @@ TypedMessageRenderer.prototype.render = function () {
) )
} }
function renderTypedData(values) { function renderTypedData (values) {
return values.map(function (value) { return values.map(function (value) {
return h('div', {}, [ return h('div', {}, [
h('strong', {style: {display: 'block', fontWeight: 'bold'}}, String(value.name) + ':'), h('strong', {style: {display: 'block', fontWeight: 'bold'}}, String(value.name) + ':'),
h('div', {}, value.value), h('div', {}, value.value),
]) ])
}) })
} }

View File

@ -42,7 +42,7 @@ function rootReducer (state, action) {
} }
window.logState = function () { window.logState = function () {
let state = window.METAMASK_CACHED_LOG_STATE const state = window.METAMASK_CACHED_LOG_STATE
let version let version
try { try {
version = global.platform.getVersion() version = global.platform.getVersion()
@ -50,7 +50,7 @@ window.logState = function () {
version = 'unable to load version.' version = 'unable to load version.'
} }
state.version = version state.version = version
let stateString = JSON.stringify(state, removeSeedWords, 2) const stateString = JSON.stringify(state, removeSeedWords, 2)
return stateString return stateString
} }

View File

@ -24,4 +24,4 @@ module.exports = function (unapprovedTxs, unapprovedMsgs, personalMsgs, typedMes
}) })
return allValues return allValues
} }