Add support for sending Markdown messages
This commit is contained in:
@ -37,6 +37,9 @@ var matrixToURL = regexp.MustCompile("^(?:https?://)?(?:www\\.)?matrix\\.to/#/([
|
||||
type MatrixHTMLProcessor struct {
|
||||
text tstring.TString
|
||||
|
||||
sender string
|
||||
msgtype string
|
||||
|
||||
indent string
|
||||
listType string
|
||||
lineIsNew bool
|
||||
@ -52,7 +55,11 @@ func (parser *MatrixHTMLProcessor) newline() {
|
||||
}
|
||||
}
|
||||
|
||||
func (parser *MatrixHTMLProcessor) Preprocess() {}
|
||||
func (parser *MatrixHTMLProcessor) Preprocess() {
|
||||
if parser.msgtype == "m.emote" {
|
||||
parser.text = tstring.NewColorTString(fmt.Sprintf("* %s ", parser.sender), widget.GetHashColor(parser.sender))
|
||||
}
|
||||
}
|
||||
|
||||
func (parser *MatrixHTMLProcessor) HandleText(text string) {
|
||||
style := tcell.StyleDefault
|
||||
@ -170,12 +177,15 @@ func (parser *MatrixHTMLProcessor) Postprocess() {
|
||||
}
|
||||
|
||||
// ParseHTMLMessage parses a HTML-formatted Matrix event into a UIMessage.
|
||||
func ParseHTMLMessage(room *rooms.Room, evt *gomatrix.Event) tstring.TString {
|
||||
func ParseHTMLMessage(room *rooms.Room, evt *gomatrix.Event, senderDisplayname string) tstring.TString {
|
||||
htmlData, _ := evt.Content["formatted_body"].(string)
|
||||
msgtype, _ := evt.Content["msgtype"].(string)
|
||||
|
||||
processor := &MatrixHTMLProcessor{
|
||||
room: room,
|
||||
text: tstring.NewBlankTString(),
|
||||
msgtype: msgtype,
|
||||
sender: senderDisplayname,
|
||||
indent: "",
|
||||
listType: "",
|
||||
lineIsNew: true,
|
||||
|
@ -60,7 +60,7 @@ func ParseMessage(gmx ifc.Gomuks, room *rooms.Room, evt *gomatrix.Event) message
|
||||
case "m.text", "m.notice", "m.emote":
|
||||
format, hasFormat := evt.Content["format"].(string)
|
||||
if hasFormat && format == "org.matrix.custom.html" {
|
||||
text := ParseHTMLMessage(room, evt)
|
||||
text := ParseHTMLMessage(room, evt, displayname)
|
||||
return messages.NewExpandedTextMessage(evt.ID, evt.Sender, displayname, msgtype, text, ts)
|
||||
} else {
|
||||
text, _ := evt.Content["body"].(string)
|
||||
|
Reference in New Issue
Block a user