Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Declare variables before use #6806

Merged
merged 1 commit into from
Jul 5, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .eslintrc
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,7 @@
"no-unreachable": 2,
"no-unsafe-finally": 2,
"no-unused-vars": [2, { "vars": "all", "args": "all", "argsIgnorePattern": "[_]+" }],
"no-use-before-define": [2, { "functions": false }],
"no-useless-call": 2,
"no-useless-computed-key": 2,
"no-useless-constructor": 2,
Expand Down
89 changes: 46 additions & 43 deletions app/scripts/inpage.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,36 @@
/*global Web3*/


// need to make sure we aren't affected by overlapping namespaces
// and that we dont affect the app with our namespace
// mostly a fix for web3's BigNumber if AMD's "define" is defined...
let __define

/**
* Caches reference to global define object and deletes it to
* avoid conflicts with other global define objects, such as
* AMD's define function
*/
const cleanContextForImports = () => {
__define = global.define
try {
global.define = undefined
} catch (_) {
console.warn('MetaMask - global.define could not be deleted.')
}
}

/**
* Restores global define object from cached reference
*/
const restoreContextAfterImports = () => {
try {
global.define = __define
} catch (_) {
console.warn('MetaMask - global.define could not be overwritten.')
}
}

cleanContextForImports()
require('web3/dist/web3.min.js')
const log = require('loglevel')
Expand Down Expand Up @@ -46,6 +78,20 @@ inpageProvider.enable = function ({ force } = {}) {
// this will be default true so it does not break any old apps.
inpageProvider.autoRefreshOnNetworkChange = true


// publicConfig isn't populated until we get a message from background.
// Using this getter will ensure the state is available
const getPublicConfigWhenReady = async () => {
const store = inpageProvider.publicConfigStore
let state = store.getState()
// if state is missing, wait for first update
if (!state.networkVersion) {
state = await new Promise(resolve => store.once('update', resolve))
console.log('new state', state)
}
return state
}

// add metamask-specific convenience methods
inpageProvider._metamask = new Proxy({
/**
Expand Down Expand Up @@ -87,19 +133,6 @@ inpageProvider._metamask = new Proxy({
},
})

// publicConfig isn't populated until we get a message from background.
// Using this getter will ensure the state is available
async function getPublicConfigWhenReady () {
const store = inpageProvider.publicConfigStore
let state = store.getState()
// if state is missing, wait for first update
if (!state.networkVersion) {
state = await new Promise(resolve => store.once('update', resolve))
console.log('new state', state)
}
return state
}

// Work around for [email protected] deleting the bound `sendAsync` but not the unbound
// `sendAsync` method on the prototype, causing `this` reference issues with drizzle
const proxiedInpageProvider = new Proxy(inpageProvider, {
Expand Down Expand Up @@ -161,33 +194,3 @@ inpageProvider.publicConfigStore.subscribe(function (state) {
window.postMessage('onboardingcomplete', '*')
}
})

// need to make sure we aren't affected by overlapping namespaces
// and that we dont affect the app with our namespace
// mostly a fix for web3's BigNumber if AMD's "define" is defined...
let __define

/**
* Caches reference to global define object and deletes it to
* avoid conflicts with other global define objects, such as
* AMD's define function
*/
function cleanContextForImports () {
__define = global.define
try {
global.define = undefined
} catch (_) {
console.warn('MetaMask - global.define could not be deleted.')
}
}

/**
* Restores global define object from cached reference
*/
function restoreContextAfterImports () {
try {
global.define = __define
} catch (_) {
console.warn('MetaMask - global.define could not be overwritten.')
}
}
13 changes: 6 additions & 7 deletions app/scripts/lib/createStreamSink.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,6 @@
const WritableStream = require('readable-stream').Writable
const promiseToCallback = require('promise-to-callback')

module.exports = createStreamSink


function createStreamSink (asyncWriteFn, _opts) {
return new AsyncWritableStream(asyncWriteFn, _opts)
}

class AsyncWritableStream extends WritableStream {

constructor (asyncWriteFn, _opts) {
Expand All @@ -22,3 +15,9 @@ class AsyncWritableStream extends WritableStream {
}

}

function createStreamSink (asyncWriteFn, _opts) {
return new AsyncWritableStream(asyncWriteFn, _opts)
}

module.exports = createStreamSink
25 changes: 12 additions & 13 deletions test/unit/app/controllers/metamask-controller-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -679,19 +679,6 @@ describe('MetaMaskController', function () {
})

describe('#newUnsignedPersonalMessage', function () {

it('errors with no from in msgParams', async () => {
const msgParams = {
'data': data,
}
try {
await metamaskController.newUnsignedPersonalMessage(msgParams)
assert.fail('should have thrown')
} catch (error) {
assert.equal(error.message, 'MetaMask Message Signature: from field is required.')
}
})

let msgParams, metamaskPersonalMsgs, personalMessages, msgId

const address = '0xc42edfcc21ed14dda456aa0756c153f7985d8813'
Expand All @@ -718,6 +705,18 @@ describe('MetaMaskController', function () {
personalMessages[0].msgParams.metamaskId = parseInt(msgId)
})

it('errors with no from in msgParams', async () => {
const msgParams = {
'data': data,
}
try {
await metamaskController.newUnsignedPersonalMessage(msgParams)
assert.fail('should have thrown')
} catch (error) {
assert.equal(error.message, 'MetaMask Message Signature: from field is required.')
}
})

it('persists address from msg params', function () {
assert.equal(metamaskPersonalMsgs[msgId].msgParams.from, address)
})
Expand Down
2 changes: 1 addition & 1 deletion test/unit/ui/app/reducers/app.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -700,7 +700,7 @@ describe('App State', () => {
})

it('hides sub loading indicator', () => {
const oldState = {...metamaskState, ...oldState}
const oldState = {...metamaskState, isSubLoading: true }
const state = reduceApp(oldState, {
type: actions.HIDE_SUB_LOADING_INDICATION,
})
Expand Down
14 changes: 7 additions & 7 deletions ui/app/helpers/utils/conversion-util.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,13 +37,6 @@ const BIG_NUMBER_WEI_MULTIPLIER = new BigNumber('1000000000000000000')
const BIG_NUMBER_GWEI_MULTIPLIER = new BigNumber('1000000000')
const BIG_NUMBER_ETH_MULTIPLIER = new BigNumber('1')

// Individual Setters
const convert = R.invoker(1, 'times')
const round = R.invoker(2, 'round')(R.__, BigNumber.ROUND_HALF_DOWN)
const roundDown = R.invoker(2, 'round')(R.__, BigNumber.ROUND_DOWN)
const invertConversionRate = conversionRate => () => new BigNumber(1.0).div(conversionRate)
const decToBigNumberViaString = () => R.pipe(String, toBigNumber['dec'])

// Setter Maps
const toBigNumber = {
hex: n => new BigNumber(stripHexPrefix(n), 16),
Expand All @@ -66,6 +59,13 @@ const baseChange = {
BN: n => new BN(n.toString(16)),
}

// Individual Setters
const convert = R.invoker(1, 'times')
const round = R.invoker(2, 'round')(R.__, BigNumber.ROUND_HALF_DOWN)
const roundDown = R.invoker(2, 'round')(R.__, BigNumber.ROUND_DOWN)
const invertConversionRate = conversionRate => () => new BigNumber(1.0).div(conversionRate)
const decToBigNumberViaString = () => R.pipe(String, toBigNumber['dec'])

// Predicates
const fromAndToCurrencyPropsNotEqual = R.compose(
R.not,
Expand Down
24 changes: 12 additions & 12 deletions ui/app/pages/routes/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -183,18 +183,6 @@ class Routes extends Component {
this.getConnectingLabel(loadingMessage) : null
log.debug('Main ui render function')

const sidebarOnOverlayClose = sidebarType === WALLET_VIEW_SIDEBAR
? () => {
this.context.metricsEvent({
eventOpts: {
category: 'Navigation',
action: 'Wallet Sidebar',
name: 'Closed Sidebare Via Overlay',
},
})
}
: null

const {
isOpen: sidebarIsOpen,
transitionName: sidebarTransitionName,
Expand All @@ -203,6 +191,18 @@ class Routes extends Component {
} = sidebar
const { transaction: sidebarTransaction } = props || {}

const sidebarOnOverlayClose = sidebarType === WALLET_VIEW_SIDEBAR
? () => {
this.context.metricsEvent({
eventOpts: {
category: 'Navigation',
action: 'Wallet Sidebar',
name: 'Closed Sidebare Via Overlay',
},
})
}
: null

return (
<div
className="app"
Expand Down
28 changes: 14 additions & 14 deletions ui/app/store/actions.js
Original file line number Diff line number Diff line change
Expand Up @@ -1210,6 +1210,20 @@ function signTokenTx (tokenAddress, toAddress, amount, txData) {
}
}

const updateMetamaskStateFromBackground = () => {
log.debug(`background.getState`)

return new Promise((resolve, reject) => {
background.getState((error, newState) => {
if (error) {
return reject(error)
}

resolve(newState)
})
})
}

function updateTransaction (txData) {
log.info('actions: updateTx: ' + JSON.stringify(txData))
return dispatch => {
Expand Down Expand Up @@ -1618,20 +1632,6 @@ const backgroundSetLocked = () => {
})
}

const updateMetamaskStateFromBackground = () => {
log.debug(`background.getState`)

return new Promise((resolve, reject) => {
background.getState((error, newState) => {
if (error) {
return reject(error)
}

resolve(newState)
})
})
}

function lockMetamask () {
log.debug(`background.setLocked`)

Expand Down