diff --git a/config.go b/config.go index 89466d0..f00a440 100644 --- a/config.go +++ b/config.go @@ -20,8 +20,14 @@ type ( ReplyMention string `yaml:"reply_mention"` } + MessageInputKeysConfig struct { + CommonKeysConfig `yaml:",inline"` + Send string `yaml:"send"` + } + KeysConfig struct { MessagesText MessagesTextKeysConfig `yaml:"messages_text"` + MessageInput MessageInputKeysConfig `yaml:"message_input"` } ) @@ -91,6 +97,10 @@ func newConfig() (*Config, error) { Reply: "Rune[r]", ReplyMention: "Rune[R]", }, + MessageInput: MessageInputKeysConfig{ + CommonKeysConfig: commonKeys, + Send: "Enter", + }, }, Theme: ThemeConfig{ diff --git a/guilds_tree.go b/guilds_tree.go index 895d451..ed06006 100644 --- a/guilds_tree.go +++ b/guilds_tree.go @@ -28,9 +28,11 @@ func newGuildsTree() *GuildsTree { gt.SetTopLevel(1) gt.SetSelectedFunc(gt.onSelected) - gt.SetBorder(cfg.Theme.GuildsTree.Border) + gt.SetTitle("Guilds") + gt.SetTitleAlign(tview.AlignLeft) padding := cfg.Theme.GuildsTree.BorderPadding + gt.SetBorder(cfg.Theme.GuildsTree.Border) gt.SetBorderPadding(padding[0], padding[1], padding[2], padding[3]) return gt diff --git a/message_input.go b/message_input.go index 0e5530f..a3266e0 100644 --- a/message_input.go +++ b/message_input.go @@ -1,6 +1,8 @@ package main import ( + "log" + "github.com/gdamore/tcell/v2" "github.com/rivo/tview" ) @@ -14,35 +16,36 @@ func newMessageInput() *MessageInput { InputField: tview.NewInputField(), } - mi.SetDoneFunc(mi.onDone) + mi.SetFieldBackgroundColor(tview.Styles.PrimitiveBackgroundColor) + mi.SetInputCapture(mi.onInputCapture) mi.SetTitleAlign(tview.AlignLeft) - mi.SetFieldBackgroundColor(tview.Styles.PrimitiveBackgroundColor) - mi.SetBorder(cfg.Theme.MessageInput.Border) + padding := cfg.Theme.MessageInput.BorderPadding + mi.SetBorder(cfg.Theme.MessageInput.Border) mi.SetBorderPadding(padding[0], padding[1], padding[2], padding[3]) return mi } -func (mi *MessageInput) onDone(key tcell.Key) { - switch key { - case tcell.KeyEnter: - go mi.sendMessage() - case tcell.KeyEscape: - // Reset the message input. - mi.SetText("") +func (mi *MessageInput) onInputCapture(event *tcell.EventKey) *tcell.EventKey { + switch event.Name() { + case cfg.Keys.MessageInput.Send: + mi.sendAction() + return nil } + + return event } -func (mi *MessageInput) sendMessage() error { +func (mi *MessageInput) sendAction() { text := mi.GetText() _, err := discordState.SendMessage(guildsTree.selectedChannel.ID, text) if err != nil { - return err + log.Println(err) + return } // Reset the message input. mi.SetText("") - return nil } diff --git a/messages_text.go b/messages_text.go index 68208cd..8b28983 100644 --- a/messages_text.go +++ b/messages_text.go @@ -29,10 +29,11 @@ func newMessagesText() *MessagesText { mt.SetHighlightedFunc(mt.onHighlighted) mt.SetInputCapture(mt.onInputCapture) + mt.SetTitle("Messages") mt.SetTitleAlign(tview.AlignLeft) - mt.SetBorder(cfg.Theme.MessagesText.Border) padding := cfg.Theme.MessagesText.BorderPadding + mt.SetBorder(cfg.Theme.MessagesText.Border) mt.SetBorderPadding(padding[0], padding[1], padding[2], padding[3]) return mt