diff --git a/lib/ui/widgets/fifth_screen/node_info.dart b/lib/ui/widgets/fifth_screen/node_info.dart new file mode 100644 index 0000000000000000000000000000000000000000..937b88bca95e44bd1cf75574a3290a6a692a21ee --- /dev/null +++ b/lib/ui/widgets/fifth_screen/node_info.dart @@ -0,0 +1,51 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../../data/models/node.dart'; +import '../../../data/models/node_list_cubit.dart'; +import '../../../data/models/node_list_state.dart'; +import '../../../data/models/node_manager.dart'; +import '../../../g1/api.dart'; +import '../../../main.dart'; +import '../fifth_screen/info_card.dart'; + +class NodeInfoCard extends StatelessWidget { + const NodeInfoCard({super.key, required this.type}); + + final NodeType type; + + @override + Widget build(BuildContext context) { + return BlocBuilder<NodeListCubit, NodeListState>( + builder: (BuildContext nodeContext, NodeListState state) { + final List<Node> nodes = + type == NodeType.duniter ? state.duniterNodes : state.cesiumPlusNodes; + return GestureDetector( + onTap: () => ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text(tr('long_press_to_refresh')), + ), + ), + onLongPress: () { + logger('On long press'); + if (type == NodeType.duniter) { + fetchDuniterNodes(force: true); + } else { + fetchCesiumPlusNodes(force: true); + } + }, + child: InfoCard( + title: tr('using_nodes', namedArgs: <String, String>{ + 'type': type.name, + 'nodes': nodes.length.toString() + }), + translate: false, + subtitle: nodes.isNotEmpty + ? tr('using_nodes_first', + namedArgs: <String, String>{'node': nodes.first.url}) + : '', + icon: Icons.hub)); + }); + } +}