浏览代码

Assign GuildsTree#selectedMessage when a message is highlighted

ayn2op 3 年之前
父节点
当前提交
4b97caf329
共有 2 个文件被更改,包括 29 次插入5 次删除
  1. 5 5
      main.go
  2. 24 0
      messages_text.go

+ 5 - 5
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)

+ 24 - 0
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
+}