getTransactionInputs method

Future<Map<String, List<TransactionInput>>> getTransactionInputs(
  1. List<String> addresses, {
  2. String request = Transaction.kTransactionInputQueryAllFields,
})

Query the network to list the transaction inputs from a list of addresses

Implementation

Future<Map<String, List<TransactionInput>>> getTransactionInputs(
  List<String> addresses, {
  String request = Transaction.kTransactionInputQueryAllFields,
}) async {
  if (addresses.isEmpty) {
    return {};
  }

  final fragment = 'fragment fields on TransactionInput { $request }';
  final body = StringBuffer()..write('query { ');
  for (final address in addresses) {
    body.write(
      ' _$address: transactionInputs(address:"$address") { ...fields } ',
    );
  }
  body.write(' } $fragment');
  log('getTransactionInputs: requestHttp.body=$body');

  final result = await _client.query(
    QueryOptions(
      document: gql(body.toString()),
      parserFn: (json) {
        final transactionInputs = json.mapValues(
          (transactionInputs) => (transactionInputs as List<dynamic>)
              .map(
                (transactionInput) => TransactionInput.fromJson(
                    transactionInput as Map<String, dynamic>),
              )
              .toList(),
          keysToIgnore: _responseKeysToIgnore,
        );
        return removeAliasPrefix<List<TransactionInput>>(transactionInputs) ??
            {};
      },
    ),
  );

  if (result.exception?.linkException != null) {
    throw ArchethicConnectionException(
      result.exception!.linkException.toString(),
    );
  }

  return result.parsedData ?? {};
}