fix(ui): preserve paused systems in network monitors table (#2391)

This commit is contained in:
Sven van Ginkel
2026-09-22 18:40:46 -04:00
committed by GitHub
parent 4a4610bbc3
commit 8047f005d4
3 changed files with 40 additions and 2 deletions
+3 -1
View File
@@ -190,7 +190,9 @@ func (sm *SystemManager) onRecordAfterCreateSuccess(e *core.RecordEvent) error {
// It clears system info when the status is changed to paused.
func (sm *SystemManager) onRecordUpdate(e *core.RecordEvent) error {
if e.Record.GetString("status") == paused {
e.Record.Set("info", system.Info{})
var prevInfo system.Info
e.Record.UnmarshalJSONField("info", &prevInfo)
e.Record.Set("info", system.Info{AgentVersion: prevInfo.AgentVersion})
}
return e.Next()
}
+32
View File
@@ -18,6 +18,38 @@ import (
"github.com/stretchr/testify/require"
)
func TestPauseSystemPreservesAgentVersion(t *testing.T) {
hub, user := tests.GetHubWithUser(t)
defer hub.Cleanup()
record, err := tests.CreateRecord(hub, "systems", map[string]any{
"name": "pause-info-test",
"host": "localhost",
"port": "33914",
"users": []string{user.Id},
})
require.NoError(t, err)
record.Set("info", system.Info{
AgentVersion: "0.20.0",
Cpu: 42.5,
MemPct: 60,
Uptime: 3600,
Services: []uint16{3, 1},
})
require.NoError(t, hub.Save(record))
record.Set("status", "paused")
require.NoError(t, hub.Save(record))
pausedRecord, err := hub.FindRecordById("systems", record.Id)
require.NoError(t, err)
assert.Equal(t, "paused", pausedRecord.GetString("status"))
var info system.Info
require.NoError(t, pausedRecord.UnmarshalJSONField("info", &info))
assert.Equal(t, system.Info{AgentVersion: "0.20.0"}, info)
}
func TestSystemManagerNew(t *testing.T) {
hub, err := tests.NewTestHub(t.TempDir())
if err != nil {
@@ -34,6 +34,7 @@ import { TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/compon
import { useToast } from "@/components/ui/use-toast"
import { isReadOnlyUser } from "@/lib/api"
import { pb } from "@/lib/api"
import { SystemStatus } from "@/lib/enums"
import { $allSystemsById, $direction, $userSettings } from "@/lib/stores"
import {
cn,
@@ -450,10 +451,13 @@ const NetworkMonitorTableRow = memo(function NetworkMonitorTableRow({
rowSelection: RowSelectionState
openSheet: (monitor: NetworkMonitorRecord) => void
}) {
const system = useStore($allSystemsById)[row.original.system]
return (
<TableRow
data-state={isSelected && "selected"}
className="cursor-pointer transition-opacity"
className={cn("cursor-pointer transition-opacity", {
"opacity-50": system?.status === SystemStatus.Paused,
})}
onClick={() => openSheet(row.original)}
>
{row.getVisibleCells().map((cell) => (