waitForSignatureStatus method

Future<void> waitForSignatureStatus(
  1. String signature, {
  2. required ConfirmationStatus status,
  3. Duration? timeout,
})

Waits for transation with signature to reach status. Throws exception if transaction failed.

Implementation

Future<void> waitForSignatureStatus(
  String signature, {
  required ConfirmationStatus status,
  Duration? timeout,
}) async {
  try {
    final future = signatureSubscribe(
      signature,
      commitment: status,
    ).first;

    final result = await (timeout == null ? future : future.timeout(timeout));

    if (result.err != null) throw Exception(result.err);
    // ignore: avoid_catching_errors, catch Bad state: no element
  } on StateError catch (_, stackTrace) {
    Error.throwWithStackTrace(Exception('Bad state'), stackTrace);
  }
}