Rewrite
This commit is contained in:
parent
9f32821220
commit
63243cc97e
3 changed files with 28 additions and 26 deletions
|
|
@ -1,7 +1,6 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"log"
|
"log"
|
||||||
"sort"
|
"sort"
|
||||||
|
|
||||||
|
|
@ -12,7 +11,8 @@ import (
|
||||||
type GuildsTree struct {
|
type GuildsTree struct {
|
||||||
*tview.TreeView
|
*tview.TreeView
|
||||||
|
|
||||||
root *tview.TreeNode
|
root *tview.TreeNode
|
||||||
|
selectedChannel *discord.Channel
|
||||||
}
|
}
|
||||||
|
|
||||||
func newGuildsTree() *GuildsTree {
|
func newGuildsTree() *GuildsTree {
|
||||||
|
|
@ -135,6 +135,9 @@ func (gt *GuildsTree) onSelected(n *tview.TreeNode) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gt.selectedChannel = c
|
||||||
|
messagesText.SetTitle(gt.channelToString(*c))
|
||||||
|
|
||||||
ms, err := discordState.Messages(ref, cfg.MessagesLimit)
|
ms, err := discordState.Messages(ref, cfg.MessagesLimit)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
|
|
@ -143,12 +146,11 @@ func (gt *GuildsTree) onSelected(n *tview.TreeNode) {
|
||||||
|
|
||||||
for i := len(ms) - 1; i >= 0; i-- {
|
for i := len(ms) - 1; i >= 0; i-- {
|
||||||
if messagesText.newMessage(&ms[i]); err != nil {
|
if messagesText.newMessage(&ms[i]); err != nil {
|
||||||
fmt.Println(err)
|
log.Println(err)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
messagesText.SetTitle(gt.channelToString(*c))
|
|
||||||
app.SetFocus(messagesText)
|
app.SetFocus(messagesText)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"fmt"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/diamondburned/arikawa/v3/discord"
|
"github.com/diamondburned/arikawa/v3/discord"
|
||||||
|
|
@ -10,8 +10,6 @@ import (
|
||||||
|
|
||||||
type MessagesText struct {
|
type MessagesText struct {
|
||||||
*tview.TextView
|
*tview.TextView
|
||||||
|
|
||||||
buffer bytes.Buffer
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func newMessagesText() *MessagesText {
|
func newMessagesText() *MessagesText {
|
||||||
|
|
@ -36,20 +34,18 @@ func (mt *MessagesText) newMessage(m *discord.Message) error {
|
||||||
case discord.DefaultMessage, discord.InlinedReplyMessage:
|
case discord.DefaultMessage, discord.InlinedReplyMessage:
|
||||||
// Region tags are square brackets that contain a region ID in double quotes
|
// Region tags are square brackets that contain a region ID in double quotes
|
||||||
// https://pkg.go.dev/github.com/rivo/tview#hdr-Regions_and_Highlights
|
// https://pkg.go.dev/github.com/rivo/tview#hdr-Regions_and_Highlights
|
||||||
mt.buffer.WriteString(`["`)
|
fmt.Fprintf(mt, `["%s"]`, m.ID)
|
||||||
mt.buffer.WriteString(m.ID.String())
|
|
||||||
mt.buffer.WriteString(`"]`)
|
|
||||||
|
|
||||||
if m.ReferencedMessage != nil {
|
if m.ReferencedMessage != nil {
|
||||||
mt.buffer.WriteString("> [::d]")
|
fmt.Fprint(mt, "> [::d]")
|
||||||
|
|
||||||
// Author
|
// Author
|
||||||
mt.newAuthor(m.ReferencedMessage)
|
mt.newAuthor(m.ReferencedMessage)
|
||||||
// Content
|
// Content
|
||||||
mt.newContent(m.ReferencedMessage)
|
mt.newContent(m.ReferencedMessage)
|
||||||
|
|
||||||
mt.buffer.WriteString("[::-]")
|
fmt.Fprint(mt, "[::-]")
|
||||||
mt.buffer.WriteByte('\n')
|
fmt.Fprintln(mt)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Author
|
// Author
|
||||||
|
|
@ -57,31 +53,25 @@ func (mt *MessagesText) newMessage(m *discord.Message) error {
|
||||||
// Timestamps
|
// Timestamps
|
||||||
mt.newTimestamp(m)
|
mt.newTimestamp(m)
|
||||||
// Content
|
// Content
|
||||||
mt.buffer.WriteByte('\n')
|
fmt.Fprintln(mt)
|
||||||
mt.newContent(m)
|
mt.newContent(m)
|
||||||
|
|
||||||
// Tags with no region ID ([""]) don't start new regions. They can therefore be used to mark the end of a region.
|
// Tags with no region ID ([""]) don't start new regions. They can therefore be used to mark the end of a region.
|
||||||
mt.buffer.WriteString(`[""]`)
|
fmt.Fprint(mt, `[""]`)
|
||||||
}
|
}
|
||||||
|
|
||||||
mt.buffer.WriteString("\n\n")
|
fmt.Fprint(mt, "\n\n")
|
||||||
|
return nil
|
||||||
_, err := mt.buffer.WriteTo(mt)
|
|
||||||
return err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (mt *MessagesText) newAuthor(m *discord.Message) {
|
func (mt *MessagesText) newAuthor(m *discord.Message) {
|
||||||
mt.buffer.WriteString("[blue]")
|
fmt.Fprintf(mt, "[blue]%s[-] ", m.Author.Username)
|
||||||
mt.buffer.WriteString(m.Author.Username)
|
|
||||||
mt.buffer.WriteString("[-] ")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (mt *MessagesText) newTimestamp(m *discord.Message) {
|
func (mt *MessagesText) newTimestamp(m *discord.Message) {
|
||||||
mt.buffer.WriteString("[::d]")
|
fmt.Fprintf(mt, "[::d]%s[::-]", m.Timestamp.Format(time.Kitchen))
|
||||||
mt.buffer.WriteString(m.Timestamp.Format(time.Kitchen))
|
|
||||||
mt.buffer.WriteString("[-:-:-] ")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (mt *MessagesText) newContent(m *discord.Message) {
|
func (mt *MessagesText) newContent(m *discord.Message) {
|
||||||
mt.buffer.WriteString(tview.Escape(m.Content))
|
fmt.Fprint(mt, tview.Escape(m.Content))
|
||||||
}
|
}
|
||||||
|
|
|
||||||
10
state.go
10
state.go
|
|
@ -18,6 +18,7 @@ func newState(token string) *State {
|
||||||
}
|
}
|
||||||
|
|
||||||
s.AddHandler(s.onReady)
|
s.AddHandler(s.onReady)
|
||||||
|
s.AddHandler(s.onMessageCreate)
|
||||||
|
|
||||||
return s
|
return s
|
||||||
}
|
}
|
||||||
|
|
@ -49,3 +50,12 @@ func (s *State) onReady(r *gateway.ReadyEvent) {
|
||||||
guildsTree.SetCurrentNode(guildsTree.root)
|
guildsTree.SetCurrentNode(guildsTree.root)
|
||||||
app.SetFocus(guildsTree)
|
app.SetFocus(guildsTree)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *State) onMessageCreate(m *gateway.MessageCreateEvent) {
|
||||||
|
if guildsTree.selectedChannel != nil {
|
||||||
|
if err := messagesText.newMessage(&m.Message); err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue