diff options
author | Dan Finlay <somniac@me.com> | 2016-09-02 02:34:38 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-09-02 02:34:38 +0800 |
commit | 34fd23803d5eea94bd588b805872377edf48a9c6 (patch) | |
tree | 671a308c73f61fc1e2b3fba3cc71ef1d3ac77477 /app | |
parent | a6e3357d222486b5efe4e8a196e7841cf4154193 (diff) | |
parent | 32345bda7751f962105bb8bd4ea402f549f30409 (diff) | |
download | tangerine-wallet-browser-34fd23803d5eea94bd588b805872377edf48a9c6.tar.gz tangerine-wallet-browser-34fd23803d5eea94bd588b805872377edf48a9c6.tar.zst tangerine-wallet-browser-34fd23803d5eea94bd588b805872377edf48a9c6.zip |
Merge branch 'master' into i566-NoPopupWhenOpen
Diffstat (limited to 'app')
-rw-r--r-- | app/scripts/lib/inpage-provider.js | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/app/scripts/lib/inpage-provider.js b/app/scripts/lib/inpage-provider.js index 65354cd3d..3b7d76c7d 100644 --- a/app/scripts/lib/inpage-provider.js +++ b/app/scripts/lib/inpage-provider.js @@ -33,15 +33,29 @@ function MetamaskInpageProvider (connectionStream) { }) asyncProvider.on('error', console.error.bind(console)) self.asyncProvider = asyncProvider + + self.idMap = {} // handle sendAsync requests via asyncProvider self.sendAsync = function(payload, cb){ // rewrite request ids - var request = jsonrpcMessageTransform(payload, (message) => { - message.id = createRandomId() + var request = eachJsonMessage(payload, (message) => { + var newId = createRandomId() + self.idMap[newId] = message.id + message.id = newId return message }) // 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 } -function jsonrpcMessageTransform(payload, transformFn){ +function eachJsonMessage(payload, transformFn){ if (Array.isArray(payload)) { return payload.map(transformFn) } else { |