forked from MirrorHub/mautrix-whatsapp
Switch sync command to use syncPortals and syncPuppets methods used at startup
This commit is contained in:
parent
5eb06ee43c
commit
8d0d5ff504
2 changed files with 13 additions and 15 deletions
22
commands.go
22
commands.go
|
@ -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.")
|
||||||
}
|
}
|
||||||
|
|
6
user.go
6
user.go
|
@ -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 {
|
||||||
|
|
Loading…
Reference in a new issue