discordo/message_input.go
2023-01-02 14:04:36 +05:30

47 lines
922 B
Go

package main
import (
"github.com/gdamore/tcell/v2"
"github.com/rivo/tview"
)
type MessageInput struct {
*tview.InputField
}
func newMessageInput() *MessageInput {
mi := &MessageInput{
InputField: tview.NewInputField(),
}
mi.SetDoneFunc(mi.onDone)
mi.SetFieldBackgroundColor(tview.Styles.PrimitiveBackgroundColor)
mi.SetBorder(cfg.Theme.MessageInput.Border)
padding := cfg.Theme.MessageInput.BorderPadding
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) sendMessage() error {
text := mi.GetText()
_, err := discordState.SendMessage(guildsTree.selectedChannel.ID, text)
if err != nil {
return err
}
// Reset the message input.
mi.SetText("")
return nil
}