From 978f36592fb034399a8bc5cc4c92e521c25b64a1 Mon Sep 17 00:00:00 2001 From: yann300 Date: Fri, 10 May 2019 12:13:42 +0200 Subject: [PATCH] stringify event with param array and struct --- remix-lib/src/execution/eventsDecoder.js | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/remix-lib/src/execution/eventsDecoder.js b/remix-lib/src/execution/eventsDecoder.js index 88a17e9353..5d1ff46c56 100644 --- a/remix-lib/src/execution/eventsDecoder.js +++ b/remix-lib/src/execution/eventsDecoder.js @@ -63,6 +63,21 @@ class EventsDecoder { return null } + _stringifyBigNumber (value) { + return value._ethersType === 'BigNumber' ? value.toString() : value + } + + _stringifyEvent (value) { + if (value === null || value === undefined) return ' - ' + if (value._ethersType) value.type = value._ethersType + if (Array.isArray(value)) { + // for struct && array + return value.map((item) => { return this._stringifyEvent(item) }) + } else { + return this._stringifyBigNumber(value) + } + } + _decodeEvents (tx, logs, contractName, compiledContracts, cb) { var eventsABI = this._eventsABI(compiledContracts) var events = [] @@ -75,10 +90,7 @@ class EventsDecoder { var decodedlog = eventAbi.abi.parseLog(log) let decoded = {} for (const v in decodedlog.values) { - const value = decodedlog.values[v] - if (value._ethersType) value.type = value._ethersType - let decodedValue = value._ethersType === 'BigNumber' ? value.toString() : value - decoded[v] = decodedValue + decoded[v] = this._stringifyEvent(decodedlog.values[v]) } events.push({ from: log.address, topic: topicId, event: eventAbi.event, args: decoded }) } else {