Select Git revision
Forked from
clients / Ğecko
761 commits behind, 4 commits ahead of the upstream repository.
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));