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 {
|
2023-10-05 01:09: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-10-05 01:09: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
|
|
|
}
|
|
|
|
|
2021-05-07 07:36:38 +00:00
|
|
|
Future<List<Node>> loadLitecoinElectrumServerList() async {
|
2023-10-05 01:09: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>[];
|
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
|
|
|
}
|
2023-10-05 01:09:07 +00:00
|
|
|
|
2022-10-12 17:09:57 +00:00
|
|
|
return nodes;
|
2022-03-30 15:57:04 +00:00
|
|
|
}
|
|
|
|
|
2023-08-04 17:01:49 +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-10-12 22:50:16 +00:00
|
|
|
Future<List<Node>> loadBitcoinCashElectrumServerList() async {
|
2023-12-13 14:03:07 +00:00
|
|
|
final serverListRaw = await rootBundle.loadString('assets/bitcoin_cash_electrum_server_list.yml');
|
2023-10-12 22:50:16 +00:00
|
|
|
final loadedServerList = loadYaml(serverListRaw) as YamlList;
|
|
|
|
final serverList = <Node>[];
|
|
|
|
|
|
|
|
for (final raw in loadedServerList) {
|
|
|
|
if (raw is Map) {
|
|
|
|
final node = Node.fromMap(Map<String, Object>.from(raw));
|
|
|
|
node.type = WalletType.bitcoinCash;
|
|
|
|
serverList.add(node);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return serverList;
|
|
|
|
}
|
|
|
|
|
2023-10-05 01:09:07 +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));
|
|
|
|
node.type = WalletType.nano;
|
|
|
|
nodes.add(node);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return nodes;
|
|
|
|
}
|
|
|
|
|
|
|
|
Future<List<Node>> loadDefaultNanoPowNodes() async {
|
|
|
|
final powNodesRaw = await rootBundle.loadString('assets/nano_pow_node_list.yml');
|
|
|
|
final loadedPowNodes = loadYaml(powNodesRaw) as YamlList;
|
|
|
|
final nodes = <Node>[];
|
|
|
|
|
|
|
|
for (final raw in loadedPowNodes) {
|
|
|
|
if (raw is Map) {
|
|
|
|
final node = Node.fromMap(Map<String, Object>.from(raw));
|
|
|
|
node.type = WalletType.nano;
|
|
|
|
nodes.add(node);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return nodes;
|
|
|
|
}
|
|
|
|
|
2023-12-02 02:26:43 +00:00
|
|
|
Future<List<Node>> loadDefaultPolygonNodes() async {
|
|
|
|
final nodesRaw = await rootBundle.loadString('assets/polygon_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-12-13 14:03:07 +00:00
|
|
|
|
2023-12-02 02:26:43 +00:00
|
|
|
node.type = WalletType.polygon;
|
|
|
|
nodes.add(node);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return nodes;
|
|
|
|
}
|
|
|
|
|
CW-555-Add-Solana-Wallet (#1272)
* chore: Create cw_solana package and clean up files
* feat: Add Solana Wallet - Create, Restore form seed, restore from Key, Restore from QR, Send, Receive, transaction history, spl tokens
* fix: Make transactions file specific to solana only for solana transactions
* chore: Revert inject app details script
* fix: Fix issue with node and switch current node to main beta instead of testnet
* fix: Fix merge conflicts and adjust migration version
* fix: Fetch spl token error
Signed-off-by: Blazebrain <davidadegoke16@gmail.com>
* fix: Diplay and activate spl tokens bug
* fix: Review and fixes
* fix: reverted formatting for cryptocurrency class
* fix: Review comments, split sending flow into signing and sending separately, fix issues
* fix: Revert throwing unimplenented error
* chore: Fix comment
* chore: Fix comment
* fix: Errors in flow
* Update provider_types.dart [skip ci]
* fix: Issues with solana wallet
* Update solana_wallet.dart [skip ci]
* fix: Review comments
* fix: Date time config
* fix: Revert bash script for app details
* fix: Error with balance, displaying fees, fixing sent or received identifier bug, displaying token symbol with token transaction item in transactions list
* fix: Issues with address validation when sending spl tokens and walletconnect initial setup
* fix: Issues with sending, fetching transactions history, almost wrapping up walletconnect
* fix: Adjust imports that would affect monerocom building successfully
* fix: Refine transaction direction and continue work on walletconnect
* feat: Display SPL token transfers in the transaction history and finally settle the transaction direction
* fix: Delay in transactions history dispaly, show native token transactions first, then process spl token transactions
* feat: Switch node and revert solana chain id to previous id
* fix: Remove print statement
* fix: Remove await for transactions, fetch all transaction histories instantly and adjust solana send success message
* chore: Code refactoring and streamlined wallet type check for solana send success message
* fix: Make timeout error for node silent and add spl token images
---------
Signed-off-by: Blazebrain <davidadegoke16@gmail.com>
Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
2024-02-23 13:39:19 +00:00
|
|
|
Future<List<Node>> loadDefaultSolanaNodes() async {
|
|
|
|
final nodesRaw = await rootBundle.loadString('assets/solana_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));
|
|
|
|
|
|
|
|
node.type = WalletType.solana;
|
|
|
|
nodes.add(node);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return nodes;
|
|
|
|
}
|
|
|
|
|
2023-10-12 22:50:16 +00:00
|
|
|
Future<void> 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();
|
2023-10-12 22:50:16 +00:00
|
|
|
final bitcoinCashElectrumServerList = await loadBitcoinCashElectrumServerList();
|
2022-03-30 15:57:04 +00:00
|
|
|
final havenNodes = await loadDefaultHavenNodes();
|
2023-10-05 01:09:07 +00:00
|
|
|
final ethereumNodes = await loadDefaultEthereumNodes();
|
|
|
|
final nanoNodes = await loadDefaultNanoNodes();
|
2023-12-02 02:26:43 +00:00
|
|
|
final polygonNodes = await loadDefaultPolygonNodes();
|
CW-555-Add-Solana-Wallet (#1272)
* chore: Create cw_solana package and clean up files
* feat: Add Solana Wallet - Create, Restore form seed, restore from Key, Restore from QR, Send, Receive, transaction history, spl tokens
* fix: Make transactions file specific to solana only for solana transactions
* chore: Revert inject app details script
* fix: Fix issue with node and switch current node to main beta instead of testnet
* fix: Fix merge conflicts and adjust migration version
* fix: Fetch spl token error
Signed-off-by: Blazebrain <davidadegoke16@gmail.com>
* fix: Diplay and activate spl tokens bug
* fix: Review and fixes
* fix: reverted formatting for cryptocurrency class
* fix: Review comments, split sending flow into signing and sending separately, fix issues
* fix: Revert throwing unimplenented error
* chore: Fix comment
* chore: Fix comment
* fix: Errors in flow
* Update provider_types.dart [skip ci]
* fix: Issues with solana wallet
* Update solana_wallet.dart [skip ci]
* fix: Review comments
* fix: Date time config
* fix: Revert bash script for app details
* fix: Error with balance, displaying fees, fixing sent or received identifier bug, displaying token symbol with token transaction item in transactions list
* fix: Issues with address validation when sending spl tokens and walletconnect initial setup
* fix: Issues with sending, fetching transactions history, almost wrapping up walletconnect
* fix: Adjust imports that would affect monerocom building successfully
* fix: Refine transaction direction and continue work on walletconnect
* feat: Display SPL token transfers in the transaction history and finally settle the transaction direction
* fix: Delay in transactions history dispaly, show native token transactions first, then process spl token transactions
* feat: Switch node and revert solana chain id to previous id
* fix: Remove print statement
* fix: Remove await for transactions, fetch all transaction histories instantly and adjust solana send success message
* chore: Code refactoring and streamlined wallet type check for solana send success message
* fix: Make timeout error for node silent and add spl token images
---------
Signed-off-by: Blazebrain <davidadegoke16@gmail.com>
Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
2024-02-23 13:39:19 +00:00
|
|
|
final solanaNodes = await loadDefaultSolanaNodes();
|
2023-12-02 02:26:43 +00:00
|
|
|
|
2023-10-05 01:09:07 +00:00
|
|
|
final nodes = moneroNodes +
|
2022-03-30 15:57:04 +00:00
|
|
|
bitcoinElectrumServerList +
|
|
|
|
litecoinElectrumServerList +
|
2023-10-05 01:09:07 +00:00
|
|
|
havenNodes +
|
|
|
|
ethereumNodes +
|
2023-10-12 22:50:16 +00:00
|
|
|
bitcoinCashElectrumServerList +
|
2023-12-02 02:26:43 +00:00
|
|
|
nanoNodes +
|
CW-555-Add-Solana-Wallet (#1272)
* chore: Create cw_solana package and clean up files
* feat: Add Solana Wallet - Create, Restore form seed, restore from Key, Restore from QR, Send, Receive, transaction history, spl tokens
* fix: Make transactions file specific to solana only for solana transactions
* chore: Revert inject app details script
* fix: Fix issue with node and switch current node to main beta instead of testnet
* fix: Fix merge conflicts and adjust migration version
* fix: Fetch spl token error
Signed-off-by: Blazebrain <davidadegoke16@gmail.com>
* fix: Diplay and activate spl tokens bug
* fix: Review and fixes
* fix: reverted formatting for cryptocurrency class
* fix: Review comments, split sending flow into signing and sending separately, fix issues
* fix: Revert throwing unimplenented error
* chore: Fix comment
* chore: Fix comment
* fix: Errors in flow
* Update provider_types.dart [skip ci]
* fix: Issues with solana wallet
* Update solana_wallet.dart [skip ci]
* fix: Review comments
* fix: Date time config
* fix: Revert bash script for app details
* fix: Error with balance, displaying fees, fixing sent or received identifier bug, displaying token symbol with token transaction item in transactions list
* fix: Issues with address validation when sending spl tokens and walletconnect initial setup
* fix: Issues with sending, fetching transactions history, almost wrapping up walletconnect
* fix: Adjust imports that would affect monerocom building successfully
* fix: Refine transaction direction and continue work on walletconnect
* feat: Display SPL token transfers in the transaction history and finally settle the transaction direction
* fix: Delay in transactions history dispaly, show native token transactions first, then process spl token transactions
* feat: Switch node and revert solana chain id to previous id
* fix: Remove print statement
* fix: Remove await for transactions, fetch all transaction histories instantly and adjust solana send success message
* chore: Code refactoring and streamlined wallet type check for solana send success message
* fix: Make timeout error for node silent and add spl token images
---------
Signed-off-by: Blazebrain <davidadegoke16@gmail.com>
Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
2024-02-23 13:39:19 +00:00
|
|
|
polygonNodes +
|
|
|
|
solanaNodes;
|
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
|
|
|
}
|
2023-10-05 01:09:07 +00:00
|
|
|
|
2023-10-12 22:50:16 +00:00
|
|
|
Future<void> resetPowToDefault(Box<Node> powNodeSource) async {
|
2023-10-05 01:09:07 +00:00
|
|
|
final nanoPowNodes = await loadDefaultNanoPowNodes();
|
|
|
|
final nodes = nanoPowNodes;
|
|
|
|
await powNodeSource.clear();
|
|
|
|
await powNodeSource.addAll(nodes);
|
2023-12-13 14:03:07 +00:00
|
|
|
}
|