mirror of
https://github.com/tulir/mautrix-whatsapp
synced 2024-12-13 17:13:11 +01:00
Always sync private chat portal meta in background sync
This commit is contained in:
parent
c16af35d1b
commit
17a9df3297
2 changed files with 14 additions and 9 deletions
17
puppet.go
17
puppet.go
|
@ -245,9 +245,12 @@ func reuploadAvatar(intent *appservice.IntentAPI, url string) (id.ContentURI, er
|
||||||
return resp.ContentURI, nil
|
return resp.ContentURI, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (puppet *Puppet) UpdateAvatar(source *User) bool {
|
func (puppet *Puppet) UpdateAvatar(source *User, forcePortalSync bool) bool {
|
||||||
changed := source.updateAvatar(puppet.JID, &puppet.Avatar, &puppet.AvatarURL, &puppet.AvatarSet, puppet.log, puppet.DefaultIntent())
|
changed := source.updateAvatar(puppet.JID, &puppet.Avatar, &puppet.AvatarURL, &puppet.AvatarSet, puppet.log, puppet.DefaultIntent())
|
||||||
if !changed || puppet.Avatar == "unauthorized" {
|
if !changed || puppet.Avatar == "unauthorized" {
|
||||||
|
if forcePortalSync {
|
||||||
|
go puppet.updatePortalAvatar()
|
||||||
|
}
|
||||||
return changed
|
return changed
|
||||||
}
|
}
|
||||||
err := puppet.DefaultIntent().SetAvatarURL(puppet.AvatarURL)
|
err := puppet.DefaultIntent().SetAvatarURL(puppet.AvatarURL)
|
||||||
|
@ -260,7 +263,7 @@ func (puppet *Puppet) UpdateAvatar(source *User) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
func (puppet *Puppet) UpdateName(contact types.ContactInfo) bool {
|
func (puppet *Puppet) UpdateName(contact types.ContactInfo, forcePortalSync bool) bool {
|
||||||
newName, quality := puppet.bridge.Config.Bridge.FormatDisplayname(puppet.JID, contact)
|
newName, quality := puppet.bridge.Config.Bridge.FormatDisplayname(puppet.JID, contact)
|
||||||
if (puppet.Displayname != newName || !puppet.NameSet) && quality >= puppet.NameQuality {
|
if (puppet.Displayname != newName || !puppet.NameSet) && quality >= puppet.NameQuality {
|
||||||
puppet.Displayname = newName
|
puppet.Displayname = newName
|
||||||
|
@ -275,6 +278,8 @@ func (puppet *Puppet) UpdateName(contact types.ContactInfo) bool {
|
||||||
puppet.log.Warnln("Failed to set display name:", err)
|
puppet.log.Warnln("Failed to set display name:", err)
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
|
} else if forcePortalSync {
|
||||||
|
go puppet.updatePortalName()
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
@ -329,10 +334,10 @@ func (puppet *Puppet) SyncContact(source *User, onlyIfNoName, shouldHavePushName
|
||||||
} else if !contact.Found {
|
} else if !contact.Found {
|
||||||
puppet.log.Warnfln("No contact info found through %s in SyncContact (sync reason: %s)", source.MXID, reason)
|
puppet.log.Warnfln("No contact info found through %s in SyncContact (sync reason: %s)", source.MXID, reason)
|
||||||
}
|
}
|
||||||
puppet.Sync(source, &contact, false)
|
puppet.Sync(source, &contact, false, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (puppet *Puppet) Sync(source *User, contact *types.ContactInfo, forceAvatarSync bool) {
|
func (puppet *Puppet) Sync(source *User, contact *types.ContactInfo, forceAvatarSync, forcePortalSync bool) {
|
||||||
puppet.syncLock.Lock()
|
puppet.syncLock.Lock()
|
||||||
defer puppet.syncLock.Unlock()
|
defer puppet.syncLock.Unlock()
|
||||||
err := puppet.DefaultIntent().EnsureRegistered()
|
err := puppet.DefaultIntent().EnsureRegistered()
|
||||||
|
@ -347,10 +352,10 @@ func (puppet *Puppet) Sync(source *User, contact *types.ContactInfo, forceAvatar
|
||||||
if puppet.JID.User == source.JID.User {
|
if puppet.JID.User == source.JID.User {
|
||||||
contact.PushName = source.Client.Store.PushName
|
contact.PushName = source.Client.Store.PushName
|
||||||
}
|
}
|
||||||
update = puppet.UpdateName(*contact) || update
|
update = puppet.UpdateName(*contact, forcePortalSync) || update
|
||||||
}
|
}
|
||||||
if len(puppet.Avatar) == 0 || forceAvatarSync || puppet.bridge.Config.Bridge.UserAvatarSync {
|
if len(puppet.Avatar) == 0 || forceAvatarSync || puppet.bridge.Config.Bridge.UserAvatarSync {
|
||||||
update = puppet.UpdateAvatar(source) || update
|
update = puppet.UpdateAvatar(source, forcePortalSync) || update
|
||||||
}
|
}
|
||||||
if update || puppet.LastSync.Add(24*time.Hour).Before(time.Now()) {
|
if update || puppet.LastSync.Add(24*time.Hour).Before(time.Now()) {
|
||||||
puppet.LastSync = time.Now()
|
puppet.LastSync = time.Now()
|
||||||
|
|
6
user.go
6
user.go
|
@ -339,7 +339,7 @@ func (user *User) doPuppetResync() {
|
||||||
} else if contact.Found {
|
} else if contact.Found {
|
||||||
contactPtr = &contact
|
contactPtr = &contact
|
||||||
}
|
}
|
||||||
puppet.Sync(user, contactPtr, info.PictureID != "" && info.PictureID != puppet.Avatar)
|
puppet.Sync(user, contactPtr, info.PictureID != "" && info.PictureID != puppet.Avatar, true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1143,7 +1143,7 @@ func (user *User) ResyncContacts(forceAvatarSync bool) error {
|
||||||
for jid, contact := range contacts {
|
for jid, contact := range contacts {
|
||||||
puppet := user.bridge.GetPuppetByJID(jid)
|
puppet := user.bridge.GetPuppetByJID(jid)
|
||||||
if puppet != nil {
|
if puppet != nil {
|
||||||
puppet.Sync(user, &contact, forceAvatarSync)
|
puppet.Sync(user, &contact, forceAvatarSync, true)
|
||||||
} else {
|
} else {
|
||||||
user.log.Warnfln("Got a nil puppet for %s while syncing contacts", jid)
|
user.log.Warnfln("Got a nil puppet for %s while syncing contacts", jid)
|
||||||
}
|
}
|
||||||
|
@ -1310,7 +1310,7 @@ func (user *User) handlePictureUpdate(evt *events.Picture) {
|
||||||
puppet := user.bridge.GetPuppetByJID(evt.JID)
|
puppet := user.bridge.GetPuppetByJID(evt.JID)
|
||||||
user.log.Debugfln("Received picture update for puppet %s (current: %s, new: %s)", evt.JID, puppet.Avatar, evt.PictureID)
|
user.log.Debugfln("Received picture update for puppet %s (current: %s, new: %s)", evt.JID, puppet.Avatar, evt.PictureID)
|
||||||
if puppet.Avatar != evt.PictureID {
|
if puppet.Avatar != evt.PictureID {
|
||||||
puppet.Sync(user, nil, true)
|
puppet.Sync(user, nil, true, false)
|
||||||
}
|
}
|
||||||
} else if portal := user.GetPortalByJID(evt.JID); portal != nil {
|
} else if portal := user.GetPortalByJID(evt.JID); portal != nil {
|
||||||
user.log.Debugfln("Received picture update for portal %s (current: %s, new: %s)", evt.JID, portal.Avatar, evt.PictureID)
|
user.log.Debugfln("Received picture update for portal %s (current: %s, new: %s)", evt.JID, portal.Avatar, evt.PictureID)
|
||||||
|
|
Loading…
Reference in a new issue