aboutsummaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
authorDan Finlay <somniac@me.com>2016-09-02 02:34:38 +0800
committerGitHub <noreply@github.com>2016-09-02 02:34:38 +0800
commit34fd23803d5eea94bd588b805872377edf48a9c6 (patch)
tree671a308c73f61fc1e2b3fba3cc71ef1d3ac77477 /app
parenta6e3357d222486b5efe4e8a196e7841cf4154193 (diff)
parent32345bda7751f962105bb8bd4ea402f549f30409 (diff)
downloadtangerine-wallet-browser-34fd23803d5eea94bd588b805872377edf48a9c6.tar
tangerine-wallet-browser-34fd23803d5eea94bd588b805872377edf48a9c6.tar.gz
tangerine-wallet-browser-34fd23803d5eea94bd588b805872377edf48a9c6.tar.bz2
tangerine-wallet-browser-34fd23803d5eea94bd588b805872377edf48a9c6.tar.lz
tangerine-wallet-browser-34fd23803d5eea94bd588b805872377edf48a9c6.tar.xz
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.js22
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 {