Select Git revision
gva.dart 4.26 KiB
import 'package:bip32_ed25519/api.dart';
import 'package:durt/src/gva/queries.dart';
import 'package:durt/src/gva/transaction.dart';
import 'package:graphql/client.dart';
class Gva {
final GraphQLClient _client;
Gva._(this._client);
/// Main constructor for GVA query object
factory Gva({required String node}) {
final _httpLink = HttpLink(node);
final GraphQLClient client = GraphQLClient(
cache: GraphQLCache(),
link: _httpLink,
);
return Gva._(client);
}
/// Return the balance from a given pubkey, or 0 if null.
Future<double> balance(String pubkey, {bool ud = false}) async {
double balance = 0;
final QueryOptions options = QueryOptions(
document: gql(getBalanceQuery),
variables: <String, dynamic>{
'pubkey': pubkey,
},
);
final QueryResult result = await _client.query(options);
if (result.hasException) {
print(result.exception.toString());
throw Exception('Unexpected error happened in graphql request');
} else if (result.data?['balance'] != null) {
balance = result.data!['balance']['amount'] / 100;
if (ud) {
double currentUd = result.data!['currentUd']['amount'] / 100;
balance = balance / currentUd;
}
}
return balance.toPrecision(2);
}
/// Return the username from a given pubkey.
Future<String> getUsername(String pubkey) async {
String username = '';
final QueryOptions options = QueryOptions(
document: gql(getIdQuery),
variables: <String, dynamic>{
'pubkey': pubkey,
},
);
final QueryResult result = await _client.query(options);
if (result.hasException) {
print(result.exception.toString());
throw Exception('Unexpected error happened in graphql request');
} else if (result.data?['idty']?['username'] != null) {
username = result.data!['idty']['username'];
}
return username;
}
/// Return the username from a given pubkey.