From 4b97caf3298272b31bdadaf6253f1ac74926ec45 Mon Sep 17 00:00:00 2001 From: ayn2op Date: Wed, 4 Jan 2023 20:55:02 +0530 Subject: [PATCH] Assign GuildsTree#selectedMessage when a message is highlighted --- main.go | 10 +++++----- messages_text.go | 24 ++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/main.go b/main.go index e15f23b..3bae4b4 100644 --- a/main.go +++ b/main.go @@ -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) diff --git a/messages_text.go b/messages_text.go index 3ff8a49..3e4c033 100644 --- a/messages_text.go +++ b/messages_text.go @@ -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 +}