Add the ability to start the tracker when submitting an entry
All checks were successful
CI / test (push) Successful in 1m1s

This commit is contained in:
Justin Hawkins 2025-06-20 17:08:39 +02:00
parent 6116e89aac
commit c7798c5784

View File

@ -35,6 +35,7 @@ func (m model) updateForm(msg tea.Msg) (tea.Model, tea.Cmd) {
projectID := m.formData.form.GetString("project") projectID := m.formData.form.GetString("project")
description := m.formData.form.GetString("description") description := m.formData.form.GetString("description")
minutes := m.formData.form.GetString("minutes") minutes := m.formData.form.GetString("minutes")
tracker := m.formData.form.GetBool("tracker")
minutesInt, err1 := strconv.ParseInt(minutes, 10, 64) minutesInt, err1 := strconv.ParseInt(minutes, 10, 64)
serviceIDInt, err2 := strconv.ParseInt(serviceID, 10, 64) serviceIDInt, err2 := strconv.ParseInt(serviceID, 10, 64)
@ -45,16 +46,29 @@ func (m model) updateForm(msg tea.Msg) (tea.Model, tea.Cmd) {
m.tuiMode = MODE_CAL m.tuiMode = MODE_CAL
} else { } else {
err := m.miteAPI.AddTimeEntry(m.dest.Format(time.DateOnly), int(minutesInt), description, int(projectIDInt), int(serviceIDInt)) id, err := m.miteAPI.AddTimeEntry(m.dest.Format(time.DateOnly), int(minutesInt), description, int(projectIDInt), int(serviceIDInt))
if err != nil { if err != nil {
m.statusBarMessage = err.Error() m.statusBarMessage = err.Error()
m.tuiMode = MODE_CAL m.tuiMode = MODE_CAL
} else { } else {
if tracker {
_, _, err = m.miteAPI.StartTimeTracker(id)
if err != nil {
m.statusBarMessage = err.Error()
m.tuiMode = MODE_CAL
} else {
m.statusBarMessage = "Successfully logged time and started tracker"
m.tuiMode = MODE_CAL
return m, m.fetchMiteData()
}
} else {
m.statusBarMessage = "Successfully logged time" m.statusBarMessage = "Successfully logged time"
m.tuiMode = MODE_CAL m.tuiMode = MODE_CAL
return m, m.fetchMiteData() return m, m.fetchMiteData()
} }
} }
}
} }
@ -101,15 +115,9 @@ func (m model) buildForm() *huh.Form {
Key("project"). Key("project").
Title("Project"). Title("Project").
Options(projOptions...). Options(projOptions...).
Height(10) Height(6)
form := huh.NewForm( description := huh.NewText().
huh.NewGroup(
pl,
sl,
),
huh.NewGroup(
huh.NewText().
Key("description"). Key("description").
Title("description"). Title("description").
Validate(func(s string) error { Validate(func(s string) error {
@ -117,8 +125,10 @@ func (m model) buildForm() *huh.Form {
return errors.New("must enter a description") return errors.New("must enter a description")
} }
return nil return nil
}), })
huh.NewInput().
defMinutes := "0"
minutes := huh.NewInput().
Key("minutes"). Key("minutes").
CharLimit(5). CharLimit(5).
Validate( Validate(
@ -132,7 +142,24 @@ func (m model) buildForm() *huh.Form {
} }
return err return err
}). }).
Title("Minutes"), Title("Minutes").
Value(&defMinutes)
confirmTracker := huh.NewConfirm().
Key("tracker").
Affirmative("Yes").
Negative("No").
Title("Start tracker")
form := huh.NewForm(
huh.NewGroup(
pl,
sl,
description,
),
huh.NewGroup(
minutes,
confirmTracker,
), ),
) )
return form return form