termtap/internal/tui/model.go
Hayden Hargreaves d51d1fea56 fix: remove the silly map
AI generated code is still not perfect...
2026-04-14 22:54:26 -07:00

56 lines
938 B
Go

package tui
import (
"fmt"
tea "github.com/charmbracelet/bubbletea"
"termtap.dev/internal/model"
)
// TODO: How big can we actually make this?
const (
maxEvents = 256
maxRequests = 256
)
type Model struct {
channel <-chan model.Event
events []model.Event
requests []model.Request
width int
height int
}
func NewModel(ch <-chan model.Event) Model {
return Model{
channel: ch,
events: make([]model.Event, 0, maxEvents),
requests: make([]model.Request, 0, maxRequests),
width: 100,
height: 28,
}
}
func Run(ch <-chan model.Event) error {
p := tea.NewProgram(NewModel(ch), tea.WithAltScreen())
_, err := p.Run()
return err
}
func (m Model) Init() tea.Cmd {
return waitForEvent(m.channel)
}
func waitForEvent(ch <-chan model.Event) tea.Cmd {
return func() tea.Msg {
msg, ok := <-ch
if !ok {
return ErrMsg{err: fmt.Errorf("event channel closed")}
}
return EventMsg{value: msg}
}
}