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 { type MainModel struct {
currentPage messages.Page currentPage messages.Page
login tea.Model pages map[messages.Page]tea.Model
menu tea.Model
listDomains tea.Model
dnsRetrieve tea.Model
isMenuInit bool isMenuInit bool
width int width int
height int height int
@ -31,14 +28,17 @@ func New() MainModel {
os.Exit(1) os.Exit(1)
} }
pages := make(map[messages.Page]tea.Model)
pages[messages.PageLogin] = login.New(cfg)
return MainModel{ return MainModel{
currentPage: messages.PageLogin, currentPage: messages.PageLogin,
login: login.New(cfg), pages: pages,
} }
} }
func (m MainModel) Init() tea.Cmd { 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) { 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 m.currentPage = msg.Page
return m, nil return m, nil
case messages.SessionReadyMsg: case messages.SessionReadyMsg:
m.menu = menu.New(msg.Client) m.pages[messages.PageMenu] = menu.New(msg.Client)
m.listDomains = listdomains.New(msg.Client) m.pages[messages.PageListDomains] = listdomains.New(msg.Client)
m.dnsRetrieve = dns.NewRetrieveModel(msg.Client) m.pages[messages.PageDNSRetrieve] = dns.NewRetrieveModel(msg.Client)
if m.width > 0 && m.height > 0 { 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.currentPage = messages.PageMenu
m.isMenuInit = true 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: case messages.ListDomainsMsg:
m.currentPage = messages.PageListDomains m.currentPage = messages.PageListDomains
case messages.DNSRetrieveMsg: case messages.DNSRetrieveMsg:
m.currentPage = messages.PageDNSRetrieve m.currentPage = messages.PageDNSRetrieve
} }
switch m.currentPage { page, ok := m.pages[m.currentPage]
case messages.PageLogin: if ok {
m.login, cmd = m.login.Update(msg) m.pages[m.currentPage], cmd = page.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)
}
cmds = append(cmds, cmd) cmds = append(cmds, cmd)
}
return m, tea.Batch(cmds...) return m, tea.Batch(cmds...)
} }
func (m MainModel) View() string { func (m MainModel) View() string {
switch m.currentPage { page, ok := m.pages[m.currentPage]
case messages.PageLogin: if ok {
return m.login.View() return page.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" return "Unknown Page"
} }
}