fetchBalance method
Query the network to find a balance from a list of addresses
Implementation
Future<Map<String, Balance>> fetchBalance(List<String> addresses,
{String request = Transaction.kTransactionBalanceQueryAllFields}) async {
if (addresses.isEmpty) {
return {};
}
final fragment = 'fragment fields on Balance { $request }';
final body = StringBuffer()..write('query { ');
for (final address in addresses) {
body.write(
' _$address: balance(address:"$address") { ...fields }',
);
}
body.write(' } $fragment');
log('fetchBalance: requestHttp.body=$body');
final result = await _client.query(
QueryOptions(
document: gql(body.toString()),
parserFn: (object) {
final balances = object.mapValues(
(value) => Balance.fromJson(value as Map<String, dynamic>),
keysToIgnore: _responseKeysToIgnore,
);
return removeAliasPrefix(balances) ?? {};
},
),
);
if (result.exception?.linkException != null) {
throw ArchethicConnectionException(
result.exception!.linkException.toString(),
);
}
return result.parsedData ?? {};
}