Skip to content

Commit

Permalink
fix(message.go): add condition to check if error is not nil when conv…
Browse files Browse the repository at this point in the history
…erting string to int in RemoveFn

feat(message.go): add AddFn to create a new message with content and role using a form
  • Loading branch information
MohammadBnei committed Feb 5, 2024
1 parent ee4ac4f commit 9a9d235
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 20 deletions.
2 changes: 1 addition & 1 deletion service/message.go
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ func (c *ChatMessages) AddMessage(content string, role ROLES) (*ChatMessage, err
}

if exists, ok := lo.Find[ChatMessage](c.Messages, func(item ChatMessage) bool {
return item.Content == content
return item.Content == content && item.Role == role
}); ok && content != "" {
return &exists, ErrAlreadyExist
}
Expand Down
6 changes: 1 addition & 5 deletions ui/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import (
"errors"
"fmt"
"sort"
"time"

"github.com/MohammadBnei/go-openai-cli/service"
"github.com/MohammadBnei/go-openai-cli/ui/event"
Expand Down Expand Up @@ -95,10 +94,7 @@ func getEditModel(id string) (tea.Model, error) {
}
return event.AddStackEvent{Stack: form.NewEditModel("Editing config model after updating the api type", modelSelectForm, func(form *huh.Form) tea.Cmd {
result := form.GetString("model")
msg := UpdateConfigValue("model", result, result)()
return tea.Tick(100*time.Millisecond, func(t time.Time) tea.Msg {
return msg
})
return UpdateConfigValue("model", result, result)
})}
}

Expand Down
11 changes: 7 additions & 4 deletions ui/form/edit.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,9 @@ import (
)

type editModel struct {
form *huh.Form
title string
form *huh.Form
title string
submitted bool

onSubmit func(form *huh.Form) tea.Cmd
}
Expand All @@ -37,9 +38,11 @@ func (m editModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
cmds = append(cmds, cmd)
}

if m.form.State == huh.StateCompleted {
if m.form.State == huh.StateCompleted && !m.submitted {
m.submitted = true
if m.onSubmit != nil {
cmds = append(cmds, tea.Sequence(m.onSubmit(m.form), event.RemoveStack(m)))
cmds = append(cmds, event.RemoveStack(m), m.onSubmit(m.form))
return m, tea.Sequence(cmds...)
}
}

Expand Down
12 changes: 3 additions & 9 deletions ui/list/delegate.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,40 +56,34 @@ func newItemDelegate(keys *delegateKeyMap, delegateFn *DelegateFunctions) list.D
if !itemSelected || delegateFn.ChooseFn == nil {
return nil
}
cmds = append(cmds, delegateFn.ChooseFn(id))
cmds = append(cmds, m.NewStatusMessage(style.StatusMessageStyle("Chose "+title)))
return tea.Batch(cmds...)
cmds = append(cmds, delegateFn.ChooseFn(id), m.NewStatusMessage(style.StatusMessageStyle("Chose "+title)))

case key.Matches(msg, keys.remove):
if !itemSelected || delegateFn.RemoveFn == nil {
return nil
}
cmds = append(cmds, delegateFn.RemoveFn(id))
index := m.Index()
m.RemoveItem(index)
if len(m.Items()) == 0 {
keys.remove.SetEnabled(false)
}
cmds = append(cmds, delegateFn.RemoveFn(id), m.NewStatusMessage(style.StatusMessageStyle("Deleted "+title)))
return tea.Batch(cmds...)

case key.Matches(msg, keys.edit):
if !itemSelected || delegateFn.EditFn == nil {
return nil
}
cmds = append(cmds, delegateFn.EditFn(id), m.NewStatusMessage(style.StatusMessageStyle("Edited "+title)))
return tea.Batch(cmds...)

case key.Matches(msg, keys.add):
if delegateFn.AddFn == nil {
return nil
}
cmds = append(cmds, delegateFn.AddFn(id), m.NewStatusMessage(style.StatusMessageStyle("Created "+title)))
return tea.Batch(cmds...)
cmds = append(cmds, delegateFn.AddFn(id), m.NewStatusMessage(style.StatusMessageStyle("Created")))
}
}

return nil
return tea.Batch(cmds...)
}

help := []key.Binding{}
Expand Down
20 changes: 19 additions & 1 deletion ui/message/message.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,24 @@ func toItem(message service.ChatMessage) list.Item {

func getDelegateFn(promptConfig *service.PromptConfig) *list.DelegateFunctions {
return &list.DelegateFunctions{
AddFn: func(s string) tea.Cmd {
editModel := form.NewEditModel("Creating message", huh.NewForm(huh.NewGroup(
huh.NewText().Title("Content").Key("content").Lines(10),
huh.NewSelect[service.ROLES]().Key("role").Title("Role").Options(huh.NewOptions[service.ROLES]([]service.ROLES{service.RoleAssistant, service.RoleUser, service.RoleSystem}...)...),
)), func(form *huh.Form) tea.Cmd {
content := form.GetString("content")
role := form.Get("role").(service.ROLES)
msg, err := promptConfig.ChatMessages.AddMessage(content, role)
if err != nil {
return event.Error(err)
}
return func() tea.Msg {
return toItem(*msg)
}
})

return event.AddStack(editModel)
},
ChooseFn: func(s string) tea.Cmd {
message, err := getMessage(promptConfig, s)
if err != nil {
Expand All @@ -83,7 +101,7 @@ func getDelegateFn(promptConfig *service.PromptConfig) *list.DelegateFunctions {
},
RemoveFn: func(s string) tea.Cmd {
id, err := strconv.Atoi(s)
if err == nil {
if err != nil {
return event.Error(err)
}
err = promptConfig.ChatMessages.DeleteMessage(id)
Expand Down

0 comments on commit 9a9d235

Please sign in to comment.