toOperationBody method Null safety

  1. @override
XdrOperationBody toOperationBody()
override

Generates OperationBody XDR object.

Implementation

@override
XdrOperationBody toOperationBody() {
  List<XdrSCVal> invokeArgsList = List<XdrSCVal>.empty(growable: true);

  // contract id
  XdrSCVal contractIDScVal = XdrSCVal(XdrSCValType.SCV_OBJECT);
  XdrSCObject contractIDSCObject = XdrSCObject(XdrSCObjectType.SCO_BYTES);
  contractIDSCObject.bin = XdrDataValue(Util.hexToBytes(this._contractID));
  contractIDScVal.obj = contractIDSCObject;
  invokeArgsList.add(contractIDScVal);

  // function name
  XdrSCVal functionNameScVal = XdrSCVal(XdrSCValType.SCV_SYMBOL);
  functionNameScVal.sym = this._functionName;
  invokeArgsList.add(functionNameScVal);

  // arguments for the function call
  if (this._arguments != null) {
    invokeArgsList.addAll(this._arguments!);
  }

  // prepare function
  XdrHostFunction xdrHostFunction =
      XdrHostFunction(XdrHostFunctionType.HOST_FUNCTION_TYPE_INVOKE_CONTRACT);
  xdrHostFunction.invokeArgs = invokeArgsList;

  XdrOperationBody body =
      XdrOperationBody(XdrOperationType.INVOKE_HOST_FUNCTION);
  body.invokeHostFunctionOp = XdrInvokeHostFunctionOp(
      xdrHostFunction, getXdrFootprint(), contractAuth);
  return body;
}