diff options
author | Alexander Neumann <alexander.neumann@picos-software.com> | 2019-04-10 12:47:03 +0200 |
---|---|---|
committer | Alexander Neumann <alexander.neumann@picos-software.com> | 2019-04-23 11:04:59 +0200 |
commit | 5b8d4ff0a3d0dabe620374c65e36c08b7f501cf2 (patch) | |
tree | b96b6dc4c0139d2d167d604abcdb6279cbf22167 /ui/ui.go | |
parent | ui: only allow a single tunnel to be selected at any time (diff) | |
download | wireguard-windows-5b8d4ff0a3d0dabe620374c65e36c08b7f501cf2.tar.xz wireguard-windows-5b8d4ff0a3d0dabe620374c65e36c08b7f501cf2.zip |
ui: only allow a single tunnel to be active at any time
Signed-off-by: Alexander Neumann <alexander.neumann@picos-software.com>
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to '')
-rw-r--r-- | ui/ui.go | 28 |
1 files changed, 7 insertions, 21 deletions
@@ -33,6 +33,8 @@ func nag() { func RunUI() { runtime.LockOSThread() + tunnelTracker := new(TunnelTracker) + icon, err := walk.NewIconFromResourceId(1) if err != nil { panic(err) @@ -45,6 +47,8 @@ func RunUI() { } defer mtw.Dispose() + mtw.SetTunnelTracker(tunnelTracker) + tray, err := NewTray(mtw, icon) if err != nil { panic(err) @@ -52,14 +56,13 @@ func RunUI() { defer tray.Dispose() // Bind to updates - setTunnelState := func(tunnel *service.Tunnel, state service.TunnelState, showNotifications bool) { + service.IPCClientRegisterTunnelChange(func(tunnel *service.Tunnel, state service.TunnelState, err error) { mtw.Synchronize(func() { + tunnelTracker.SetTunnelState(tunnel, state, err) mtw.SetTunnelState(tunnel, state) - tray.SetTunnelStateWithNotification(tunnel, state, showNotifications) + tray.SetTunnelStateWithNotification(tunnel, state, err == nil) }) - } - service.IPCClientRegisterTunnelChange(func(tunnel *service.Tunnel, state service.TunnelState, err error) { if err == nil { return } @@ -73,25 +76,8 @@ func RunUI() { } else { tray.ShowError("WireGuard Tunnel Error", err.Error()) } - - setTunnelState(tunnel, state, err == nil) }) - // Fetch current state - go func() { - tunnels, err := service.IPCClientTunnels() - if err != nil { - return - } - for _, tunnel := range tunnels { - state, err := tunnel.State() - if err != nil { - continue - } - setTunnelState(&tunnel, state, false) - } - }() - time.AfterFunc(time.Minute*15, nag) mtw.Run() } |