diff --git a/CHANGELOG.md b/CHANGELOG.md index 5d75538f5..177545214 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ ## Current Master +- Fix bug that would cause MetaMask to occasionally lose its StreamProvider connection and drop requests. + ## 2.13.8 2016-11-16 - Show a warning when a transaction fails during simulation. diff --git a/app/scripts/lib/idStore.js b/app/scripts/lib/idStore.js index 65b8c7029..ccd5efe69 100644 --- a/app/scripts/lib/idStore.js +++ b/app/scripts/lib/idStore.js @@ -7,7 +7,7 @@ const EthQuery = require('eth-query') const KeyStore = require('eth-lightwallet').keystore const clone = require('clone') const extend = require('xtend') -const createId = require('web3-provider-engine/util/random-id') +const createId = require('./random-id') const ethBinToOps = require('eth-bin-to-ops') const autoFaucet = require('./auto-faucet') const messageManager = require('./message-manager') diff --git a/app/scripts/lib/inpage-provider.js b/app/scripts/lib/inpage-provider.js index 052a8f5fe..f1ba2e0ed 100644 --- a/app/scripts/lib/inpage-provider.js +++ b/app/scripts/lib/inpage-provider.js @@ -2,6 +2,7 @@ const Streams = require('mississippi') const StreamProvider = require('web3-stream-provider') const ObjectMultiplex = require('./obj-multiplex') const RemoteStore = require('./remote-store.js').RemoteStore +const createRandomId = require('./random-id') module.exports = MetamaskInpageProvider @@ -119,16 +120,6 @@ function remoteStoreWithLocalStorageCache (storageKey) { return store } -function createRandomId(){ - const extraDigits = 3 - // 13 time digits - const datePart = new Date().getTime() * Math.pow(10, extraDigits) - // 3 random digits - const extraPart = Math.floor(Math.random() * Math.pow(10, extraDigits)) - // 16 digits - return datePart + extraPart -} - function eachJsonMessage(payload, transformFn){ if (Array.isArray(payload)) { return payload.map(transformFn) diff --git a/app/scripts/lib/random-id.js b/app/scripts/lib/random-id.js new file mode 100644 index 000000000..3c5ae5600 --- /dev/null +++ b/app/scripts/lib/random-id.js @@ -0,0 +1,9 @@ +const MAX = 1000000000 + +let idCounter = Math.round( Math.random() * MAX ) +function createRandomId() { + idCounter = idCounter % MAX + return idCounter++ +} + +module.exports = createRandomId