inpage - remap ids on response

This commit is contained in:
kumavis 2016-08-31 15:40:05 -07:00
parent d26dd53fe1
commit 532737a101
1 changed files with 18 additions and 4 deletions

View File

@ -33,15 +33,29 @@ function MetamaskInpageProvider (connectionStream) {
}) })
asyncProvider.on('error', console.error.bind(console)) asyncProvider.on('error', console.error.bind(console))
self.asyncProvider = asyncProvider self.asyncProvider = asyncProvider
self.idMap = {}
// handle sendAsync requests via asyncProvider // handle sendAsync requests via asyncProvider
self.sendAsync = function(payload, cb){ self.sendAsync = function(payload, cb){
// rewrite request ids // rewrite request ids
var request = jsonrpcMessageTransform(payload, (message) => { var request = eachJsonMessage(payload, (message) => {
message.id = createRandomId() var newId = createRandomId()
self.idMap[newId] = message.id
message.id = newId
return message return message
}) })
// forward to asyncProvider // forward to asyncProvider
asyncProvider.sendAsync(request, cb) asyncProvider.sendAsync(request, function(err, res){
if (err) return cb(err)
// transform messages to original ids
eachJsonMessage(res, (message) => {
var oldId = self.idMap[message.id]
delete self.idMap[message.id]
message.id = oldId
return message
})
cb(null, res)
})
} }
} }
@ -111,7 +125,7 @@ function createRandomId(){
return datePart + extraPart return datePart + extraPart
} }
function jsonrpcMessageTransform(payload, transformFn){ function eachJsonMessage(payload, transformFn){
if (Array.isArray(payload)) { if (Array.isArray(payload)) {
return payload.map(transformFn) return payload.map(transformFn)
} else { } else {