emdb/cmd/terminal-client/tui/tabemdb.go

62 lines
1.1 KiB
Go
Raw Normal View History

2023-12-23 18:43:38 +01:00
package tui
import (
2023-12-24 10:16:11 +01:00
"ewintr.nl/emdb/client"
2023-12-23 18:43:38 +01:00
"github.com/charmbracelet/bubbles/list"
tea "github.com/charmbracelet/bubbletea"
)
type emdbTab struct {
2023-12-24 10:16:11 +01:00
initialized bool
list list.Model
emdb *client.EMDB
logger *Logger
2023-12-23 18:43:38 +01:00
}
2023-12-24 10:16:11 +01:00
func NewEMDBTab(emdb *client.EMDB, logger *Logger) (tea.Model, tea.Cmd) {
list := list.New([]list.Item{}, list.NewDefaultDelegate(), 0, 0)
list.Title = "Movies"
list.SetShowHelp(false)
m := emdbTab{
emdb: emdb,
logger: logger,
list: list,
}
2023-12-23 18:43:38 +01:00
2023-12-24 10:16:11 +01:00
return m, FetchMovieList(emdb, logger)
2023-12-23 18:43:38 +01:00
}
func (m emdbTab) Init() tea.Cmd {
return nil
}
func (m emdbTab) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
var cmd tea.Cmd
var cmds []tea.Cmd
switch msg := msg.(type) {
case TabSizeMsgType:
2023-12-24 10:16:11 +01:00
if !m.initialized {
//cmds = append(cmds, FetchMovieList(m.emdb, m.logger))
m.initialized = true
2023-12-23 18:43:38 +01:00
}
m.list.SetSize(msg.Width, msg.Height)
2023-12-24 10:16:11 +01:00
case Movies:
m.list.SetItems(msg.listItems())
2023-12-23 18:43:38 +01:00
}
m.list, cmd = m.list.Update(msg)
cmds = append(cmds, cmd)
return m, tea.Batch(cmds...)
}
func (m emdbTab) View() string {
return m.list.View()
}
func (m *emdbTab) Log(s string) {
m.logger.Log(s)
}