@@ -12,6 +12,13 @@ import (
1212 "go.uber.org/zap"
1313)
1414
15+ const (
16+ actionEnable = "enable"
17+ actionDisable = "disable"
18+ textEnable = "Enable"
19+ textDisable = "Disable"
20+ )
21+
1522// ServerStateManager manages server state synchronization between storage, config, and menu
1623type ServerStateManager struct {
1724 server ServerInterface
@@ -150,9 +157,9 @@ func (m *ServerStateManager) UnquarantineServer(serverName string) error {
150157
151158// EnableServer enables/disables a server and ensures all state is synchronized
152159func (m * ServerStateManager ) EnableServer (serverName string , enabled bool ) error {
153- action := "disable"
160+ action := actionDisable
154161 if enabled {
155- action = "enable"
162+ action = actionEnable
156163 }
157164
158165 m .logger .Info ("EnableServer called" ,
@@ -274,16 +281,17 @@ func (m *MenuManager) UpdateUpstreamServersMenu(servers []map[string]interface{}
274281
275282 // --- Create Menu Items for New Servers ---
276283 for serverName , serverData := range currentServerMap {
277- if _ , exists := m .serverMenuItems [serverName ]; ! exists {
278- // This is a new server, create its menu item
279- m .logger .Info ("Creating menu item for new server" , zap .String ("server" , serverName ))
280- status , tooltip := m .getServerStatusDisplay (serverData )
281- serverMenuItem := m .upstreamServersMenu .AddSubMenuItem (status , tooltip )
282- m .serverMenuItems [serverName ] = serverMenuItem
283-
284- // Create its action submenus
285- m .createServerActionSubmenus (serverMenuItem , serverData )
284+ if _ , exists := m .serverMenuItems [serverName ]; exists {
285+ continue
286286 }
287+ // This is a new server, create its menu item
288+ m .logger .Info ("Creating menu item for new server" , zap .String ("server" , serverName ))
289+ status , tooltip := m .getServerStatusDisplay (serverData )
290+ serverMenuItem := m .upstreamServersMenu .AddSubMenuItem (status , tooltip )
291+ m .serverMenuItems [serverName ] = serverMenuItem
292+
293+ // Create its action submenus
294+ m .createServerActionSubmenus (serverMenuItem , serverData )
287295 }
288296}
289297
@@ -391,7 +399,7 @@ func (m *MenuManager) ForceRefresh() {
391399}
392400
393401// getServerStatusDisplay returns display text and tooltip for a server
394- func (m * MenuManager ) getServerStatusDisplay (server map [string ]interface {}) (string , string ) {
402+ func (m * MenuManager ) getServerStatusDisplay (server map [string ]interface {}) (displayText , tooltip string ) {
395403 serverName , _ := server ["name" ].(string )
396404 enabled , _ := server ["enabled" ].(bool )
397405 connected , _ := server ["connected" ].(bool )
@@ -415,10 +423,10 @@ func (m *MenuManager) getServerStatusDisplay(server map[string]interface{}) (str
415423 statusText = "disconnected"
416424 }
417425
418- displayText : = fmt .Sprintf ("%s %s" , statusIcon , serverName )
419- tooltip : = fmt .Sprintf ("%s - %s" , serverName , statusText )
426+ displayText = fmt .Sprintf ("%s %s" , statusIcon , serverName )
427+ tooltip = fmt .Sprintf ("%s - %s" , serverName , statusText )
420428
421- return displayText , tooltip
429+ return
422430}
423431
424432// createServerActionSubmenus creates action submenus for a server (enable/disable, quarantine)
@@ -434,9 +442,9 @@ func (m *MenuManager) createServerActionSubmenus(serverMenuItem *systray.MenuIte
434442 // Enable/Disable action
435443 var enableText string
436444 if enabled {
437- enableText = "Disable"
445+ enableText = textDisable
438446 } else {
439- enableText = "Enable"
447+ enableText = textEnable
440448 }
441449 enableItem := serverMenuItem .AddSubMenuItem (enableText , fmt .Sprintf ("%s server %s" , enableText , serverName ))
442450 m .serverActionItems [serverName ] = enableItem
@@ -477,9 +485,9 @@ func (m *MenuManager) updateServerActionMenus(serverName string, server map[stri
477485 if actionItem , exists := m .serverActionItems [serverName ]; exists {
478486 var enableText string
479487 if enabled {
480- enableText = "Disable"
488+ enableText = textDisable
481489 } else {
482- enableText = "Enable"
490+ enableText = textEnable
483491 }
484492 actionItem .SetTitle (enableText )
485493 actionItem .SetTooltip (fmt .Sprintf ("%s server %s" , enableText , serverName ))
0 commit comments