Assign GuildsTree#selectedMessage when a message is highlighted

This commit is contained in:
ayn2op 2023-01-04 20:55:02 +05:30
parent 8fa861d59e
commit 4b97caf329
2 changed files with 29 additions and 5 deletions

10
main.go
View file

@ -35,16 +35,16 @@ func main() {
log.Fatal(err)
}
// Initialize UI
guildsTree = newGuildsTree()
messagesText = newMessagesText()
messageInput = newMessageInput()
discordState = newState(token)
if err = discordState.Open(context.Background()); err != nil {
log.Fatal(err)
}
// Initialize UI
guildsTree = newGuildsTree()
messagesText = newMessagesText()
messageInput = newMessageInput()
right := tview.NewFlex()
right.SetDirection(tview.FlexRow)
right.AddItem(messagesText, 0, 1, false)

View file

@ -2,6 +2,7 @@ package main
import (
"fmt"
"log"
"time"
"github.com/diamondburned/arikawa/v3/discord"
@ -10,6 +11,8 @@ import (
type MessagesText struct {
*tview.TextView
selectedMessage *discord.Message
}
func newMessagesText() *MessagesText {
@ -21,6 +24,7 @@ func newMessagesText() *MessagesText {
mt.SetRegions(true)
mt.SetWordWrap(true)
mt.ScrollToEnd()
mt.SetHighlightedFunc(mt.onHighlighted)
mt.SetBorder(cfg.Theme.MessagesText.Border)
@ -80,3 +84,23 @@ func (mt *MessagesText) newTimestamp(m *discord.Message) {
func (mt *MessagesText) newContent(m *discord.Message) {
fmt.Fprint(mt, tview.Escape(m.Content))
}
func (mt *MessagesText) onHighlighted(added, removed, remaining []string) {
if len(added) == 0 {
return
}
sf, err := discord.ParseSnowflake(added[0])
if err != nil {
log.Println(err)
return
}
m, err := discordState.Cabinet.Message(guildsTree.selectedChannel.ID, discord.MessageID(sf))
if err != nil {
log.Println(err)
return
}
mt.selectedMessage = m
}