MCPcopy Create free account
hub / github.com/devnullvoid/pvetui / refreshNodeData

Method refreshNodeData

internal/ui/components/refresh.go:590–670  ·  view source on GitHub ↗

refreshNodeData refreshes data for a specific node and updates the UI.

(node *api.Node)

Source from the content-addressed store, hash-verified

588
589// refreshNodeData refreshes data for a specific node and updates the UI.
590func (a *App) refreshNodeData(node *api.Node) {
591 a.header.ShowLoading(fmt.Sprintf("Refreshing node %s", node.Name))
592 // Record the currently selected node's name
593 selectedNodeName := ""
594 if selected := a.nodeList.GetSelectedNode(); selected != nil {
595 selectedNodeName = selected.Name
596 }
597
598 go func() {
599 var freshNode *api.Node
600 var err error
601
602 client, clientErr := a.getClientForNode(node)
603 if clientErr != nil {
604 err = clientErr
605 } else {
606 freshNode, err = client.RefreshNodeData(node.Name)
607 }
608
609 a.QueueUpdateDraw(func() {
610 if err != nil {
611 a.header.ShowError(fmt.Sprintf("Error refreshing node %s: %v", node.Name, err))
612
613 return
614 }
615 // Update node in global state
616 for i, n := range models.GlobalState.OriginalNodes {
617 if n != nil && n.Name == node.Name {
618 // In group mode, ensure SourceProfile is preserved/set
619 if a.isGroupMode {
620 freshNode.SourceProfile = node.SourceProfile
621 }
622 models.GlobalState.OriginalNodes[i] = freshNode
623 break
624 }
625 }
626
627 for i, n := range models.GlobalState.FilteredNodes {
628 if n != nil && n.Name == node.Name {
629 // In group mode, ensure SourceProfile is preserved/set
630 if a.isGroupMode {
631 freshNode.SourceProfile = node.SourceProfile
632 }
633 models.GlobalState.FilteredNodes[i] = freshNode
634 break
635 }
636 }
637
638 a.nodeList.SetNodes(models.GlobalState.FilteredNodes)
639 a.syncStorageBrowserNodes()
640 a.nodeDetails.Update(freshNode, models.GlobalState.OriginalNodes)
641 // Restore selection by previously selected node name using the tview list data
642 restored := false
643
644 nodeList := a.nodeList.GetNodes()
645 for i, n := range nodeList {
646 if n != nil && n.Name == selectedNodeName {
647 a.nodeList.SetCurrentItem(i)

Callers 1

ShowNodeContextMenuMethod · 0.95

Calls 12

getClientForNodeMethod · 0.95
RefreshNodeDataMethod · 0.80
QueueUpdateDrawMethod · 0.80
ShowLoadingMethod · 0.65
GetSelectedNodeMethod · 0.65
ShowErrorMethod · 0.65
SetNodesMethod · 0.65
UpdateMethod · 0.65
GetNodesMethod · 0.65
SetCurrentItemMethod · 0.65
ShowSuccessMethod · 0.65

Tested by

no test coverage detected