This commit is contained in:
Erik Winter 2023-12-27 10:49:51 +01:00
parent 6e6b80c9b3
commit a88d989094
1 changed files with 35 additions and 48 deletions

View File

@ -6,7 +6,6 @@ import (
"strings" "strings"
"ewintr.nl/emdb/client" "ewintr.nl/emdb/client"
"ewintr.nl/emdb/model"
"github.com/charmbracelet/bubbles/list" "github.com/charmbracelet/bubbles/list"
"github.com/charmbracelet/bubbles/textinput" "github.com/charmbracelet/bubbles/textinput"
tea "github.com/charmbracelet/bubbletea" tea "github.com/charmbracelet/bubbletea"
@ -97,29 +96,7 @@ func (m tabEMDB) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
case "edit": case "edit":
switch msg.String() { switch msg.String() {
case "tab", "shift+tab", "up", "down": case "tab", "shift+tab", "up", "down":
s := msg.String() cmds = append(cmds, m.NavigateForm(msg.String())...)
if s == "up" || s == "shift+tab" {
m.formFocus--
} else {
m.formFocus++
}
if m.formFocus > len(m.formInputs) {
m.formFocus = 0
}
if m.formFocus < 0 {
m.formFocus = len(m.formInputs)
}
for i := 0; i <= len(m.formInputs)-1; i++ {
if i == m.formFocus {
m.formInputs[i].PromptStyle = focusedStyle
m.formInputs[i].TextStyle = focusedStyle
cmds = append(cmds, m.formInputs[i].Focus())
continue
}
m.formInputs[i].Blur()
m.formInputs[i].PromptStyle = noStyle
m.formInputs[i].TextStyle = noStyle
}
case "enter": case "enter":
m.mode = "view" m.mode = "view"
cmds = append(cmds, m.StoreMovie()) cmds = append(cmds, m.StoreMovie())
@ -216,34 +193,44 @@ func (m *tabEMDB) ViewForm() string {
return lipgloss.JoinHorizontal(lipgloss.Top, labelView, fieldsView) return lipgloss.JoinHorizontal(lipgloss.Top, labelView, fieldsView)
} }
func (m *tabEMDB) NavigateForm(key string) []tea.Cmd {
var cmds []tea.Cmd
if key == "up" || key == "shift+tab" {
m.formFocus--
} else {
m.formFocus++
}
if m.formFocus > len(m.formInputs) {
m.formFocus = 0
}
if m.formFocus < 0 {
m.formFocus = len(m.formInputs)
}
for i := 0; i <= len(m.formInputs)-1; i++ {
if i == m.formFocus {
m.formInputs[i].PromptStyle = focusedStyle
m.formInputs[i].TextStyle = focusedStyle
cmds = append(cmds, m.formInputs[i].Focus())
continue
}
m.formInputs[i].Blur()
m.formInputs[i].PromptStyle = noStyle
m.formInputs[i].TextStyle = noStyle
}
return cmds
}
func (m *tabEMDB) StoreMovie() tea.Cmd { func (m *tabEMDB) StoreMovie() tea.Cmd {
return func() tea.Msg { return func() tea.Msg {
tmdbId, err := strconv.Atoi(m.formInputs[1].Value()) updatedMovie := m.list.SelectedItem().(Movie)
if err != nil { var err error
return fmt.Errorf("tmbID cannot be converted to an int: %w", err) movie := m.list.SelectedItem().(Movie)
} if updatedMovie.m.Rating, err = strconv.Atoi(m.formInputs[0].Value()); err != nil {
year, err := strconv.Atoi(m.formInputs[5].Value())
if err != nil {
return fmt.Errorf("year cannot be converted to an int: %w", err)
}
rating, err := strconv.Atoi(m.formInputs[8].Value())
if err != nil {
return fmt.Errorf("rating cannot be converted to an int: %w", err) return fmt.Errorf("rating cannot be converted to an int: %w", err)
} }
movie := Movie{ movie.m.Comment = m.formInputs[1].Value()
m: model.Movie{
ID: m.formInputs[0].Value(),
TMDBID: int64(tmdbId),
IMDBID: m.formInputs[2].Value(),
Title: m.formInputs[3].Value(),
EnglishTitle: m.formInputs[4].Value(),
Year: year,
Directors: strings.Split(m.formInputs[6].Value(), ","),
Summary: m.formInputs[7].Value(),
Rating: rating,
Comment: m.formInputs[9].Value(),
},
}
m.Log(fmt.Sprintf("storing movie %s", movie.Title())) m.Log(fmt.Sprintf("storing movie %s", movie.Title()))
if _, err := m.emdb.CreateMovie(movie.m); err != nil { if _, err := m.emdb.CreateMovie(movie.m); err != nil {
return err return err