From 44689ada2ca7b2f7074436dd774e3498393b4e0f Mon Sep 17 00:00:00 2001 From: Arindy Date: Sun, 28 Dec 2025 11:28:10 +0100 Subject: [PATCH] Refactor NetworkDevices widget to sort interfaces --- apis/networking/main.go | 2 +- widgets/networkdevices.go | 19 ++++++++++++++----- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/apis/networking/main.go b/apis/networking/main.go index 1366741..c711e33 100644 --- a/apis/networking/main.go +++ b/apis/networking/main.go @@ -34,7 +34,7 @@ func GetDevices() map[string]map[string]Device { } for mac, device := range knownDevices { if _, ok := devices[mac]; !ok { - devices[mac] = Device{Name: device.Name, IP: device.IP, Interface: "offline", Icon: device.Icon} + devices[mac] = Device{Name: device.Name, IP: device.IP, Interface: "_offline_", Icon: device.Icon} } } writeDevices(devices) diff --git a/widgets/networkdevices.go b/widgets/networkdevices.go index 62928cb..bd50e6c 100644 --- a/widgets/networkdevices.go +++ b/widgets/networkdevices.go @@ -28,7 +28,7 @@ func createNetworkDevicesList(ctx context.Context, _ terminalapi.Terminal, _ int go util.Periodic(ctx, 20*time.Second, func() error { interfaces := networking.GetDevices() list.Reset() - for iface, devices := range interfaces { + for _, iface := range sortedInterfaces(interfaces) { status := cell.ColorGreen if iface == "offline" { status = cell.ColorGray @@ -36,17 +36,17 @@ func createNetworkDevicesList(ctx context.Context, _ terminalapi.Terminal, _ int if err := list.Write(fmt.Sprintf("=== %s ===\n", iface)); err != nil { return err } - for _, mac := range sortedKeys(devices) { + for _, mac := range sortedKeys(interfaces[iface]) { if err := list.Write(fmt.Sprintf("|%-15s|", mac), text.WriteCellOpts(cell.FgColor(cell.ColorGray))); err != nil { return err } - if err := list.Write(fmt.Sprintf("%2s ", devices[mac].Icon), text.WriteCellOpts(cell.FgColor(status))); err != nil { + if err := list.Write(fmt.Sprintf("%2s ", interfaces[iface][mac].Icon), text.WriteCellOpts(cell.FgColor(status))); err != nil { return err } - if err := list.Write(fmt.Sprintf(" %s", devices[mac].Name), text.WriteCellOpts(cell.FgColor(cell.ColorWhite))); err != nil { + if err := list.Write(fmt.Sprintf(" %s", interfaces[iface][mac].Name), text.WriteCellOpts(cell.FgColor(cell.ColorWhite))); err != nil { return err } - if err := list.Write(fmt.Sprintf(" (%s)\n", devices[mac].IP), text.WriteCellOpts(cell.FgColor(cell.ColorGray))); err != nil { + if err := list.Write(fmt.Sprintf(" (%s)\n", interfaces[iface][mac].IP), text.WriteCellOpts(cell.FgColor(cell.ColorGray))); err != nil { return err } } @@ -58,6 +58,15 @@ func createNetworkDevicesList(ctx context.Context, _ terminalapi.Terminal, _ int return list } +func sortedInterfaces(interfaces map[string]map[string]networking.Device) []string { + keys := make([]string, 0, len(interfaces)) + for key := range interfaces { + keys = append(keys, key) + } + sort.Strings(keys) + return keys +} + func sortedKeys(devices map[string]networking.Device) []string { macs := make([]string, 0, len(devices)) for mac := range devices {