save all pages in map

This commit is contained in:
juancwu 2026-01-26 18:40:08 +00:00
commit 539835627b

View file

@ -15,10 +15,7 @@ import (
type MainModel struct {
currentPage messages.Page
login tea.Model
menu tea.Model
listDomains tea.Model
dnsRetrieve tea.Model
pages map[messages.Page]tea.Model
isMenuInit bool
width int
height int
@ -31,14 +28,17 @@ func New() MainModel {
os.Exit(1)
}
pages := make(map[messages.Page]tea.Model)
pages[messages.PageLogin] = login.New(cfg)
return MainModel{
currentPage: messages.PageLogin,
login: login.New(cfg),
pages: pages,
}
}
func (m MainModel) Init() tea.Cmd {
return m.login.Init()
return m.pages[messages.PageLogin].Init()
}
func (m MainModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
@ -57,47 +57,38 @@ func (m MainModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
m.currentPage = msg.Page
return m, nil
case messages.SessionReadyMsg:
m.menu = menu.New(msg.Client)
m.listDomains = listdomains.New(msg.Client)
m.dnsRetrieve = dns.NewRetrieveModel(msg.Client)
m.pages[messages.PageMenu] = menu.New(msg.Client)
m.pages[messages.PageListDomains] = listdomains.New(msg.Client)
m.pages[messages.PageDNSRetrieve] = dns.NewRetrieveModel(msg.Client)
if m.width > 0 && m.height > 0 {
m.menu, _ = m.menu.Update(tea.WindowSizeMsg{Width: m.width, Height: m.height})
m.pages[messages.PageMenu], _ = m.pages[messages.PageMenu].Update(tea.WindowSizeMsg{Width: m.width, Height: m.height})
}
m.currentPage = messages.PageMenu
m.isMenuInit = true
return m, tea.Batch(m.menu.Init(), m.listDomains.Init(), m.dnsRetrieve.Init())
var cmds []tea.Cmd
for _, page := range m.pages {
cmds = append(cmds, page.Init())
}
return m, tea.Batch(cmds...)
case messages.ListDomainsMsg:
m.currentPage = messages.PageListDomains
case messages.DNSRetrieveMsg:
m.currentPage = messages.PageDNSRetrieve
}
switch m.currentPage {
case messages.PageLogin:
m.login, cmd = m.login.Update(msg)
case messages.PageMenu:
m.menu, cmd = m.menu.Update(msg)
case messages.PageListDomains:
m.listDomains, cmd = m.listDomains.Update(msg)
case messages.PageDNSRetrieve:
m.dnsRetrieve, cmd = m.dnsRetrieve.Update(msg)
page, ok := m.pages[m.currentPage]
if ok {
m.pages[m.currentPage], cmd = page.Update(msg)
cmds = append(cmds, cmd)
}
cmds = append(cmds, cmd)
return m, tea.Batch(cmds...)
}
func (m MainModel) View() string {
switch m.currentPage {
case messages.PageLogin:
return m.login.View()
case messages.PageMenu:
return m.menu.View()
case messages.PageListDomains:
return m.listDomains.View()
case messages.PageDNSRetrieve:
return m.dnsRetrieve.View()
default:
return "Unknown Page"
page, ok := m.pages[m.currentPage]
if ok {
return page.View()
}
return "Unknown Page"
}