Skip to content

Commit cc64ced

Browse files
tsrelay/handler: add offline peer group (#186)
Put offline peers in a separate group. This improves the UI when there are a lot of peers, and makes it easier to see and reach for the online peers in "All nodes". Fixes: #185 --------- Co-authored-by: Marwan Sulaiman <[email protected]>
1 parent 89d730f commit cc64ced

File tree

1 file changed

+16
-23
lines changed

1 file changed

+16
-23
lines changed

tsrelay/handler/get_peers.go

Lines changed: 16 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -69,11 +69,11 @@ func (h *handler) getPeers(ctx context.Context, body io.Reader) (*getPeersRespon
6969
return nil, err
7070
}
7171

72-
s := getPeersResponse{
73-
PeerGroups: []*peerGroup{
74-
{Name: "My nodes"},
75-
{Name: "All nodes"},
76-
},
72+
s := getPeersResponse{PeerGroups: []*peerGroup{}}
73+
peerGroups := [...]*peerGroup{
74+
{Name: "My nodes"},
75+
{Name: "All nodes"},
76+
{Name: "Offline nodes"},
7777
}
7878

7979
if st.BackendState == "NeedsLogin" || (st.Self != nil && !st.Self.Online) {
@@ -130,33 +130,26 @@ func (h *handler) getPeers(ctx context.Context, body io.Reader) (*getPeersRespon
130130
SSHEnabled: len(p.SSH_HostKeys) > 0,
131131
Address: addr,
132132
}
133-
if p.UserID == st.Self.UserID {
134-
s.PeerGroups[0].Peers = append(s.PeerGroups[0].Peers, peer)
133+
134+
if !p.Online {
135+
peerGroups[2].Peers = append(peerGroups[2].Peers, peer)
136+
} else if p.UserID == st.Self.UserID {
137+
peerGroups[0].Peers = append(peerGroups[0].Peers, peer)
135138
} else {
136-
s.PeerGroups[1].Peers = append(s.PeerGroups[1].Peers, peer)
139+
peerGroups[1].Peers = append(peerGroups[1].Peers, peer)
137140
}
138141
}
139142

140-
myNodes := len(s.PeerGroups[0].Peers)
141-
allNodes := len(s.PeerGroups[1].Peers)
142-
if myNodes == 0 && allNodes > 0 {
143-
s.PeerGroups = s.PeerGroups[1:]
144-
} else if allNodes == 0 && myNodes > 0 {
145-
s.PeerGroups = s.PeerGroups[0:1]
146-
} else if myNodes == 0 && allNodes == 0 {
147-
s.PeerGroups = nil
143+
for _, pg := range peerGroups {
144+
if len(pg.Peers) > 0 {
145+
s.PeerGroups = append(s.PeerGroups, pg)
146+
}
148147
}
149148

150149
for _, pg := range s.PeerGroups {
151150
peers := pg.Peers
152151
sort.Slice(peers, func(i, j int) bool {
153-
if peers[i].Online && !peers[j].Online {
154-
return true
155-
}
156-
if peers[j].Online && !peers[i].Online {
157-
return false
158-
}
159-
return peers[i].HostName < peers[j].HostName
152+
return peers[i].ServerName < peers[j].ServerName
160153
})
161154
}
162155

0 commit comments

Comments
 (0)