aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/ui/ui.go
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--ui/ui.go28
1 files changed, 7 insertions, 21 deletions
diff --git a/ui/ui.go b/ui/ui.go
index 7b9a8ce0..7cc96ee2 100644
--- a/ui/ui.go
+++ b/ui/ui.go
@@ -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()
}