Skip to content
Snippets Groups Projects
Commit 244aaf2d authored by vjrj's avatar vjrj
Browse files

Improving node manager

parent d61ffe6a
No related branches found
No related tags found
No related merge requests found
...@@ -40,5 +40,6 @@ ...@@ -40,5 +40,6 @@
"card-validity": "Validity", "card-validity": "Validity",
"card-validity-tooltip": "Please note that this wallet is only accessible while using this specific browser and device. If you delete or reset the browser, you will lose access to this wallet and the funds stored in it.", "card-validity-tooltip": "Please note that this wallet is only accessible while using this specific browser and device. If you delete or reset the browser, you will lose access to this wallet and the funds stored in it.",
"demo-title": "This is a demo", "demo-title": "This is a demo",
"demo-desc": "Please refrain from using this with real transactions for now." "demo-desc": "Please refrain from using this with real transactions for now.",
"connected-to": "We are connected to node:"
} }
...@@ -40,5 +40,6 @@ ...@@ -40,5 +40,6 @@
"card-validity": "Validez", "card-validity": "Validez",
"card-validity-tooltip": "Tenga en cuenta que este monedero solo es accesible mientras utiliza este navegador y este dispositivo específico. Si borra o restablece el navegador, perderá el acceso a este monedero y los fondos almacenados en el.", "card-validity-tooltip": "Tenga en cuenta que este monedero solo es accesible mientras utiliza este navegador y este dispositivo específico. Si borra o restablece el navegador, perderá el acceso a este monedero y los fondos almacenados en el.",
"demo-title": "Esto es una demostración", "demo-title": "Esto es una demostración",
"demo-desc": "Por favor, no utilice esto aún para transacciones reales." "demo-desc": "Por favor, no utilice esto aún para transacciones reales.",
"connected-to": "Estamos conectados al nodo:"
} }
...@@ -40,5 +40,6 @@ ...@@ -40,5 +40,6 @@
"card-validity": "Validité", "card-validity": "Validité",
"card-validity-tooltip": "Veuillez noter que ce portefeuille n'est accessible que lors de l'utilisation de ce navigateur et de cet appareil spécifiques. Si vous supprimez ou réinitialisez le navigateur, vous perdrez l'accès à ce portefeuille et aux fonds qu'il contient.", "card-validity-tooltip": "Veuillez noter que ce portefeuille n'est accessible que lors de l'utilisation de ce navigateur et de cet appareil spécifiques. Si vous supprimez ou réinitialisez le navigateur, vous perdrez l'accès à ce portefeuille et aux fonds qu'il contient.",
"demo-title": "Ceci est une démonstration", "demo-title": "Ceci est une démonstration",
"demo-desc": "Veuillez vous abstenir d'utiliser ceci avec de vraies transactions pour le moment." "demo-desc": "Veuillez vous abstenir d'utiliser ceci avec de vraies transactions pour le moment.",
"connected-to": "Nous sommes connectés au nœud:"
} }
...@@ -32,8 +32,8 @@ class DuniterNodeManager { ...@@ -32,8 +32,8 @@ class DuniterNodeManager {
final int _retryCount = 3; final int _retryCount = 3;
Map<String, int> _nodeErrors = <String, int>{}; Map<String, int> _nodeErrors = <String, int>{};
Timer? _resetErrorsTimer; Timer? _resetErrorsTimer;
String? _fastestNode; String _fastestNode = 'https://g1.duniter.org';
late Duration? _fastestLatency; late Duration _fastestLatency = const Duration(minutes: 1);
Future<dynamic> makeRequest(String endpoint) async { Future<dynamic> makeRequest(String endpoint) async {
Response response; Response response;
......
...@@ -75,6 +75,7 @@ void main() async { ...@@ -75,6 +75,7 @@ void main() async {
// bandwidth // bandwidth
DuniterNodeManager().loadNodes(); DuniterNodeManager().loadNodes();
}); });
DuniterNodeManager().init();
runApp( runApp(
EasyLocalization( EasyLocalization(
......
...@@ -20,7 +20,8 @@ class FifthScreen extends StatelessWidget { ...@@ -20,7 +20,8 @@ class FifthScreen extends StatelessWidget {
physics: const BouncingScrollPhysics(), physics: const BouncingScrollPhysics(),
children: <Widget>[ children: <Widget>[
const Header(text: 'bottom_nav_fifth'), const Header(text: 'bottom_nav_fifth'),
InfoCard(title: duniterNet, icon: Icons.hub, translate: false), InfoCard(
title: 'connected-to', subtitle: duniterNet, icon: Icons.hub),
LinkCard( LinkCard(
title: 'code_card_title', title: 'code_card_title',
icon: Icons.code_rounded, icon: Icons.code_rounded,
......
...@@ -3,7 +3,6 @@ import 'package:easy_localization/easy_localization.dart'; ...@@ -3,7 +3,6 @@ import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import '../../g1/duniter_node_manager.dart';
import '../widgets/first_screen/credit_card.dart'; import '../widgets/first_screen/credit_card.dart';
import '../widgets/first_screen/pay_contact_search_bar.dart'; import '../widgets/first_screen/pay_contact_search_bar.dart';
import '../widgets/header.dart'; import '../widgets/header.dart';
...@@ -22,7 +21,6 @@ class _FirstScreenState extends State<FirstScreen> { ...@@ -22,7 +21,6 @@ class _FirstScreenState extends State<FirstScreen> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
WidgetsBinding.instance.addPostFrameCallback((_) async { WidgetsBinding.instance.addPostFrameCallback((_) async {
DuniterNodeManager().init();
if (_showFlushbar && kReleaseMode) { if (_showFlushbar && kReleaseMode) {
Flushbar<void>( Flushbar<void>(
message: tr('demo-title'), message: tr('demo-title'),
......
...@@ -6,10 +6,12 @@ class InfoCard extends StatelessWidget { ...@@ -6,10 +6,12 @@ class InfoCard extends StatelessWidget {
const InfoCard( const InfoCard(
{super.key, {super.key,
required this.title, required this.title,
this.subtitle = '',
required this.icon, required this.icon,
this.translate = true}); this.translate = true});
final String title; final String title;
final String subtitle;
final IconData icon; final IconData icon;
final bool translate; final bool translate;
...@@ -32,6 +34,7 @@ class InfoCard extends StatelessWidget { ...@@ -32,6 +34,7 @@ class InfoCard extends StatelessWidget {
child: ListTile( child: ListTile(
shape: const RoundedRectangleBorder( shape: const RoundedRectangleBorder(
borderRadius: BorderRadius.all(Radius.circular(12))), borderRadius: BorderRadius.all(Radius.circular(12))),
subtitle: subtitle.isNotEmpty ? Text(subtitle) : null,
title: Row( title: Row(
children: <Widget>[ children: <Widget>[
Icon(icon, color: Theme.of(context).colorScheme.primary), Icon(icon, color: Theme.of(context).colorScheme.primary),
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment