diff options
-rw-r--r-- | app/scripts/background.js | 34 | ||||
-rw-r--r-- | app/scripts/lib/inpage-provider.js | 2 | ||||
-rw-r--r-- | app/scripts/lib/stream-provider.js | 72 | ||||
-rw-r--r-- | app/scripts/popup.js | 2 |
4 files changed, 14 insertions, 96 deletions
diff --git a/app/scripts/background.js b/app/scripts/background.js index f79047db4..8c6adff04 100644 --- a/app/scripts/background.js +++ b/app/scripts/background.js @@ -1,11 +1,12 @@ const Dnode = require('dnode') -const ObjectMultiplex = require('./lib/obj-multiplex') const eos = require('end-of-stream') const combineStreams = require('pumpify') const extend = require('xtend') const EthStore = require('eth-store') -const PortStream = require('./lib/port-stream.js') const MetaMaskProvider = require('web3-provider-engine/zero.js') +const handleRequestsFromStream = require('web3-stream-provider/handler') +const ObjectMultiplex = require('./lib/obj-multiplex') +const PortStream = require('./lib/port-stream.js') const IdentityStore = require('./lib/idStore') const createTxNotification = require('./lib/notifications.js').createTxNotification const createMsgNotification = require('./lib/notifications.js').createMsgNotification @@ -132,25 +133,6 @@ function storeSetFromObj(store, obj){ } - -// handle rpc requests -function onRpcRequest(remoteStream, payload){ - // console.log('MetaMaskPlugin - incoming payload:', payload) - provider.sendAsync(payload, function onPayloadHandled(err, response){ - // provider engine errors are included in response objects - if (!payload.isMetamaskInternal) { - console.log('MetaMaskPlugin - RPC complete:', payload, '->', response) - if (response.error) console.error('Error in RPC response:\n'+response.error.message) - } - try { - remoteStream.write(response) - } catch (err) { - console.error(err) - } - }) -} - - // // remote features // @@ -161,7 +143,15 @@ function setupPublicConfig(stream){ } function setupProviderConnection(stream){ - stream.on('data', onRpcRequest.bind(null, stream)) + handleRequestsFromStream(stream, provider, logger) + + function logger(err, request, response){ + if (err) return console.error(err.stack) + if (!request.isMetamaskInternal) { + console.log('MetaMaskPlugin - RPC complete:', request, '->', response) + if (response.error) console.error('Error in RPC response:\n'+response.error.message) + } + } } function setupControllerConnection(stream){ diff --git a/app/scripts/lib/inpage-provider.js b/app/scripts/lib/inpage-provider.js index 66681c3a9..70b0d80dd 100644 --- a/app/scripts/lib/inpage-provider.js +++ b/app/scripts/lib/inpage-provider.js @@ -1,7 +1,7 @@ const HttpProvider = require('web3/lib/web3/httpprovider') const Streams = require('mississippi') const ObjectMultiplex = require('./obj-multiplex') -const StreamProvider = require('./stream-provider.js') +const StreamProvider = require('web3-stream-provider') const RemoteStore = require('./remote-store.js').RemoteStore const MetamaskConfig = require('../config.js') diff --git a/app/scripts/lib/stream-provider.js b/app/scripts/lib/stream-provider.js deleted file mode 100644 index 505e45d1f..000000000 --- a/app/scripts/lib/stream-provider.js +++ /dev/null @@ -1,72 +0,0 @@ -const Duplex = require('readable-stream').Duplex -const inherits = require('util').inherits - -module.exports = StreamProvider - - -inherits(StreamProvider, Duplex) - -function StreamProvider(){ - Duplex.call(this, { - objectMode: true, - }) - - this._payloads = {} -} - -// public - -StreamProvider.prototype.send = function(payload){ - throw new Error('StreamProvider - does not support synchronous RPC calls. called: "'+payload.method+'"') -} - -StreamProvider.prototype.sendAsync = function(payload, callback){ - // console.log('StreamProvider - sending payload', payload) - var id = payload.id - if (Array.isArray(payload)) { - id = 'batch'+payload[0].id - } - this._payloads[id] = [payload, callback] - // console.log('payload for plugin:', payload) - this.push(payload) -} - -StreamProvider.prototype.isConnected = function(){ - return true -} - -// private - -StreamProvider.prototype._onResponse = function(response){ - // console.log('StreamProvider - got response', payload) - var id = response.id - if (Array.isArray(response)) { - id = 'batch'+response[0].id - } - var data = this._payloads[id] - if (!data) throw new Error('StreamProvider - Unknown response id') - delete this._payloads[id] - var payload = data[0] - var callback = data[1] - - // logging - var res = Array.isArray(response) ? response : [response] - // ;(Array.isArray(payload) ? payload : [payload]).forEach(function(payload, index){ - // console.log('plugin response:', payload.id, payload.method, payload.params, '->', res[index].result) - // }) - - callback(null, response) -} - -// stream plumbing - -StreamProvider.prototype._read = noop - -StreamProvider.prototype._write = function(msg, encoding, cb){ - this._onResponse(msg) - cb() -} - -// util - -function noop(){}
\ No newline at end of file diff --git a/app/scripts/popup.js b/app/scripts/popup.js index e9ca7cd71..4fa6e1127 100644 --- a/app/scripts/popup.js +++ b/app/scripts/popup.js @@ -7,7 +7,7 @@ const MetaMaskUi = require('../../ui') const MetaMaskUiCss = require('../../ui/css') const injectCss = require('inject-css') const PortStream = require('./lib/port-stream.js') -const StreamProvider = require('./lib/stream-provider.js') +const StreamProvider = require('web3-stream-provider') const setupMultiplex = require('./lib/stream-utils.js').setupMultiplex // setup app |