resolveTransaction static method

Transaction resolveTransaction({
  1. Transaction? transaction,
  2. TransactionOperation? operation,
})

Implementation

static Transaction resolveTransaction(
    {Transaction? transaction, TransactionOperation? operation}) {
  if (transaction == null &&
      operation != null &&
      operation._transactionResolved) {
    return operation.transaction;
  }

  transaction ??= Transaction.executingTransaction;

  if (transaction == null) {
    return Transaction._(true);
  }

  var transactionExecutor = transaction.executor;

  if (transactionExecutor != null &&
      operation != null &&
      operation.executor != transactionExecutor &&
      operation is! TransactionOperationSubTransaction) {
    var subTransaction = Transaction._(true, false, transaction);

    var opSubTransaction = TransactionOperationSubTransaction(
        operation.repositoryName,
        operation.executor,
        transaction,
        subTransaction,
        parentOperation: operation);

    // ignore: discarded_futures
    subTransaction.transactionFuture.then((result) {
      // ignore: discarded_futures
      opSubTransaction.finish(result);
    });

    return subTransaction;
  }

  return transaction;
}