From a0a6ced14813ae4e06710d557ead03e7c74311ad Mon Sep 17 00:00:00 2001 From: Zoltan Papp Date: Fri, 4 Aug 2023 14:14:08 +0200 Subject: [PATCH] After add listener automatically trigger peer list change event (#1044) In case of alway-on start the peer list was invalid on Android UI. --- client/internal/peer/notifier.go | 3 +++ client/internal/peer/status.go | 6 +++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/client/internal/peer/notifier.go b/client/internal/peer/notifier.go index 527212198..eb15bdeeb 100644 --- a/client/internal/peer/notifier.go +++ b/client/internal/peer/notifier.go @@ -17,6 +17,7 @@ type notifier struct { listener Listener currentClientState bool lastNotification int + lastNumberOfPeers int } func newNotifier() *notifier { @@ -29,6 +30,7 @@ func (n *notifier) setListener(listener Listener) { n.serverStateLock.Lock() n.notifyListener(listener, n.lastNotification) + listener.OnPeersListChanged(n.lastNumberOfPeers) n.serverStateLock.Unlock() n.listener = listener @@ -124,6 +126,7 @@ func (n *notifier) calculateState(managementConn, signalConn bool) int { } func (n *notifier) peerListChanged(numOfPeers int) { + n.lastNumberOfPeers = numOfPeers n.listenersLock.Lock() defer n.listenersLock.Unlock() if n.listener == nil { diff --git a/client/internal/peer/status.go b/client/internal/peer/status.go index 21e8be177..f75991d85 100644 --- a/client/internal/peer/status.go +++ b/client/internal/peer/status.go @@ -353,9 +353,13 @@ func (d *Status) onConnectionChanged() { } func (d *Status) notifyPeerListChanged() { - d.notifier.peerListChanged(len(d.peers) + len(d.offlinePeers)) + d.notifier.peerListChanged(d.numOfPeers()) } func (d *Status) notifyAddressChanged() { d.notifier.localAddressChanged(d.localPeer.FQDN, d.localPeer.IP) } + +func (d *Status) numOfPeers() int { + return len(d.peers) + len(d.offlinePeers) +}