contractCallAddMultiSig method

Future<ContractCallResponse> contractCallAddMultiSig(
  1. String nodeAddress,
  2. String contract,
  3. double maxFee,
  4. String destinationAddress,
  5. String privateKey,
)

Implementation

Future<ContractCallResponse> contractCallAddMultiSig(
    String nodeAddress,
    String contract,
    double maxFee,
    String destinationAddress,
    String privateKey) async {
  ContractCallMultiSigRequest contractCallRequest;
  ContractCallResponse contractCallResponse;

  Map<String, dynamic> mapParams;

  Completer<ContractCallResponse> _completer =
      new Completer<ContractCallResponse>();

  mapParams = {
    'method': ContractCallRequest.METHOD_NAME,
    'params': [
      {
        "from": nodeAddress,
        "contract": contract,
        "method": "add",
        "maxFee": maxFee,
        "args": [
          {"index": 0, "format": "hex", "value": destinationAddress},
        ]
      }
    ],
    'id': 101,
    'key': keyApp
  };

  try {
    if (this.nodeType == NORMAL_VPS_NODE) {
      SSHClientStatus sshClientStatus;
      sshClientStatus = await VpsUtil().connectVps(this.apiUrl, keyApp);
      if (sshClientStatus.sshClientStatus) {
        sshClient = sshClientStatus.sshClient;
      }
      var response = await ssh.HttpClientImpl(
          clientFactory: () =>
              ssh.SSHTunneledBaseClient(sshClientStatus.sshClient)).request(
          this.apiUrl,
          method: 'POST',
          data: jsonEncode(mapParams),
          headers: requestHeaders);
      if (response.status == 200) {
        contractCallResponse = contractCallResponseFromJson(response.text);

        if (contractCallResponse != null &&
            contractCallResponse.result != null) {
          AppService().sendTx(nodeAddress, "0", destinationAddress,
              privateKey, "multisig:" + contract);
        }
      }
    } else {
      contractCallRequest = ContractCallMultiSigRequest.fromJson(mapParams);
      body = json.encode(contractCallRequest.toJson());
      responseHttp = await http.post(Uri.parse(this.apiUrl),
          body: body, headers: requestHeaders);
      if (responseHttp.statusCode == 200) {
        contractCallResponse =
            contractCallResponseFromJson(responseHttp.body);

        if (contractCallResponse != null &&
            contractCallResponse.result != null) {
          AppService().sendTx(nodeAddress, "0", destinationAddress,
              privateKey, "multisig:" + contract);
        }
      }
    }
  } catch (e) {
    logger.e(e.toString());
  }

  _completer.complete(contractCallResponse);

  return _completer.future;
}