diff options
author | Simon Rozman <simon@rozman.si> | 2019-12-20 18:59:35 +0100 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2020-02-23 16:27:05 +0100 |
commit | 4c89d09ec5a2c37290e3ee67708efb9a2311c81e (patch) | |
tree | 06e05ed3cb5a271f48548335d42fc784f475750d /ui/listview.go | |
parent | tunnel: deduplicate addresses from config (diff) | |
download | wireguard-windows-4c89d09ec5a2c37290e3ee67708efb9a2311c81e.tar.xz wireguard-windows-4c89d09ec5a2c37290e3ee67708efb9a2311c81e.zip |
ui: reduce iteration nesting when removing old tunnels
Signed-off-by: Simon Rozman <simon@rozman.si>
Diffstat (limited to '')
-rw-r--r-- | ui/listview.go | 19 |
1 files changed, 6 insertions, 13 deletions
diff --git a/ui/listview.go b/ui/listview.go index e9ecb2f8..60679579 100644 --- a/ui/listview.go +++ b/ui/listview.go @@ -225,21 +225,14 @@ func (tv *ListView) Load(asyncUI bool) { for _, tunnel := range tunnels { newTunnels[tunnel] = true } - for _, tunnel := range tv.model.tunnels { + for i := len(tv.model.tunnels); i > 0; { + i-- + tunnel := tv.model.tunnels[i] oldTunnels[tunnel] = true - } - - for tunnel := range oldTunnels { if !newTunnels[tunnel] { - for i, t := range tv.model.tunnels { - // TODO: this is inefficient. Use a map here instead. - if t.Name == tunnel.Name { - tv.model.tunnels = append(tv.model.tunnels[:i], tv.model.tunnels[i+1:]...) - tv.model.PublishRowsRemoved(i, i) // TODO: Do we have to call that everytime or can we pass a range? - delete(tv.model.lastObservedState, t) - break - } - } + tv.model.tunnels = append(tv.model.tunnels[:i], tv.model.tunnels[i+1:]...) + tv.model.PublishRowsRemoved(i, i) // TODO: Do we have to call that everytime or can we pass a range? + delete(tv.model.lastObservedState, tunnel) } } didAdd := false |