Fix: index picker

This commit is contained in:
Grail Finder
2024-12-07 13:24:59 +03:00
parent 7c4d057994
commit 55010bb704

64
tui.go
View File

@@ -204,30 +204,46 @@ func init() {
pages.RemovePage("getIndex") pages.RemovePage("getIndex")
}) })
indexPickWindow.SetInputCapture(func(event *tcell.EventKey) *tcell.EventKey { indexPickWindow.SetInputCapture(func(event *tcell.EventKey) *tcell.EventKey {
si := indexPickWindow.GetText() switch event.Key() {
selectedIndex, err = strconv.Atoi(si) case tcell.KeyBackspace:
if err != nil { return event
logger.Error("failed to convert provided index", "error", err, "si", si) case tcell.KeyEnter:
} si := indexPickWindow.GetText()
if len(chatBody.Messages) <= selectedIndex && selectedIndex < 0 { selectedIndex, err = strconv.Atoi(si)
logger.Warn("chosen index is out of bounds", "index", selectedIndex) if err != nil {
return nil logger.Error("failed to convert provided index", "error", err, "si", si)
}
m := chatBody.Messages[selectedIndex]
if editMode && event.Key() == tcell.KeyEnter {
pages.AddPage("editArea", editArea, true, true)
editArea.SetText(m.Content, true)
}
if !editMode && event.Key() == tcell.KeyEnter {
if err := copyToClipboard(m.Content); err != nil {
logger.Error("failed to copy to clipboard", "error", err)
} }
notification := fmt.Sprintf("msg '%s' was copied to the clipboard", m.Content[:30]) if len(chatBody.Messages)+1 < selectedIndex || selectedIndex < 0 {
if err := notifyUser("copied", notification); err != nil { msg := "chosen index is out of bounds"
logger.Error("failed to send notification", "error", err) logger.Warn(msg, "index", selectedIndex)
if err := notifyUser("error", msg); err != nil {
logger.Error("failed to send notification", "error", err)
}
pages.RemovePage("getIndex")
return event
} }
m := chatBody.Messages[selectedIndex]
if editMode && event.Key() == tcell.KeyEnter {
pages.AddPage("editArea", editArea, true, true)
editArea.SetText(m.Content, true)
}
if !editMode && event.Key() == tcell.KeyEnter {
if err := copyToClipboard(m.Content); err != nil {
logger.Error("failed to copy to clipboard", "error", err)
}
previewLen := 30
if len(m.Content) < 30 {
previewLen = len(m.Content)
}
notification := fmt.Sprintf("msg '%s' was copied to the clipboard", m.Content[:previewLen])
if err := notifyUser("copied", notification); err != nil {
logger.Error("failed to send notification", "error", err)
}
}
return event
default:
return event
} }
return event
}) })
// //
renameWindow = tview.NewInputField(). renameWindow = tview.NewInputField().
@@ -332,7 +348,11 @@ func init() {
if err := copyToClipboard(m.Content); err != nil { if err := copyToClipboard(m.Content); err != nil {
logger.Error("failed to copy to clipboard", "error", err) logger.Error("failed to copy to clipboard", "error", err)
} }
notification := fmt.Sprintf("msg '%s' was copied to the clipboard", m.Content[:30]) previewLen := 30
if len(m.Content) < 30 {
previewLen = len(m.Content)
}
notification := fmt.Sprintf("msg '%s' was copied to the clipboard", m.Content[:previewLen])
if err := notifyUser("copied", notification); err != nil { if err := notifyUser("copied", notification); err != nil {
logger.Error("failed to send notification", "error", err) logger.Error("failed to send notification", "error", err)
} }