Skip to content
Snippets Groups Projects
Select Git revision
  • fc21f99b82fd0f4d3ee379b385ca503b14310fe1
  • dev default protected
  • release/1.9.1 protected
  • pini-1.8-docker
  • pini-sync-onlypeers
  • duniter-v2s-issue-123-industrialize-releases
  • feature/build-aarch64-nodejs16
  • release/1.8 protected
  • pini-docker
  • ci_tags
  • fix/1448/1.8/txs_not_stored
  • feature/node-20
  • fix/1441/node_summary_with_storage
  • fix/1442/improve_bma_tx_history
  • feature/wotwizard-1.8
  • release/1.9 protected
  • 1.7 protected
  • feature/docker-set-latest protected
  • feature/fast-docker-build-1.8.4
  • fast-docker-build protected
  • feature/dump-distance
  • v1.8.7 protected
  • v1.8.7-rc4 protected
  • v1.8.7-rc3 protected
  • v1.8.7-rc2 protected
  • v1.8.7-rc1 protected
  • v1.8.6 protected
  • v1.7.23 protected
  • v1.8.5 protected
  • v1.8.4 protected
  • v1.8.3 protected
  • v1.8.2 protected
  • v1.8.1 protected
  • v1.8.0 protected
  • v1.8.0-rc1 protected
  • v1.8.0-beta5 protected
  • v1.8.0-beta4 protected
  • v1.8.0-beta3 protected
  • v1.8.0-beta2 protected
  • v1.8.0-beta protected
  • v1.7.21 protected
41 results

duniter.sh

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.