feat: render forwarded messages (#538)

This commit is contained in:
Ted 2025-05-23 23:12:57 +01:00 • committed by GitHub
parent 662fbf4c6a
commit 5efbed2d8c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 26 additions and 3 deletions

View file

@ -126,7 +126,11 @@ func (mt *MessagesText) createMsg(msg discord.Message) {
switch msg.Type {
case discord.DefaultMessage:
mt.createDefaultMsg(msg)
if msg.Reference != nil && msg.Reference.Type == discord.MessageReferenceTypeForward {
mt.createForwardedMsg(msg)
} else {
mt.createDefaultMsg(msg)
}
case discord.InlinedReplyMessage:
mt.createReplyMsg(msg)
@ -141,9 +145,12 @@ func (mt *MessagesText) createMsg(msg discord.Message) {
fmt.Fprintln(mt)
}
func (mt *MessagesText) formatTimestamp(ts discord.Timestamp) string {
return ts.Time().In(time.Local).Format(mt.cfg.Timestamps.Format)
}
func (mt *MessagesText) drawTimestamps(ts discord.Timestamp) {
time := ts.Time().In(time.Local).Format(mt.cfg.Timestamps.Format)
fmt.Fprintf(mt, "[::d]%s[::D] ", time)
fmt.Fprintf(mt, "[::d]%s[::D] ", mt.formatTimestamp(ts))
}
func (mt *MessagesText) drawAuthor(msg discord.Message) {
@ -158,6 +165,12 @@ func (mt *MessagesText) drawContent(msg discord.Message) {
markdown.DefaultRenderer.Render(mt, c, ast)
}
func (mt *MessagesText) drawSnapshotContent(msg discord.MessageSnapshotMessage) {
c := []byte(tview.Escape(msg.Content))
// discordmd doesn't support MessageSnapshotMessage, so we just use write it as is. todo?
mt.Write(c)
}
func (mt *MessagesText) createDefaultMsg(msg discord.Message) {
if mt.cfg.Timestamps.Enabled {
mt.drawTimestamps(msg.Timestamp)
@ -206,6 +219,14 @@ func (mt *MessagesText) authorName(user discord.User, gID discord.GuildID) strin
return name
}
func (mt *MessagesText) createForwardedMsg(msg discord.Message) {
mt.drawTimestamps(msg.Timestamp)
mt.drawAuthor(msg)
fmt.Fprintf(mt, "[::d]%s [::-]", mt.cfg.Theme.MessagesText.ForwardedIndicator)
mt.drawSnapshotContent(msg.MessageSnapshots[0].Message)
fmt.Fprintf(mt, " [::d](%s)[-:-:-] ", mt.formatTimestamp(msg.MessageSnapshots[0].Message.Timestamp))
}
func (mt *MessagesText) authorColor(user discord.User, gID discord.GuildID) string {
color := mt.cfg.Theme.MessagesText.AuthorColor
if app.cfg.Theme.MessagesText.ShowUsernameColors && gID.IsValid() {

View file

@ -59,6 +59,7 @@ type (
ShowUsernameColors bool `toml:"show_user_colors"`
ReplyIndicator string `toml:"reply_indicator"`
ForwardedIndicator string `toml:"forwarded_indicator"`
AuthorColor string `toml:"author_color"`
ContentColor string `toml:"content_color"`
@ -99,6 +100,7 @@ func defaultTheme() Theme {
ShowUsernameColors: true,
ReplyIndicator: ">",
ForwardedIndicator: "<",
AuthorColor: "aqua",
ContentColor: tview.Styles.PrimaryTextColor.String(),