save all pages in map
This commit is contained in:
parent
76ee438f21
commit
539835627b
1 changed files with 23 additions and 32 deletions
|
|
@ -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:
|
cmds = append(cmds, cmd)
|
||||||
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)
|
|
||||||
|
|
||||||
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"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue