refactor: navegacion consistente con HandleBack en todas las vistas

Cada vista expone HandleBack() bool que retrocede un nivel interno (logs ->
lista) o indica que esta en estado base. El model principal intercepta q/0/esc
y delega a HandleBack: si retorna true, sale de la TUI; si false, la vista
retrocedio internamente. Elimina manejo duplicado de esc/q/0 en sub-estados.
This commit is contained in:
2026-03-28 04:52:21 +01:00
parent 4fa80f7722
commit 1e6751d6c0
6 changed files with 66 additions and 6 deletions
+11 -3
View File
@@ -132,9 +132,6 @@ func (m ContainersModel) Update(msg tea.Msg) (ContainersModel, tea.Cmd) {
if m.scrollOff > 0 {
m.scrollOff--
}
case "esc", "q", "0":
m.state = containersList
return m, nil
}
return m, nil
}
@@ -155,6 +152,17 @@ func (m ContainersModel) Update(msg tea.Msg) (ContainersModel, tea.Cmd) {
return m, cmd
}
// HandleBack retrocede un nivel. Retorna true si ya estaba en estado base (el caller debe salir).
func (m *ContainersModel) HandleBack() bool {
switch m.state {
case containersLogs:
m.state = containersList
return false
default:
return true
}
}
func (m ContainersModel) View() string {
switch m.state {
case containersLoading: