getOfferIdFromResult method

int getOfferIdFromResult (
  1. int position
)

Helper method that returns Offer ID for ManageOffer from TransactionResult Xdr. This is helpful when you need the ID of an offer to update it later.

Implementation

int getOfferIdFromResult(int position) {
  if (!this.success) {
    return null;
  }

  XdrDataInputStream xdrInputStream =
  new XdrDataInputStream(base64Decode(this.resultXdr));
  XdrTransactionResult result;

  try {
    result = XdrTransactionResult.decode(xdrInputStream);
  } catch (e) {
    return null;
  }

  if (result.result.results[position] == null) {
    return null;
  }

  XdrOperationType disc = (result.result.results[position] as XdrOperationResult)
      .tr
      .discriminant;
  if (disc != XdrOperationType.MANAGE_SELL_OFFER && disc != XdrOperationType.MANAGE_BUY_OFFER) {
    return null;
  }

  if ((result.result.results[0] as XdrOperationResult)
      .tr
      .manageOfferResult
      .success
      .offer
      .offer ==
      null) {
    return null;
  }

  return (result.result.results[0] as XdrOperationResult)
      .tr
      .manageOfferResult
      .success
      .offer
      .offer
      .offerID
      .uint64;
}