summaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
authorGrail Finder <wohilas@gmail.com>2024-11-20 08:55:56 +0300
committerGrail Finder <wohilas@gmail.com>2024-11-20 08:55:56 +0300
commit74669b58fe7b58b3d2fd4ad88c03890bc53a7a1a (patch)
treebce5129b5e403d8377cf194a7a93a663ed1de6fa /main.go
parentaaf056663628f15bb6e4f23c899b6fd31bac5bf7 (diff)
Feat: copy msg to clipboard; empty text to cancel edit; notify
Diffstat (limited to 'main.go')
-rw-r--r--main.go45
1 files changed, 30 insertions, 15 deletions
diff --git a/main.go b/main.go
index 9415f1a..8e20381 100644
--- a/main.go
+++ b/main.go
@@ -102,6 +102,12 @@ func main() {
editArea.SetInputCapture(func(event *tcell.EventKey) *tcell.EventKey {
if event.Key() == tcell.KeyEscape && editMode {
editedMsg := editArea.GetText()
+ if editedMsg == "" {
+ notifyUser("edit", "no edit provided")
+ pages.RemovePage("editArea")
+ editMode = false
+ return nil
+ }
chatBody.Messages[selectedIndex].Content = editedMsg
// change textarea
textView.SetText(chatToText(showSystemMsgs))
@@ -120,22 +126,25 @@ func main() {
return
})
indexPickWindow.SetInputCapture(func(event *tcell.EventKey) *tcell.EventKey {
- if event.Key() == tcell.KeyEnter {
- si := indexPickWindow.GetText()
- selectedIndex, err = strconv.Atoi(si)
- if err != nil {
- logger.Error("failed to convert provided index", "error", err, "si", si)
- }
- if len(chatBody.Messages) <= selectedIndex && selectedIndex < 0 {
- logger.Warn("chosen index is out of bounds", "index", selectedIndex)
- return nil
- }
+ si := indexPickWindow.GetText()
+ selectedIndex, err = strconv.Atoi(si)
+ if err != nil {
+ logger.Error("failed to convert provided index", "error", err, "si", si)
+ }
+ if len(chatBody.Messages) <= selectedIndex && selectedIndex < 0 {
+ logger.Warn("chosen index is out of bounds", "index", selectedIndex)
+ return nil
+ }
+ m := chatBody.Messages[selectedIndex]
+ if editMode && event.Key() == tcell.KeyEnter {
pages.AddPage("editArea", editArea, true, true)
- m := chatBody.Messages[selectedIndex]
- // editArea.SetText(m.ToText(selectedIndex), true)
editArea.SetText(m.Content, true)
- editMode = true
- // editArea.SetText(si, true)
+ }
+ if !editMode && event.Key() == tcell.KeyEnter {
+ // TODO: add notification that text was copied
+ copyToClipboard(m.Content)
+ notification := fmt.Sprintf("msg '%s' was copied to the clipboard", m.Content[:30])
+ notifyUser("copied", notification)
}
return event
})
@@ -172,8 +181,8 @@ func main() {
}
if event.Key() == tcell.KeyF4 {
// edit msg
- pages.AddPage("getIndex", indexPickWindow, true, true)
editMode = true
+ pages.AddPage("getIndex", indexPickWindow, true, true)
return nil
}
if event.Key() == tcell.KeyF5 {
@@ -186,6 +195,12 @@ func main() {
botRespMode = false
return nil
}
+ if event.Key() == tcell.KeyF7 {
+ // copy msg to clipboard
+ editMode = false
+ pages.AddPage("getIndex", indexPickWindow, true, true)
+ return nil
+ }
// cannot send msg in editMode or botRespMode
if event.Key() == tcell.KeyEscape && !editMode && !botRespMode {
fromRow, fromColumn, _, _ := textArea.GetCursor()