injectDecodedReturn function

Map injectDecodedReturn(
  1. Map emulateResponse,
  2. Contract contract,
  3. String funcName
)

Inject 'decoded' return value into a emulate response

Implementation

Map injectDecodedReturn(
    Map emulateResponse, Contract contract, String funcName) {
  if (emulateResponse["reverted"] == true) {
    return emulateResponse;
  }

  if ((emulateResponse["data"] == null) ||
      (emulateResponse["data"] == "0x")) {
    return emulateResponse;
  }
  var functionObj = contract.getFunctionByName(funcName);
  var wrapperList = functionObj.decodeReturnV1(emulateResponse["data"]);
  Map decoded = {};
  for (var i = 0; i < wrapperList.length; i++) {
    decoded[i] =  wrapperList[i].value;
  }
  // for (var obj in wrapperList) {
  //   decoded[obj.name] = obj.value;
  // }

  emulateResponse["decoded"] = decoded;

  return emulateResponse;
}