seperate dns retrieval into its own model

This commit is contained in:
juancwu 2026-01-23 19:52:01 +00:00
commit a6bcb9be38
5 changed files with 179 additions and 72 deletions

View file

@ -6,6 +6,7 @@ import (
"git.juancwu.dev/juancwu/porkbacon/internal/config"
"git.juancwu.dev/juancwu/porkbacon/internal/ui/messages"
"git.juancwu.dev/juancwu/porkbacon/internal/ui/pages/dns"
"git.juancwu.dev/juancwu/porkbacon/internal/ui/pages/listdomains"
"git.juancwu.dev/juancwu/porkbacon/internal/ui/pages/login"
"git.juancwu.dev/juancwu/porkbacon/internal/ui/pages/menu"
@ -17,6 +18,7 @@ type MainModel struct {
login *login.Model
menu *menu.Model
listDomains *listdomains.Model
dnsRetrieve dns.RetrieveModel
isMenuInit bool
width int
height int
@ -57,17 +59,21 @@ func (m MainModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
case messages.SessionReadyMsg:
m.menu = menu.New(msg.Client)
m.listDomains = listdomains.New(msg.Client)
m.dnsRetrieve = dns.NewRetrieveModel(msg.Client)
if m.width > 0 && m.height > 0 {
newMenu, _ := m.menu.Update(tea.WindowSizeMsg{Width: m.width, Height: m.height})
m.menu = newMenu.(*menu.Model)
}
m.currentPage = messages.PageMenu
m.isMenuInit = true
return m, tea.Batch(m.menu.Init(), m.listDomains.Init())
return m, tea.Batch(m.menu.Init(), m.listDomains.Init(), m.dnsRetrieve.Init())
case messages.ListDomainsMsg:
m.currentPage = messages.PageListDomains
case messages.DNSRetrieveMsg:
m.currentPage = messages.PageDNSRetrieve
}
var newModel tea.Model
switch m.currentPage {
case messages.PageLogin:
var newLogin tea.Model
@ -78,9 +84,11 @@ func (m MainModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
newMenu, cmd = m.menu.Update(msg)
m.menu = newMenu.(*menu.Model)
case messages.PageListDomains:
var newModel tea.Model
newModel, cmd = m.listDomains.Update(msg)
m.listDomains = newModel.(*listdomains.Model)
case messages.PageDNSRetrieve:
newModel, cmd = m.dnsRetrieve.Update(msg)
m.dnsRetrieve = newModel.(dns.RetrieveModel)
}
cmds = append(cmds, cmd)
@ -95,6 +103,8 @@ func (m MainModel) View() string {
return m.menu.View()
case messages.PageListDomains:
return m.listDomains.View()
case messages.PageDNSRetrieve:
return m.dnsRetrieve.View()
default:
return "Unknown Page"
}