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;
}