CW-974: Add support for automatic node switching. (#2361)

* feat: Add support for automatic node switching.

This change:
- Adds isTrustedNodeForSwitching property to Node class.
- Adds UI Checkbox to mark a node as trusted for automatic switching in Node create or edit form.
- Implements checkNodeHealth method in wallet classes to verify node connectivity.
- Adds NodeSwitchingService for managing automatic node switching based on health checks.
- Adds setting option for user to enable/disable automated node switching

* fix(automatic-node-switch): Set node health check interval to 5 minutes in NodeSwitchingService

* refactor: Update handler method

* feat: Automatic Node Switching Improvements

This change:
- Moves enable automatic node switch to the Manage Nodes Page
- Adds check to verify node health before attempting to sync in EVM, Sol and Tron Wallets.
- Modifies trusted ndoes list for monero
- Adds trigger for Node Health Check when app resumes from background

* fix: Increase default request timeout for Tron and update health check interval for node switch

* feat: Enhance Node health check functionality.

This change adds additional checks for token balance in EVM, Solana and Tron Wallets in checkNodeHealth.

* fix: Update health check interval to 30 seconds in NodeSwitchingService

* Update bitcoin_electrum_server_list.yml

* fix: Electru wallet not connecting to new node after switching

* fix: Automated Node Switch not working on Decred Wallet

* fix: Add more nodes for AutoSwitching

This change:
- Enables more nodes across wallet types for auto switching
- Modifies CTA for checkbox
- Renames flags to fit

* fix: Add migration function for setting up default nodes for autoswitching

* fix: Review and testing fixes

* chore: Adjust balance and history fetch timer
This commit is contained in:
David Adegoke
2025-07-25 16:42:59 +03:00
committed by GitHub
parent 8f4eed4d9b
commit 4b2af63fa5
73 changed files with 639 additions and 68 deletions
+2 -1
View File
@@ -2,4 +2,5 @@
uri: kaliumapi.appditto.com
path: /api
useSSL: true
is_default: true
is_default: true
isEnabledForAutoSwitching: true
@@ -2,9 +2,11 @@
uri: bitcoincash.stackwallet.com:50002
is_default: true
useSSL: true
isEnabledForAutoSwitching: true
-
uri: bch.aftrek.org:50002
useSSL: true
isEnabledForAutoSwitching: true
-
uri: node.minisatoshi.cash:50002
useSSL: true
+6
View File
@@ -2,8 +2,14 @@
uri: btc-electrum.cakewallet.com:50002
useSSL: true
isDefault: true
isEnabledForAutoSwitching: true
-
uri: electrs.cakewallet.com:50001
-
uri: fulcrum.sethforprivacy.com:50002
useSSL: true
isEnabledForAutoSwitching: true
-
uri: electrum.cakewallet.com:50002
useSSL: true
isEnabledForAutoSwitching: true
+3 -1
View File
@@ -1,6 +1,8 @@
-
uri: default-spv-nodes
is_default: true
isEnabledForAutoSwitching: true
-
uri: dcrd.sethforprivacy.com:9108
useSSL: true
useSSL: true
isEnabledForAutoSwitching: true
+2
View File
@@ -2,6 +2,7 @@
uri: ethereum-rpc.publicnode.com
useSSL: true
isDefault: true
isEnabledForAutoSwitching: true
-
uri: eth.llamarpc.com
-
@@ -10,5 +11,6 @@
uri: eth-mainnet.public.blastapi.io
-
uri: eth.nownodes.io
isEnabledForAutoSwitching: true
-
uri: ethereum.publicnode.com
+2
View File
@@ -2,9 +2,11 @@
uri: ltc-electrum.cakewallet.com:50002
useSSL: true
isDefault: true
isEnabledForAutoSwitching: true
-
uri: litecoin.stackwallet.com:20063
useSSL: true
isEnabledForAutoSwitching: true
-
uri: electrum-ltc.bysh.me:50002
useSSL: true
+3
View File
@@ -1,14 +1,17 @@
-
uri: nano.nownodes.io
useSSL: true
isEnabledForAutoSwitching: true
-
uri: rpc.nano.to
is_default: true
useSSL: true
isEnabledForAutoSwitching: true
-
uri: node.nautilus.io
path: /api
useSSL: true
isEnabledForAutoSwitching: true
-
uri: app.natrium.io
path: /api
+3
View File
@@ -2,8 +2,11 @@
uri: rpc.nano.to
useSSL: true
is_default: true
isEnabledForAutoSwitching: true
-
uri: workers.perish.co
isEnabledForAutoSwitching: true
-
uri: worker.nanoriver.cc
useSSL: true
isEnabledForAutoSwitching: true
+3
View File
@@ -3,6 +3,7 @@
is_default: true
trusted: true
useSSL: true
isEnabledForAutoSwitching: true
-
uri: cakexmrl7bonq7ovjka5kuwuyd3f7qnkz6z6s6dmsy3uckwra7bvggyd.onion:18081
is_default: false
@@ -10,6 +11,8 @@
uri: node.sethforprivacy.com:443
useSSL: true
is_default: false
isEnabledForAutoSwitching: true
-
uri: nodes.hashvault.pro:18081
is_default: false
isEnabledForAutoSwitching: true
+3 -1
View File
@@ -4,7 +4,9 @@
uri: polygon-bor-rpc.publicnode.com
useSSL: true
isDefault: true
isEnabledForAutoSwitching: true
-
uri: polygon.llamarpc.com
-
uri: matic.nownodes.io
uri: matic.nownodes.io
isEnabledForAutoSwitching: true
+4 -1
View File
@@ -4,10 +4,13 @@
-
uri: api.mainnet-beta.solana.com:443
useSSL: true
isEnabledForAutoSwitching: true
-
uri: solana-rpc.publicnode.com:443
useSSL: true
isEnabledForAutoSwitching: true
-
uri: solana-mainnet.core.chainstack.com
useSSL: true
is_default: true
is_default: true
isEnabledForAutoSwitching: true
+3 -1
View File
@@ -6,6 +6,8 @@
uri: api.trongrid.io
is_default: true
useSSL: true
isEnabledForAutoSwitching: true
-
uri: trx.nownodes.io
useSSL: true
useSSL: true
isEnabledForAutoSwitching: true
+2
View File
@@ -2,10 +2,12 @@
uri: node3.monerodevs.org:34568
is_default: true
useSSL: false
isEnabledForAutoSwitching: true
-
uri: node2.monerodevs.org:34568
is_default: false
useSSL: false
isEnabledForAutoSwitching: true
-
uri: node.monerodevs.org:34568
is_default: false
+3 -1
View File
@@ -1,7 +1,9 @@
-
uri: 37.27.100.59:10500
useSSL: false
isEnabledForAutoSwitching: true
-
uri: zano.cakewallet.com:11211
is_default: true
useSSL: false
useSSL: false
isEnabledForAutoSwitching: true