mirror of
https://github.com/Such-Software/hash-wallet.git
synced 2026-10-17 05:41:29 +02:00
* feat: initialize cw_arbitrum package with essential files - Implement ArbitrumClient for transaction handling - Add ArbitrumWallet and related classes for wallet management - Establish transaction history and info classes for Arbitrum transactions - Add ArbitrumWalletService for wallet operations and management * feat: Add arbitrum related secrets to workflow * feat: Add nodes for arbitrum * feat: Add Arbitrum support to cryptocurrency handling * refactor: Update Arbitrum currency references from 'ARB' to 'ETH' * feat: Add Arbitrum support to wallet type and transaction handling * feat: Add Arbitrum URL schemes to Android and iOS configurations * feat: Add Arbitrum SVG icons and a WebP image * feat: Setup Arbitrum proxy * fix: Add localization * feat: Integrate Arbitrum support across various configurations and files - Updated cakewallet.bat to include Arbitrum in app configuration. - Added Arbitrum node list to pubspec_base.yaml. - Modified Android, iOS, Linux, and macOS app configuration scripts to support Arbitrum. - Introduced Arbitrum output path and generation logic in configure.dart. - Enhanced wallet type and pubspec generation to include Arbitrum. - Added Arbitrum-related secrets in secret_key.dart. * feat: Enhance Arbitrum integration with new URI class and updates across various components - Introduced ArbitrumURI class for handling Arbitrum payment URIs. - Updated seed validator, wallet creation service, and other components to support Arbitrum. - Added Arbitrum node handling in default settings migration and node list management. - Enhanced preferences and settings store to include Arbitrum-specific configurations. - Updated QR utility and token utilities to accommodate Arbitrum functionalities. * feat: Add Arbitrum support to various buy providers - Updated DFXBuyProvider, KryptonimBuyProvider, OnRamperBuyProvider, and RobinhoodBuyProvider to include Arbitrum wallet type and blockchain references. - Enhanced integration for Arbitrum across multiple components to ensure consistent support. * feat: Implement Arbitrum support in wallet selection and settings - Added Arbitrum wallet type handling in common test flows and wallet services. - Integrated Arbitrum icons in desktop wallet selection and menu widgets. - Updated privacy settings to include ArbiScan options. - Enhanced key service to support Arbitrum private and public key retrieval. * feat: Expand Arbitrum support across various view models and components - Integrated Arbitrum wallet type handling in advanced privacy settings, transaction details, and wallet management. - Added Arbitrum-specific methods for transaction and wallet creation, restoration, and fee management. - Updated dashboard and home settings to accommodate Arbitrum functionalities, including token management and transaction display. - Enhanced exchange and send view models to support Arbitrum transactions and currency handling. - Included Arbitrum in wallet address list and privacy settings for improved user experience. * refactor: Simplify token initialization in Arbitrum wallet service - Removed the migration flag from the addInitialTokens method in ArbitrumWalletService. - Updated addInitialTokens method in ArbitrumWallet to handle existing tokens more efficiently. - Enhanced initial token retrieval logic in DefaultArbitrumErc20Tokens to prioritize iconPath assignment. - Improved token update logic in BaseWallet for consistency across wallet services. * chore: Update Dart SDK constraints in pubspec.yaml * fix: Update file paths for arbitrum assets * fix: Correct box name formatting in Arbitrum wallet initialization * Update .github/workflows/pr_test_build_android.yml [skip ci * Update .github/workflows/pr_test_build_android.yml * fix: Add missing evm params * fix: Remove duplicate method declaration * refactor: simplify isSwapsXyzSendingEVMTokenSwap check * fix: Update arbitrum configs with sql storage update * feat: Add estimated fee retrieval for Arbitrum and revamp priority fee handling for EVMChainWallet * refactor: Update transaction priority handling and estimated fee calculations across EVMChain chains, also remove priority fee levels for Arbitrum --------- Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
138 lines
4.2 KiB
Dart
138 lines
4.2 KiB
Dart
import 'package:flutter/services.dart';
|
|
import 'package:hive/hive.dart';
|
|
import "package:yaml/yaml.dart";
|
|
import 'package:cw_core/node.dart';
|
|
import 'package:cw_core/wallet_type.dart';
|
|
|
|
Future<List<Node>> loadDefaultNodes(WalletType type) async {
|
|
String path;
|
|
switch (type) {
|
|
case WalletType.monero:
|
|
path = 'assets/node_list.yml';
|
|
break;
|
|
case WalletType.bitcoin:
|
|
path = 'assets/bitcoin_electrum_server_list.yml';
|
|
break;
|
|
case WalletType.litecoin:
|
|
path = 'assets/litecoin_electrum_server_list.yml';
|
|
break;
|
|
case WalletType.haven:
|
|
path = 'assets/haven_node_list.yml';
|
|
break;
|
|
case WalletType.ethereum:
|
|
path = 'assets/ethereum_server_list.yml';
|
|
break;
|
|
case WalletType.nano:
|
|
path = 'assets/nano_node_list.yml';
|
|
break;
|
|
case WalletType.bitcoinCash:
|
|
path = 'assets/bitcoin_cash_electrum_server_list.yml';
|
|
break;
|
|
case WalletType.polygon:
|
|
path = 'assets/polygon_node_list.yml';
|
|
break;
|
|
case WalletType.solana:
|
|
path = 'assets/solana_node_list.yml';
|
|
break;
|
|
case WalletType.tron:
|
|
path = 'assets/tron_node_list.yml';
|
|
break;
|
|
case WalletType.wownero:
|
|
path = 'assets/wownero_node_list.yml';
|
|
break;
|
|
case WalletType.zano:
|
|
path = 'assets/zano_node_list.yml';
|
|
break;
|
|
case WalletType.decred:
|
|
path = 'assets/decred_node_list.yml';
|
|
break;
|
|
case WalletType.dogecoin:
|
|
path = 'assets/dogecoin_electrum_server_list.yml';
|
|
break;
|
|
case WalletType.base:
|
|
path = 'assets/base_node_list.yml';
|
|
break;
|
|
case WalletType.arbitrum:
|
|
path = 'assets/arbitrum_node_list.yml';
|
|
break;
|
|
case WalletType.banano:
|
|
case WalletType.none:
|
|
path = '';
|
|
break;
|
|
}
|
|
|
|
final nodesRaw = await rootBundle.loadString(path);
|
|
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 = type;
|
|
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;
|
|
}
|
|
|
|
Future<void> resetToDefault(Box<Node> nodeSource) async {
|
|
final moneroNodes = await loadDefaultNodes(WalletType.monero);
|
|
final bitcoinElectrumServerList = await loadDefaultNodes(WalletType.bitcoin);
|
|
final litecoinElectrumServerList = await loadDefaultNodes(WalletType.litecoin);
|
|
final bitcoinCashElectrumServerList = await loadDefaultNodes(WalletType.bitcoinCash);
|
|
final havenNodes = await loadDefaultNodes(WalletType.haven);
|
|
final ethereumNodes = await loadDefaultNodes(WalletType.ethereum);
|
|
final nanoNodes = await loadDefaultNodes(WalletType.nano);
|
|
final polygonNodes = await loadDefaultNodes(WalletType.polygon);
|
|
final solanaNodes = await loadDefaultNodes(WalletType.solana);
|
|
final tronNodes = await loadDefaultNodes(WalletType.tron);
|
|
final decredNodes = await loadDefaultNodes(WalletType.decred);
|
|
final zanoNodes = await loadDefaultNodes(WalletType.zano);
|
|
final dogecoinElectrumServerList = await loadDefaultNodes(WalletType.dogecoin);
|
|
final baseNodes = await loadDefaultNodes(WalletType.base);
|
|
final arbitrumNodes = await loadDefaultNodes(WalletType.arbitrum);
|
|
|
|
final nodes = moneroNodes +
|
|
bitcoinElectrumServerList +
|
|
litecoinElectrumServerList +
|
|
havenNodes +
|
|
ethereumNodes +
|
|
bitcoinCashElectrumServerList +
|
|
nanoNodes +
|
|
polygonNodes +
|
|
solanaNodes +
|
|
tronNodes +
|
|
zanoNodes +
|
|
decredNodes +
|
|
dogecoinElectrumServerList +
|
|
baseNodes +
|
|
arbitrumNodes;
|
|
|
|
await nodeSource.clear();
|
|
await nodeSource.addAll(nodes);
|
|
}
|
|
|
|
Future<void> resetPowToDefault(Box<Node> powNodeSource) async {
|
|
final nanoPowNodes = await loadDefaultNanoPowNodes();
|
|
final nodes = nanoPowNodes;
|
|
await powNodeSource.clear();
|
|
await powNodeSource.addAll(nodes);
|
|
}
|