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 =
      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[position] as XdrOperationResult?)
          ?.tr!
          .manageOfferResult!
          .success!
          .offer!
          .offer ==
      null) {
    return null;
  }

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