mirror of
https://github.com/pezkuwichain/pezkuwi-wallet-android.git
synced 2026-07-22 18:25:50 +00:00
fix: Networks screen never showed live health/feedback for Tron's toggle
nodesHealthState() only ever looked at wssNodes(), so an HTTPS-only chain (Tron - no wss endpoint at all) always got an empty node list here: the enable/disable switch itself worked correctly (it reads/writes chain.isEnabled directly, unrelated to this list), but with nothing ever rendering underneath it, the screen looked frozen/unresponsive - this is almost certainly why a single real toggle needed several taps to land correctly, since there was no visible confirmation whichever tap actually took effect. Falls back to httpNodes() when a chain has no wss nodes, and adds a real TronNodeHealthStateTester (GET /wallet/getchainparameters, needs no address) instead of naively reusing EthereumNodeHealthStateTester's eth_getBalance call, which TronGrid doesn't speak and would have always reported the node as down regardless of its actual health.
This commit is contained in:
+8
-1
@@ -9,6 +9,7 @@ import io.novafoundation.nova.runtime.ext.isCustomNetwork
|
||||
import io.novafoundation.nova.runtime.ext.isDisabled
|
||||
import io.novafoundation.nova.runtime.ext.isEnabled
|
||||
import io.novafoundation.nova.runtime.ext.selectedUnformattedWssNodeUrlOrNull
|
||||
import io.novafoundation.nova.runtime.ext.httpNodes
|
||||
import io.novafoundation.nova.runtime.ext.wssNodes
|
||||
import io.novafoundation.nova.runtime.multiNetwork.ChainRegistry
|
||||
import io.novafoundation.nova.runtime.multiNetwork.chain.model.Chain
|
||||
@@ -132,7 +133,13 @@ class RealNetworkManagementChainInteractor(
|
||||
}
|
||||
|
||||
private fun nodesHealthState(chain: Chain, coroutineScope: CoroutineScope): Flow<List<NodeHealthState>> {
|
||||
return chain.nodes.wssNodes().map {
|
||||
// wssNodes() alone leaves an HTTPS-only chain (Tron today - no wss endpoint at all) with an empty list
|
||||
// here, which silently renders as "nothing to show" rather than a real health state - fall back to the
|
||||
// http nodes only when there are no wss ones, since a chain that genuinely has wss nodes should still
|
||||
// prefer testing those.
|
||||
val nodesToCheck = chain.nodes.wssNodes().ifEmpty { chain.nodes.httpNodes() }
|
||||
|
||||
return nodesToCheck.map {
|
||||
nodeHealthState(chain, it, coroutineScope)
|
||||
}.combine()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user