cake_wallet/lib/entities/node_list.dart

144 lines
4.1 KiB
Dart
Raw Normal View History

import 'package:cw_core/pow_node.dart';
2020-01-04 19:31:52 +00:00
import 'package:flutter/services.dart';
import 'package:hive/hive.dart';
import "package:yaml/yaml.dart";
2021-12-24 12:37:24 +00:00
import 'package:cw_core/node.dart';
import 'package:cw_core/wallet_type.dart';
2020-01-04 19:31:52 +00:00
Future<List<Node>> loadDefaultNodes() async {
2020-01-08 12:26:34 +00:00
final nodesRaw = await rootBundle.loadString('assets/node_list.yml');
2022-10-12 17:09:57 +00:00
final loadedNodes = loadYaml(nodesRaw) as YamlList;
final nodes = <Node>[];
2022-10-12 17:09:57 +00:00
for (final raw in loadedNodes) {
if (raw is Map) {
2022-10-19 22:23:53 +00:00
final node = Node.fromMap(Map<String, Object>.from(raw));
2022-10-12 17:09:57 +00:00
node.type = WalletType.monero;
nodes.add(node);
}
2022-10-12 17:09:57 +00:00
}
2022-10-12 17:09:57 +00:00
return nodes;
2020-01-04 19:31:52 +00:00
}
Future<List<Node>> loadBitcoinElectrumServerList() async {
2023-07-27 14:30:07 +00:00
final serverListRaw = await rootBundle.loadString('assets/bitcoin_electrum_server_list.yml');
2022-10-12 17:09:57 +00:00
final loadedServerList = loadYaml(serverListRaw) as YamlList;
final serverList = <Node>[];
for (final raw in loadedServerList) {
2023-07-27 14:30:07 +00:00
if (raw is Map) {
2022-10-19 22:23:53 +00:00
final node = Node.fromMap(Map<String, Object>.from(raw));
2022-10-12 17:09:57 +00:00
node.type = WalletType.bitcoin;
serverList.add(node);
2020-07-06 20:09:03 +00:00
}
2022-10-12 17:09:57 +00:00
}
2020-07-06 20:09:03 +00:00
2022-10-12 17:09:57 +00:00
return serverList;
2020-07-06 20:09:03 +00:00
}
Future<List<Node>> loadLitecoinElectrumServerList() async {
2023-07-27 14:30:07 +00:00
final serverListRaw = await rootBundle.loadString('assets/litecoin_electrum_server_list.yml');
2022-10-12 17:09:57 +00:00
final loadedServerList = loadYaml(serverListRaw) as YamlList;
final serverList = <Node>[];
2022-10-12 17:09:57 +00:00
for (final raw in loadedServerList) {
if (raw is Map) {
2022-10-19 22:23:53 +00:00
final node = Node.fromMap(Map<String, Object>.from(raw));
2022-10-12 17:09:57 +00:00
node.type = WalletType.litecoin;
serverList.add(node);
}
2022-10-12 17:09:57 +00:00
}
2022-10-12 17:09:57 +00:00
return serverList;
}
2022-03-30 15:57:04 +00:00
Future<List<Node>> loadDefaultHavenNodes() async {
final nodesRaw = await rootBundle.loadString('assets/haven_node_list.yml');
2022-10-12 17:09:57 +00:00
final loadedNodes = loadYaml(nodesRaw) as YamlList;
final nodes = <Node>[];
2022-03-30 15:57:04 +00:00
2022-10-12 17:09:57 +00:00
for (final raw in loadedNodes) {
2022-03-30 15:57:04 +00:00
if (raw is Map) {
2022-10-19 22:23:53 +00:00
final node = Node.fromMap(Map<String, Object>.from(raw));
2022-10-12 17:09:57 +00:00
node.type = WalletType.haven;
nodes.add(node);
2022-03-30 15:57:04 +00:00
}
2022-10-12 17:09:57 +00:00
}
2023-07-27 14:30:07 +00:00
2022-10-12 17:09:57 +00:00
return nodes;
2022-03-30 15:57:04 +00:00
}
2023-01-04 14:51:23 +00:00
Future<List<Node>> loadDefaultEthereumNodes() async {
final nodesRaw = await rootBundle.loadString('assets/ethereum_server_list.yml');
final loadedNodes = loadYaml(nodesRaw) as YamlList;
final nodes = <Node>[];
for (final raw in loadedNodes) {
if (raw is Map) {
final node = Node.fromMap(Map<String, Object>.from(raw));
node.type = WalletType.ethereum;
nodes.add(node);
}
}
return nodes;
}
2023-07-26 17:15:22 +00:00
Future<List<Node>> loadDefaultNanoNodes() async {
final nodesRaw = await rootBundle.loadString('assets/nano_node_list.yml');
final loadedNodes = loadYaml(nodesRaw) as YamlList;
final nodes = <Node>[];
for (final raw in loadedNodes) {
if (raw is Map) {
final node = Node.fromMap(Map<String, Object>.from(raw));
2023-07-27 14:30:07 +00:00
node.type = WalletType.nano;
2023-07-26 17:15:22 +00:00
nodes.add(node);
}
}
return nodes;
}
Future<List<PowNode>> loadDefaultNanoPowNodes() async {
2023-08-16 19:22:05 +00:00
final powNodesRaw = await rootBundle.loadString('assets/nano_pow_node_list.yml');
final loadedPowNodes = loadYaml(powNodesRaw) as YamlList;
final nodes = <PowNode>[];
2023-08-09 13:37:38 +00:00
2023-08-16 19:22:05 +00:00
for (final raw in loadedPowNodes) {
2023-08-09 13:37:38 +00:00
if (raw is Map) {
final node = PowNode.fromMap(Map<String, Object>.from(raw));
2023-08-09 13:37:38 +00:00
node.type = WalletType.nano;
nodes.add(node);
}
}
return nodes;
}
2020-01-04 19:31:52 +00:00
Future resetToDefault(Box<Node> nodeSource) async {
2020-07-06 20:09:03 +00:00
final moneroNodes = await loadDefaultNodes();
final bitcoinElectrumServerList = await loadBitcoinElectrumServerList();
final litecoinElectrumServerList = await loadLitecoinElectrumServerList();
2022-03-30 15:57:04 +00:00
final havenNodes = await loadDefaultHavenNodes();
2023-07-27 14:30:07 +00:00
final ethereumNodes = await loadDefaultEthereumNodes();
2023-07-26 17:15:22 +00:00
final nanoNodes = await loadDefaultNanoNodes();
2023-08-16 17:01:01 +00:00
2023-07-27 14:30:07 +00:00
final nodes = moneroNodes +
2022-03-30 15:57:04 +00:00
bitcoinElectrumServerList +
litecoinElectrumServerList +
2023-07-26 17:15:22 +00:00
havenNodes +
2023-07-27 14:30:07 +00:00
ethereumNodes +
2023-08-16 19:22:05 +00:00
nanoNodes;
2020-01-04 19:31:52 +00:00
2020-01-08 12:26:34 +00:00
await nodeSource.clear();
await nodeSource.addAll(nodes);
2020-01-08 12:26:34 +00:00
}
Future resetPowToDefault(Box<PowNode> powNodeSource) async {
final nanoPowNodes = await loadDefaultNanoPowNodes();
final nodes = nanoPowNodes;
await powNodeSource.clear();
await powNodeSource.addAll(nodes);
}