Correctly manages airplane mode changes: reconnects Tor and Relays

This commit is contained in:
Vitor Pamplona
2025-08-20 12:16:01 -04:00
parent 7339f0ea3b
commit 4065adac83
8 changed files with 74 additions and 19 deletions
@@ -133,6 +133,8 @@ class NostrClient(
relayPool.disconnect()
}
fun isActive() = isActive
@Synchronized
fun reconnect(onlyIfChanged: Boolean = false) {
if (onlyIfChanged) {
@@ -75,23 +75,27 @@ class RelayPool(
fun reconnectIfNeedsToORIfItIsTime() {
if (lastReconnectCall < TimeUtils.oneMinuteAgo()) {
relays.forEach { url, relay ->
if (relay.isConnected()) {
if (relay.needsToReconnect()) {
// network has changed, force reconnect
relay.disconnect()
relay.connect()
}
} else {
// relay is not connected. Connect if it is time
relay.connectAndSyncFiltersIfDisconnected()
}
}
reconnectIfNeedsTo()
lastReconnectCall = TimeUtils.now()
}
}
fun reconnectIfNeedsTo() {
relays.forEach { url, relay ->
if (relay.isConnected()) {
if (relay.needsToReconnect()) {
// network has changed, force reconnect
relay.disconnect()
relay.connect()
}
} else {
// relay is not connected. Connect if it is time
relay.connectAndSyncFiltersIfDisconnected()
}
}
}
fun connect() =
relays.forEach { url, relay ->
relay.connect()