Skip to content
Snippets Groups Projects
Select Git revision
  • 6495f4bcc0443a47323b3916dbb54562a2c4474f
  • master default protected
  • ed25519_hd_key-lib
  • 0.1.9
  • 0.1.8
  • 0.1.7
6 results

gva.dart

Blame
  • 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.