Add better stringification for UI message types for debugging

This commit is contained in:
Tulir Asokan 2019-04-13 00:51:58 +03:00
parent abd21affc4
commit 43a7bdab72
5 changed files with 30 additions and 4 deletions

View File

@ -197,7 +197,7 @@ func (view *MessageView) replaceBuffer(original messages.UIMessage, new messages
} }
if start == -1 { if start == -1 {
debug.Print("Called replaceBuffer() with message that was not in the buffer:", original.ID()) debug.Print("Called replaceBuffer() with message that was not in the buffer:", original)
debug.PrintStack() debug.PrintStack()
view.appendBuffer(new) view.appendBuffer(new)
return return

View File

@ -18,6 +18,7 @@ package messages
import ( import (
"encoding/json" "encoding/json"
"fmt"
"time" "time"
"maunium.net/go/gomuks/config" "maunium.net/go/gomuks/config"
@ -286,3 +287,17 @@ func (msg *BaseMessage) DrawReply(screen mauview.Screen) mauview.Screen {
msg.ReplyTo.Draw(replyScreen) msg.ReplyTo.Draw(replyScreen)
return mauview.NewProxyScreen(screen, 0, replyHeight+2, width, height-replyHeight-2) return mauview.NewProxyScreen(screen, 0, replyHeight+2, width, height-replyHeight-2)
} }
func (msg *BaseMessage) String() string {
return fmt.Sprintf(`&messages.BaseMessage{
ID="%s", TxnID="%s",
Type="%s", Timestamp=%s,
Sender={ID="%s", Name="%s", Color=#%X},
IsService=%t, IsHighlight=%t,
}`,
msg.MsgID, msg.MsgTxnID,
msg.MsgType, msg.MsgTimestamp.String(),
msg.MsgSenderID, msg.MsgSender, msg.MsgSenderColor.Hex(),
msg.MsgIsService, msg.MsgIsHighlight,
)
}

View File

@ -78,7 +78,7 @@ func (be *BaseEntity) PlainText() string {
// String returns a textual representation of this BaseEntity struct. // String returns a textual representation of this BaseEntity struct.
func (be *BaseEntity) String() string { func (be *BaseEntity) String() string {
return fmt.Sprintf(`&html.BaseEntity{Tag="%s", Style=%d, Block=%t, startX=%d, height=%d},`, return fmt.Sprintf(`&html.BaseEntity{Tag="%s", Style=%d, Block=%t, startX=%d, height=%d}`,
be.Tag, be.Style, be.Block, be.startX, be.height) be.Tag, be.Style, be.Block, be.startX, be.height)
} }

View File

@ -84,12 +84,13 @@ func (ce *ContainerEntity) String() string {
return fmt.Sprintf(`&html.ContainerEntity{Base=%s, Indent=%d, Children=[]}`, ce.BaseEntity, ce.Indent) return fmt.Sprintf(`&html.ContainerEntity{Base=%s, Indent=%d, Children=[]}`, ce.BaseEntity, ce.Indent)
} }
var buf strings.Builder var buf strings.Builder
_, _ = fmt.Fprintf(&buf, `&html.ContainerEntity{Base=%s, Indent=%d, Children=[`, ce.BaseEntity, ce.Indent) _, _ = fmt.Fprintf(&buf, `&html.ContainerEntity{Base=%s,
Indent=%d, Children=[`, ce.BaseEntity, ce.Indent)
for _, child := range ce.Children { for _, child := range ce.Children {
buf.WriteString("\n ") buf.WriteString("\n ")
buf.WriteString(strings.Join(strings.Split(strings.TrimRight(child.String(), "\n"), "\n"), "\n ")) buf.WriteString(strings.Join(strings.Split(strings.TrimRight(child.String(), "\n"), "\n"), "\n "))
} }
buf.WriteString("\n]}\n,") buf.WriteString("\n]},")
return buf.String() return buf.String()
} }

View File

@ -17,6 +17,9 @@
package messages package messages
import ( import (
"fmt"
"strings"
"maunium.net/go/mautrix" "maunium.net/go/mautrix"
"maunium.net/go/mauview" "maunium.net/go/mauview"
"maunium.net/go/tcell" "maunium.net/go/tcell"
@ -98,3 +101,10 @@ func (hw *HTMLMessage) PlainText() string {
func (hw *HTMLMessage) NotificationContent() string { func (hw *HTMLMessage) NotificationContent() string {
return hw.Root.PlainText() return hw.Root.PlainText()
} }
func (hw *HTMLMessage) String() string {
return fmt.Sprintf("&messages.HTMLMessage{\n" +
" Base=%s,\n" +
" Root=||\n%s\n" +
"}", strings.ReplaceAll(hw.BaseMessage.String(), "\n", "\n "), hw.Root.String())
}