diff options
| author | Grail Finder <wohilas@gmail.com> | 2026-03-01 16:21:18 +0300 |
|---|---|---|
| committer | Grail Finder <wohilas@gmail.com> | 2026-03-01 16:21:18 +0300 |
| commit | 742f1ca838f97cf7deaae624d93f307632863460 (patch) | |
| tree | 633e258840e99bfecbcabdd49d57c8d608bcd135 | |
| parent | e36bade353f04ab614a45ffb11e1610565234100 (diff) | |
Enha: modal affirmation popup on sending empty msg
| -rw-r--r-- | tui.go | 39 |
1 files changed, 39 insertions, 0 deletions
@@ -35,6 +35,8 @@ var ( renameWindow *tview.InputField roleEditWindow *tview.InputField shellInput *tview.InputField + confirmModal *tview.Modal + confirmPageName = "confirm" fullscreenMode bool positionVisible bool = true scrollToEndEnabled bool = true @@ -195,6 +197,40 @@ func init() { } return event }) + confirmModal = tview.NewModal(). + SetText("You are trying to send an empty message.\nIt makes sense if the last message in the chat is from you.\nAre you sure?"). + AddButtons([]string{"Yes", "No"}). + SetButtonBackgroundColor(tcell.ColorBlack). + SetButtonTextColor(tcell.ColorWhite). + SetDoneFunc(func(buttonIndex int, buttonLabel string) { + if buttonLabel == "Yes" { + persona := cfg.UserRole + if cfg.WriteNextMsgAs != "" { + persona = cfg.WriteNextMsgAs + } + chatRoundChan <- &models.ChatRoundReq{Role: persona, UserMsg: ""} + } // In both Yes and No, go back to the main page + pages.SwitchToPage("main") // or whatever your main page is named + }) + confirmModal.SetInputCapture(func(event *tcell.EventKey) *tcell.EventKey { + switch event.Key() { + case tcell.KeyRune: + switch event.Rune() { + case 'y', 'Y': + persona := cfg.UserRole + if cfg.WriteNextMsgAs != "" { + persona = cfg.WriteNextMsgAs + } + chatRoundChan <- &models.ChatRoundReq{Role: persona, UserMsg: ""} + pages.SwitchToPage("main") + return nil + case 'n', 'N', 'x', 'X': + pages.SwitchToPage("main") + return nil + } + } + return event + }) textArea = tview.NewTextArea(). SetPlaceholder("input is multiline; press <Enter> to start the next line;\npress <Esc> to send the message.") textArea.SetBorder(true).SetTitle("input") @@ -1028,6 +1064,9 @@ func init() { textView.ScrollToEnd() } colorText() + } else { + pages.AddPage(confirmPageName, confirmModal, true, true) + return nil } // go chatRound(msgText, persona, textView, false, false) chatRoundChan <- &models.ChatRoundReq{Role: persona, UserMsg: msgText} |
