Skip to content
Snippets Groups Projects
Select Git revision
1 result Searching

main.rs

Blame
  • home.dart 9.86 KiB
    import 'dart:collection';
    import 'dart:convert';
    import 'dart:io';
    import 'dart:math';
    import 'package:audioplayers/audio_cache.dart';
    import 'package:audioplayers/audioplayers.dart';
    import 'package:flutter/foundation.dart';
    import 'package:flutter/material.dart';
    import 'package:flutter/services.dart';
    import 'dart:async';
    import 'package:gecko/globals.dart';
    import 'package:gecko/screens/history.dart';
    import 'package:gecko/screens/myWallets/walletsHome.dart';
    import 'package:graphql_flutter/graphql_flutter.dart';
    import 'package:package_info/package_info.dart';
    import 'package:path_provider/path_provider.dart';
    
    class HomeProvider with ChangeNotifier {
      int _currentIndex = 0;
      bool isSearching;
      Icon searchIcon = Icon(Icons.search);
      final TextEditingController searchQuery = new TextEditingController();
      Widget appBarTitle = Text('Ğecko', style: TextStyle(color: Colors.grey[850]));
      Widget appBarExplorer =
          Text('Explorateur', style: TextStyle(color: Colors.grey[850]));
    
      List currentTab = [HistoryScreen(), WalletsHome()];
      AudioCache player = AudioCache(prefix: 'sounds/');
    
      get currentIndex => _currentIndex;
    
      set currentIndex(int index) {
        _currentIndex = index;
        notifyListeners();
      }
    
      Future<String> getAppVersion() async {
        String version;
        String buildNumber;
        if (Platform.isLinux) {
          version = "undefined";
          buildNumber = "undefined";
        } else {
          PackageInfo packageInfo = await PackageInfo.fromPlatform();
          version = packageInfo.version;
          buildNumber = packageInfo.buildNumber;
        }
    
        notifyListeners();
        return version + '+' + buildNumber;
      }
    
      Future<List<String>> scanNetwork() async {
        // TODO: return all known endpoints from current window
        // - Request all bootstrap endpoints to get theres current bloc number and hash (blockstamps), and theres known endpoinds
        // - Store them in an ordered Map (SplayTreeMap<Blockstamp, HashSet<String>>) (the HashSet is a endpoint)
        // - Request 5 randoms endpoints known by the last slave, only theses we don't even know
        // - Do it 3 times
        // - We iterate the Map to determinat the consensus with for loop, intinital consensus variable to null
        // - if consensus == null -> if blockstamp > (1/3 known endpoints) -> consensus = blockstamp
        // - elif blockstamp.number == consensus.number && blockstamp.endpointNumbers > consensus.endpointNumbers -> consensus = blockstamp
        // - else break;
        // - return map.get(key: consensus).toList
    
        var blockstampMap = SplayTreeMap<Blockstamp, List<String>>();
    
        List _endpointsToScan = [];
        _endpointsToScan = await rootBundle
            .loadString('config/gva_endpoints.json')
            .then((jsonStr) => jsonDecode(jsonStr));