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>[];
|
2020-01-08 16:38:38 +00:00
|
|
|
|
2022-10-12 17:09:57 +00:00
|
|
|
for (final raw in loadedNodes) {
|
2020-01-08 16:38:38 +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.monero;
|
|
|
|
nodes.add(node);
|
2020-01-08 16:38:38 +00:00
|
|
|
}
|
2022-10-12 17:09:57 +00:00
|
|
|
}
|
2020-01-08 16:38:38 +00:00
|
|
|
|
2022-10-12 17:09:57 +00:00
|
|
|
return nodes;
|
2020-01-04 19:31:52 +00:00
|
|
|
}
|
|
|
|
|
2021-05-07 07:36:38 +00:00
|
|
|
Future<List<Node>> loadBitcoinElectrumServerList() async {
|
2020-07-06 20:09:03 +00:00
|
|
|
final serverListRaw =
|
2021-05-07 07:36:38 +00:00
|
|
|
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) {
|
|
|
|
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
|
|
|
}
|
|
|
|
|
2021-05-07 07:36:38 +00:00
|
|
|
Future<List<Node>> loadLitecoinElectrumServerList() async {
|
|
|
|
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>[];
|
2021-05-07 07:36:38 +00:00
|
|
|
|
2022-10-12 17:09:57 +00:00
|
|
|
for (final raw in loadedServerList) {
|
2021-05-07 07:36:38 +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.litecoin;
|
|
|
|
serverList.add(node);
|
2021-05-07 07:36:38 +00:00
|
|
|
}
|
2022-10-12 17:09:57 +00:00
|
|
|
}
|
2021-05-07 07:36:38 +00:00
|
|
|
|
2022-10-12 17:09:57 +00:00
|
|
|
return serverList;
|
2021-05-07 07:36:38 +00:00
|
|
|
}
|
|
|
|
|
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
|
|
|
}
|
|
|
|
|
|
|
|
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;
|
|
|
|
}
|
|
|
|
|
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();
|
2021-05-07 07:36:38 +00:00
|
|
|
final bitcoinElectrumServerList = await loadBitcoinElectrumServerList();
|
|
|
|
final litecoinElectrumServerList = await loadLitecoinElectrumServerList();
|
2022-03-30 15:57:04 +00:00
|
|
|
final havenNodes = await loadDefaultHavenNodes();
|
2021-05-07 07:36:38 +00:00
|
|
|
final nodes =
|
2022-03-30 15:57:04 +00:00
|
|
|
moneroNodes +
|
|
|
|
bitcoinElectrumServerList +
|
|
|
|
litecoinElectrumServerList +
|
|
|
|
havenNodes;
|
2020-01-04 19:31:52 +00:00
|
|
|
|
2020-01-08 12:26:34 +00:00
|
|
|
await nodeSource.clear();
|
2020-12-15 16:29:10 +00:00
|
|
|
await nodeSource.addAll(nodes);
|
2020-01-08 12:26:34 +00:00
|
|
|
}
|