diff --git a/formatting.go b/formatting.go
index 8940f3e..54bad50 100644
--- a/formatting.go
+++ b/formatting.go
@@ -122,7 +122,7 @@ func (formatter *Formatter) ParseSkype(content *event.MessageEventContent, RoomM
// parse quote message(set reply)
content.Body = strings.ReplaceAll(content.Body, "\n", "")
- quoteReg := regexp.MustCompile(`]+\bauthor="([^"]+)" authorname="([^"]+)" timestamp="([^"]+)" conversation.* messageid="([^"]+)".*>.*?(.*?).*?
(.*)`)
+ quoteReg := regexp.MustCompile(`]+\bauthor="([^"]+)" authorname="([^"]+)" timestamp="([^"]+)" conversation="([^"]+)" messageid="([^"]+)".*>.*?(.*?).*?
(.*)`)
quoteMatches := quoteReg.FindAllStringSubmatch(content.Body, -1)
if len(quoteMatches) > 0 {
@@ -132,8 +132,14 @@ func (formatter *Formatter) ParseSkype(content *event.MessageEventContent, RoomM
fmt.Println("ParseSkype quoteMatches a:", a)
fmt.Println()
}
+ portal := formatter.bridge.GetPortalByMXID(RoomMXID)
+ if portal.Key.JID != match[4] {
+ content.FormattedBody = match[6]
+ content.Body = fmt.Sprintf("%s\n\n", match[6])
+ continue
+ }
msgMXID := ""
- msg := formatter.bridge.DB.Message.GetByID(match[4])
+ msg := formatter.bridge.DB.Message.GetByID(match[5])
if msg != nil {
msgMXID = string(msg.MXID)
}
@@ -144,21 +150,21 @@ func (formatter *Formatter) ParseSkype(content *event.MessageEventContent, RoomM
href1,
href2,
mxid,
- match[5])
+ match[6])
content.FormattedBody = newContent
- content.Body = fmt.Sprintf("> <%s> %s\n\n", mxid, match[5])
+ content.Body = fmt.Sprintf("> <%s> %s\n\n", mxid, match[6])
inRelateTo := &event.RelatesTo{
Type: event.RelReply,
EventID: id.EventID(msgMXID),
}
content.SetRelatesTo(inRelateTo)
- backStr = match[6]
+ backStr = match[7]
}
}
}
// parse mention user message
- r := regexp.MustCompile(`(?m)]+\bid="([^"]+)"(.*?)`)
+ r := regexp.MustCompile(`(?m)]+\bid="([^"]+)">(.*?)`)
var originStr string
var originBodyStr string
if len(backStr) == 0 {
@@ -170,8 +176,14 @@ func (formatter *Formatter) ParseSkype(content *event.MessageEventContent, RoomM
if len(matches) > 0 {
for _, match := range matches {
mxid, displayname := formatter.getMatrixInfoByJID(match[1] + skypeExt.NewUserSuffix)
+ replaceStr := ""
+ if len(displayname) < 1 {
+ // TODO need to optimize
+ replaceStr = match[2] + ":"
+ } else {
+ replaceStr = fmt.Sprintf(`%s:`, formatter.bridge.Config.Homeserver.ServerName, mxid, displayname)
+ }
// number := "@" + strings.Replace(match[1], skypeExt.NewUserSuffix, "", 1)
- replaceStr := fmt.Sprintf(`%s:`, formatter.bridge.Config.Homeserver.ServerName, mxid, displayname)
originStr = strings.ReplaceAll(originStr, match[0], replaceStr)
originBodyStr = strings.ReplaceAll(originStr, replaceStr, displayname + ":")
}