diff --git a/account.go b/account.go index cd6d033..6be12e7 100644 --- a/account.go +++ b/account.go @@ -227,7 +227,9 @@ func (a *Account) roomInfoUpdatedInternal(roomId RoomID, author UserID, info *Ro } as_mxid := ezbrMxId() - if len(author) > 0 { + if author == a.Conn.User() { + as_mxid = a.MatrixUser + } else if len(author) > 0 { mx_user_id, err2 := dbGetMxUser(a.Protocol, author) if err2 == nil { as_mxid = mx_user_id diff --git a/connector/xmpp/xmpp.go b/connector/xmpp/xmpp.go index 0573ddb..698016f 100644 --- a/connector/xmpp/xmpp.go +++ b/connector/xmpp/xmpp.go @@ -200,7 +200,11 @@ func (xm *XMPP) handleXMPP() error { if v.Subject != "" && v.Type == "groupchat" { author := UserID("") if len(remote_sp) == 2 { - author = UserID(remote_sp[1] + "@" + remote_sp[0]) + if remote_sp[1] == xm.nickname { + author = xm.User() + } else { + author = UserID(remote_sp[1] + "@" + remote_sp[0]) + } } xm.handler.RoomInfoUpdated(RoomID(remote_sp[0]), author, &RoomInfo{ Topic: v.Subject, diff --git a/util.go b/util.go index c811a1e..c1da665 100644 --- a/util.go +++ b/util.go @@ -50,7 +50,7 @@ func safeStringForId(in string) string { id2 += "__" } else if c == ':' { id2 += "_" - } else if unicode.IsDigit(c) || unicode.IsLetter(c) { + } else if unicode.IsDigit(c) || unicode.IsLetter(c) || c == '.' || c == '-' || c == '_' { id2 += string(c) } }