From 2347150d5d467e851acab4a2ca9bea7a6645e2bc Mon Sep 17 00:00:00 2001 From: Alex Beregszaszi Date: Mon, 4 Apr 2016 14:43:10 +0100 Subject: [PATCH] Decode contract responses (ABI) using ethereumjs-abi --- assets/js/universal-dapp.js | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/assets/js/universal-dapp.js b/assets/js/universal-dapp.js index 13d6263717..6363cc88bb 100644 --- a/assets/js/universal-dapp.js +++ b/assets/js/universal-dapp.js @@ -316,9 +316,18 @@ UniversalDApp.prototype.getCallButton = function(args) { replaceOutput($result, getGasUsedOutput(result)); args.appendFunctions(result.createdAddress); } else if (self.options.vm){ - //@todo implement once decoder is exposed by web3.js - //var outputObj = fun.unpackOutput('0x' + result.vm.return.toString('hex')); - var outputObj = '0x' + result.vm.return.toString('hex'); + var outputObj; + + try { + var outputTypes = []; + for (var i = 0; i < args.abi.outputs.length; i++) { + outputTypes.push(args.abi.outputs[i].type); + } + outputObj = EthJS.ABI.rawDecode(null, null, outputTypes, result.vm.return); + } catch (e) { + outputObj = '0x' + result.vm.return.toString('hex'); + } + clearOutput($result); $result.append(getReturnOutput(outputObj)).append(getGasUsedOutput(result.vm)); } else if (args.abi.constant && !isConstructor) {