package native import "slices" func (n *Native) UpdateLabelIfChanged(objName string, newText string) { l := n.lD.Trace().Str("obj", objName).Str("text", newText) changed, err := n.LabelSetText(objName, newText) if err != nil { n.lD.Warn().Str("obj", objName).Str("text", newText).Err(err).Msg("failed to update label") return } if changed { l.Msg("label changed") } else { l.Msg("label not changed") } } func (n *Native) UpdateLabelAndChangeVisibility(objName string, newText string) { containerName := objName + "_container" if newText == "" { _, _ = n.ObjHide(objName) _, _ = n.ObjHide(containerName) } else { _, _ = n.ObjShow(objName) _, _ = n.ObjShow(containerName) } n.UpdateLabelIfChanged(objName, newText) } func (n *Native) SwitchToScreenIf(screenName string, shouldSwitch []string) { currentScreen := n.GetCurrentScreen() if currentScreen == screenName { return } if !slices.Contains(shouldSwitch, currentScreen) { displayLogger.Trace().Str("from", currentScreen).Str("to", screenName).Msg("skipping screen switch") return } displayLogger.Info().Str("from", currentScreen).Str("to", screenName).Msg("switching screen") n.SwitchToScreen(screenName) } func (n *Native) SwitchToScreenIfDifferent(screenName string) { n.SwitchToScreenIf(screenName, []string{}) }