Fix: index picker
This commit is contained in:
64
tui.go
64
tui.go
@@ -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)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user