Fix the problem that members cannot be added when creating a group

This commit is contained in:
zhaoYangguang 2020-09-24 16:58:49 +08:00
parent 8ff600bd23
commit 99c47fe6aa
4 changed files with 30 additions and 54 deletions

View File

@ -1151,9 +1151,7 @@ func (handler *CommandHandler) CommandCreate(ce *CommandEvent) {
handler.log.Debugln("Create Group", topic, "with", members) handler.log.Debugln("Create Group", topic, "with", members)
err := user.Conn.HandleGroupCreate(members) err := user.Conn.HandleGroupCreate(members)
inputArr := strings.Split(ce.Args[1], ",") inputArr := strings.Split(ce.Args[1], ",")
inputArr = inputArr[1:]
members = skype.Members{} members = skype.Members{}
for _, memberId := range inputArr { for _, memberId := range inputArr {
members.Members = append(members.Members, skype.Member{ members.Members = append(members.Members, skype.Member{
@ -1161,7 +1159,10 @@ func (handler *CommandHandler) CommandCreate(ce *CommandEvent) {
Role: "Admin", Role: "Admin",
}) })
} }
err = user.Conn.AddMember(members, "") conversationId, ok := <-user.Conn.CreateChan
if ok {
err = user.Conn.AddMember(members, conversationId)
}
if err != nil { if err != nil {
ce.Reply("Please confirm that parameters is correct.") ce.Reply("Please confirm that parameters is correct.")
} else { } else {

View File

@ -752,50 +752,33 @@ func (portal *Portal) ChangeAdminStatus(jids []string, setAdmin bool) {
//} //}
func (portal *Portal) membershipRemove(content string) { func (portal *Portal) membershipRemove(content string) {
xmlFormat := skype.XmlContent{} xmlFormat := skype.XmlDeleteMember{}
err := xml.Unmarshal([]byte(content), &xmlFormat) err := xml.Unmarshal([]byte(content), &xmlFormat)
for _, target := range xmlFormat.Targets {
member := portal.bridge.GetPuppetByJID(target)
member := portal.bridge.GetPuppetByJID(xmlFormat.Target) memberMaxid := strings.Replace(string(member.MXID), "@skype&8:", "@skype&8-", 1)
_, err = portal.MainIntent().KickUser(portal.MXID, &mautrix.ReqKickUser{
memberMaxid := strings.Replace(string(member.MXID), "@skype&8:", "@skype&8-", 1) UserID: id.UserID(memberMaxid),
_, err = portal.MainIntent().KickUser(portal.MXID, &mautrix.ReqKickUser{ })
UserID: id.UserID(memberMaxid), if err != nil {
}) portal.log.Errorln("Error %v member from whatsapp:", err)
if err != nil { }
portal.log.Errorln("Error %v member from whatsapp:", err) }
} }
//for _, chat := range user.Conn.Store.Chats {
// group := portal.bridge.GetPuppetByJID(chat.Id.(string)) func (portal *Portal) membershipAdd(content string) {
// fmt.Println("member") xmlFormat := skype.XmlAddMember{}
// fmt.Println(group) err := xml.Unmarshal([]byte(content), &xmlFormat)
// fmt.Println("用户信息:")
// fmt.Println(chat.Id.(string)) for _, target := range xmlFormat.Targets {
// puppet := portal.bridge.GetPuppetByJID(target)
// if group == nil { fmt.Println("membershipAdd puppet jid", target)
// portal.log.Errorln("%s is not exist", jid) err = puppet.IntentFor(portal).EnsureJoined(portal.MXID)
// continue if err != nil {
// } portal.log.Errorln("Error %v joined member from skype:", err)
// if group.JID == jid {
// _, err := portal.MainIntent().KickUser(portal.MXID, &mautrix.ReqKickUser{
// UserID: group.MXID,
// })
// if err != nil {
// portal.log.Errorln("Error %v member from whatsapp:", err)
// }
// }
//}
}
func (portal *Portal) membershipAdd(user *User, jid string) {
chatMap := make(map[string]skype.Conversation)
for _, chat := range user.Conn.Store.Chats {
if chat.Id == jid {
cid, _ := chat.Id.(string)
chatMap[cid] = chat
} }
} }
fmt.Println("membershipAddzsl:", chatMap)
user.syncPortals(chatMap, false)
} }
func (portal *Portal) membershipCreate(user *User, cmd skypeExt.ChatUpdate) { func (portal *Portal) membershipCreate(user *User, cmd skypeExt.ChatUpdate) {

View File

@ -285,13 +285,7 @@ func (ext *ExtendedConn) HandleGroupKick(groupJid string, numbers[]string) (err
} }
func (ext *ExtendedConn) HandleGroupCreate(numbers skype.Members) (err error) { func (ext *ExtendedConn) HandleGroupCreate(numbers skype.Members) (err error) {
//var parts []string return ext.Conn.CreateConversationGroup(numbers)
//parts = append(parts, numbers...)
err = ext.Conn.CreateConversationGroup(numbers)
//if err != nil {
// fmt.Printf("%s HandleGroupCreate err", err)
//}
return
} }
func (ext *ExtendedConn) HandleGroupLeave(groupJid string) (err error) { func (ext *ExtendedConn) HandleGroupLeave(groupJid string) (err error) {

View File

@ -1077,16 +1077,14 @@ func (user *User) HandleChatUpdate(cmd skype.Resource) {
} }
go portal.UpdateAvatar(user, avatar) go portal.UpdateAvatar(user, avatar)
case skypeExt.ChatMemberAdd: case skypeExt.ChatMemberAdd:
fmt.Println("portal.MXID") user.log.Debugfln("chat member add")
fmt.Println(portal.MXID)
fmt.Println(user)
if len(portal.MXID) == 0 { if len(portal.MXID) == 0 {
err := portal.CreateMatrixRoom(user) err := portal.CreateMatrixRoom(user)
if err != nil { if err != nil {
fmt.Println("create room failed") fmt.Println("create room failed")
} }
} }
go portal.membershipAdd(user, cmd.Jid) go portal.membershipAdd(cmd.Content)
case skypeExt.ChatMemberDelete: case skypeExt.ChatMemberDelete:
go portal.membershipRemove(cmd.Content) go portal.membershipRemove(cmd.Content)
//case skypeExt.ChatActionAddTopic: //case skypeExt.ChatActionAddTopic: