Switch sync command to use syncPortals and syncPuppets methods used at startup

This commit is contained in:
Tulir Asokan 2019-05-23 22:57:52 +03:00
parent 5eb06ee43c
commit 8d0d5ff504
2 changed files with 13 additions and 15 deletions

View file

@ -294,21 +294,19 @@ func (handler *CommandHandler) CommandSync(ce *CommandEvent) {
handler.log.Debugln("Importing all contacts of", user) handler.log.Debugln("Importing all contacts of", user)
_, err := user.Conn.Contacts() _, err := user.Conn.Contacts()
if err != nil { if err != nil {
handler.log.Errorln("Error on update of contacts of user", user, ":", err) user.log.Errorln("Error updating contacts:", err)
ce.Reply("Failed to sync contact list (see logs for details)")
return
}
_, err = user.Conn.Chats()
if err != nil {
user.log.Errorln("Error updating chats:", err)
ce.Reply("Failed to sync chat list (see logs for details)")
return return
} }
for jid, contact := range user.Conn.Store.Contacts { user.syncPuppets()
if strings.HasSuffix(jid, whatsappExt.NewUserSuffix) { user.syncPortals(create)
puppet := user.bridge.GetPuppetByJID(contact.Jid)
puppet.Sync(user, contact)
} else {
portal := user.bridge.GetPortalByJID(database.GroupPortalKey(contact.Jid))
if len(portal.MXID) > 0 || create {
portal.Sync(user, contact)
}
}
}
ce.Reply("Imported contacts successfully.") ce.Reply("Imported contacts successfully.")
} }

View file

@ -289,11 +289,11 @@ func (user *User) PostLogin() {
user.log.Debugln("Waited a second, have", len(user.Conn.Store.Chats), "chats and", len(user.Conn.Store.Contacts), "contacts") user.log.Debugln("Waited a second, have", len(user.Conn.Store.Chats), "chats and", len(user.Conn.Store.Contacts), "contacts")
go user.syncPuppets() go user.syncPuppets()
user.syncPortals() user.syncPortals(false)
user.syncLock.Unlock() user.syncLock.Unlock()
} }
func (user *User) syncPortals() { func (user *User) syncPortals(createAll bool) {
var chats ChatList var chats ChatList
for _, chat := range user.Conn.Store.Chats { for _, chat := range user.Conn.Store.Chats {
ts, err := strconv.ParseUint(chat.LastMessageTime, 10, 64) ts, err := strconv.ParseUint(chat.LastMessageTime, 10, 64)
@ -318,7 +318,7 @@ func (user *User) syncPortals() {
break break
} }
create := (chat.LastMessageTime >= user.LastConnection && user.LastConnection > 0) || i < limit create := (chat.LastMessageTime >= user.LastConnection && user.LastConnection > 0) || i < limit
if len(chat.Portal.MXID) > 0 || create { if len(chat.Portal.MXID) > 0 || create || createAll {
chat.Portal.Sync(user, chat.Contact) chat.Portal.Sync(user, chat.Contact)
err := chat.Portal.BackfillHistory(user, chat.LastMessageTime) err := chat.Portal.BackfillHistory(user, chat.LastMessageTime)
if err != nil { if err != nil {