Update to latest gomatrix. Things are broken
This commit is contained in:
@ -22,6 +22,7 @@ import (
|
||||
"regexp"
|
||||
"strings"
|
||||
|
||||
"github.com/lucasb-eyer/go-colorful"
|
||||
"golang.org/x/net/html"
|
||||
"maunium.net/go/gomatrix"
|
||||
"maunium.net/go/gomuks/matrix/rooms"
|
||||
@ -29,7 +30,6 @@ import (
|
||||
"maunium.net/go/gomuks/ui/widget"
|
||||
"maunium.net/go/tcell"
|
||||
"strconv"
|
||||
"github.com/lucasb-eyer/go-colorful"
|
||||
)
|
||||
|
||||
var matrixToURL = regexp.MustCompile("^(?:https?://)?(?:www\\.)?matrix\\.to/#/([#@!].*)")
|
||||
@ -173,7 +173,7 @@ func (parser *htmlParser) linkToTString(node *html.Node, stripLinebreak bool) ts
|
||||
pillTarget := match[1]
|
||||
if pillTarget[0] == '@' {
|
||||
if member := parser.room.GetMember(pillTarget); member != nil {
|
||||
return tstring.NewColorTString(member.DisplayName, widget.GetHashColor(member.UserID))
|
||||
return tstring.NewColorTString(member.Displayname, widget.GetHashColor(pillTarget))
|
||||
}
|
||||
}
|
||||
return tstring.NewTString(pillTarget)
|
||||
@ -271,14 +271,13 @@ func (parser *htmlParser) Parse(htmlData string) tstring.TString {
|
||||
|
||||
// ParseHTMLMessage parses a HTML-formatted Matrix event into a UIMessage.
|
||||
func ParseHTMLMessage(room *rooms.Room, evt *gomatrix.Event, senderDisplayname string) tstring.TString {
|
||||
htmlData, _ := evt.Content["formatted_body"].(string)
|
||||
htmlData := evt.Content.FormattedBody
|
||||
htmlData = strings.Replace(htmlData, "\t", " ", -1)
|
||||
|
||||
parser := htmlParser{room}
|
||||
str := parser.Parse(htmlData)
|
||||
|
||||
msgtype, _ := evt.Content["msgtype"].(string)
|
||||
if msgtype == "m.emote" {
|
||||
if evt.Content.MsgType == gomatrix.MsgEmote {
|
||||
str = tstring.Join([]tstring.TString{
|
||||
tstring.NewTString("* "),
|
||||
tstring.NewColorTString(senderDisplayname, widget.GetHashColor(evt.Sender)),
|
||||
|
@ -33,9 +33,9 @@ import (
|
||||
|
||||
func ParseEvent(matrix ifc.MatrixContainer, room *rooms.Room, evt *gomatrix.Event) messages.UIMessage {
|
||||
switch evt.Type {
|
||||
case "m.room.message":
|
||||
case gomatrix.EventMessage:
|
||||
return ParseMessage(matrix, room, evt)
|
||||
case "m.room.member":
|
||||
case gomatrix.StateMember:
|
||||
return ParseMembershipEvent(room, evt)
|
||||
}
|
||||
return nil
|
||||
@ -53,32 +53,28 @@ func ParseMessage(matrix ifc.MatrixContainer, room *rooms.Room, evt *gomatrix.Ev
|
||||
displayname := evt.Sender
|
||||
member := room.GetMember(evt.Sender)
|
||||
if member != nil {
|
||||
displayname = member.DisplayName
|
||||
displayname = member.Displayname
|
||||
}
|
||||
msgtype, _ := evt.Content["msgtype"].(string)
|
||||
text, _ := evt.Content["body"].(string)
|
||||
ts := unixToTime(evt.Timestamp)
|
||||
switch msgtype {
|
||||
switch evt.Content.MsgType {
|
||||
case "m.text", "m.notice", "m.emote":
|
||||
format, hasFormat := evt.Content["format"].(string)
|
||||
if hasFormat && format == "org.matrix.custom.html" {
|
||||
if evt.Content.Format == gomatrix.FormatHTML {
|
||||
text := ParseHTMLMessage(room, evt, displayname)
|
||||
return messages.NewExpandedTextMessage(evt.ID, evt.Sender, displayname, msgtype, text, ts)
|
||||
return messages.NewExpandedTextMessage(evt.ID, evt.Sender, displayname, evt.Content.MsgType, text, ts)
|
||||
}
|
||||
text = strings.Replace(text, "\t", " ", -1)
|
||||
return messages.NewTextMessage(evt.ID, evt.Sender, displayname, msgtype, text, ts)
|
||||
evt.Content.Body = strings.Replace(evt.Content.Body, "\t", " ", -1)
|
||||
return messages.NewTextMessage(evt.ID, evt.Sender, displayname, evt.Content.MsgType, evt.Content.Body, ts)
|
||||
case "m.image":
|
||||
url, _ := evt.Content["url"].(string)
|
||||
data, hs, id, err := matrix.Download(url)
|
||||
data, hs, id, err := matrix.Download(evt.Content.URL)
|
||||
if err != nil {
|
||||
debug.Printf("Failed to download %s: %v", url, err)
|
||||
debug.Printf("Failed to download %s: %v", evt.Content.URL, err)
|
||||
}
|
||||
return messages.NewImageMessage(matrix, evt.ID, evt.Sender, displayname, msgtype, text, hs, id, data, ts)
|
||||
return messages.NewImageMessage(matrix, evt.ID, evt.Sender, displayname, evt.Content.MsgType, evt.Content.Body, hs, id, data, ts)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func getMembershipChangeMessage(evt *gomatrix.Event, membership, prevMembership, senderDisplayname, displayname, prevDisplayname string) (sender string, text tstring.TString) {
|
||||
func getMembershipChangeMessage(evt *gomatrix.Event, membership, prevMembership gomatrix.Membership, senderDisplayname, displayname, prevDisplayname string) (sender string, text tstring.TString) {
|
||||
switch membership {
|
||||
case "invite":
|
||||
sender = "---"
|
||||
@ -92,12 +88,11 @@ func getMembershipChangeMessage(evt *gomatrix.Event, membership, prevMembership,
|
||||
case "leave":
|
||||
sender = "<--"
|
||||
if evt.Sender != *evt.StateKey {
|
||||
if prevMembership == "ban" {
|
||||
if prevMembership == gomatrix.MembershipBan {
|
||||
text = tstring.NewColorTString(fmt.Sprintf("%s unbanned %s", senderDisplayname, displayname), tcell.ColorGreen)
|
||||
text.Colorize(len(senderDisplayname)+len(" unbanned "), len(displayname), widget.GetHashColor(*evt.StateKey))
|
||||
} else {
|
||||
reason, _ := evt.Content["reason"].(string)
|
||||
text = tstring.NewColorTString(fmt.Sprintf("%s kicked %s: %s", senderDisplayname, displayname, reason), tcell.ColorRed)
|
||||
text = tstring.NewColorTString(fmt.Sprintf("%s kicked %s: %s", senderDisplayname, displayname, evt.Content.Reason), tcell.ColorRed)
|
||||
text.Colorize(len(senderDisplayname)+len(" kicked "), len(displayname), widget.GetHashColor(*evt.StateKey))
|
||||
}
|
||||
text.Colorize(0, len(senderDisplayname), widget.GetHashColor(evt.Sender))
|
||||
@ -109,8 +104,7 @@ func getMembershipChangeMessage(evt *gomatrix.Event, membership, prevMembership,
|
||||
text.Colorize(0, len(displayname), widget.GetHashColor(*evt.StateKey))
|
||||
}
|
||||
case "ban":
|
||||
reason, _ := evt.Content["reason"].(string)
|
||||
text = tstring.NewColorTString(fmt.Sprintf("%s banned %s: %s", senderDisplayname, displayname, reason), tcell.ColorRed)
|
||||
text = tstring.NewColorTString(fmt.Sprintf("%s banned %s: %s", senderDisplayname, displayname, evt.Content.Reason), tcell.ColorRed)
|
||||
text.Colorize(len(senderDisplayname)+len(" banned "), len(displayname), widget.GetHashColor(*evt.StateKey))
|
||||
text.Colorize(0, len(senderDisplayname), widget.GetHashColor(evt.Sender))
|
||||
}
|
||||
@ -121,20 +115,20 @@ func getMembershipEventContent(room *rooms.Room, evt *gomatrix.Event) (sender st
|
||||
member := room.GetMember(evt.Sender)
|
||||
senderDisplayname := evt.Sender
|
||||
if member != nil {
|
||||
senderDisplayname = member.DisplayName
|
||||
senderDisplayname = member.Displayname
|
||||
}
|
||||
|
||||
membership, _ := evt.Content["membership"].(string)
|
||||
displayname, _ := evt.Content["displayname"].(string)
|
||||
membership := evt.Content.Membership
|
||||
displayname := evt.Content.Displayname
|
||||
if len(displayname) == 0 {
|
||||
displayname = *evt.StateKey
|
||||
}
|
||||
|
||||
prevMembership := "leave"
|
||||
prevMembership := gomatrix.MembershipLeave
|
||||
prevDisplayname := *evt.StateKey
|
||||
if evt.Unsigned.PrevContent != nil {
|
||||
prevMembership, _ = evt.Unsigned.PrevContent["membership"].(string)
|
||||
prevDisplayname, _ = evt.Unsigned.PrevContent["displayname"].(string)
|
||||
prevMembership = evt.Unsigned.PrevContent.Membership
|
||||
prevDisplayname = evt.Unsigned.PrevContent.Displayname
|
||||
if len(prevDisplayname) == 0 {
|
||||
prevDisplayname = *evt.StateKey
|
||||
}
|
||||
|
Reference in New Issue
Block a user