aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/scripts/background.js34
-rw-r--r--app/scripts/lib/inpage-provider.js2
-rw-r--r--app/scripts/lib/stream-provider.js72
-rw-r--r--app/scripts/popup.js2
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