53 lines
1017 B
Go
53 lines
1017 B
Go
package tui
|
|
|
|
import tea "github.com/charmbracelet/bubbletea"
|
|
|
|
func (a App) handleMainMenu(key string) (tea.Model, tea.Cmd) {
|
|
// Number key shortcut
|
|
for _, item := range a.mainMenu {
|
|
if key == item.Key {
|
|
if item.Key == "q" {
|
|
return a, tea.Quit
|
|
}
|
|
return a.navigateToView(item.View)
|
|
}
|
|
}
|
|
|
|
// Enter on selected item
|
|
if key == "enter" {
|
|
if a.cursor >= 0 && a.cursor < len(a.mainMenu) {
|
|
item := a.mainMenu[a.cursor]
|
|
if item.Key == "q" {
|
|
return a, tea.Quit
|
|
}
|
|
return a.navigateToView(item.View)
|
|
}
|
|
}
|
|
|
|
return a, nil
|
|
}
|
|
|
|
func (a App) navigateToView(v ViewID) (tea.Model, tea.Cmd) {
|
|
a.pushView(v)
|
|
|
|
switch v {
|
|
case ViewDeploy:
|
|
// Static menu, no async loading
|
|
case ViewDeps:
|
|
// Load dependency status
|
|
return a, a.loadDepsStatus()
|
|
case ViewModules:
|
|
return a, a.loadModules()
|
|
case ViewSettings:
|
|
return a, a.loadSettings()
|
|
case ViewUsers:
|
|
// Static menu, no loading
|
|
case ViewService:
|
|
return a, a.loadServiceStatus()
|
|
case ViewDNS:
|
|
// Static menu
|
|
}
|
|
|
|
return a, nil
|
|
}
|