From dad3dbc7e52d84e0ce5f4db45455385a5ab20308 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Mon, 18 Mar 2024 20:23:43 +0200 Subject: [PATCH] Fix clearing avatars if contact ID is cleared --- puppet.go | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/puppet.go b/puppet.go index f8e1ff0..765c2cb 100644 --- a/puppet.go +++ b/puppet.go @@ -186,16 +186,20 @@ func (puppet *Puppet) DefaultIntent() *appservice.IntentAPI { const MinAvatarUpdateInterval = 24 * time.Hour func (puppet *Puppet) UpdateAvatar(ctx context.Context, source *User) bool { - if (puppet.AvatarSet && time.Since(puppet.AvatarUpdateTS) < MinAvatarUpdateInterval) || puppet.ContactID == "" { + if (puppet.AvatarSet && time.Since(puppet.AvatarUpdateTS) < MinAvatarUpdateInterval) || (puppet.ContactID == "" && puppet.AvatarMXC.IsEmpty()) { return false } - resp, err := source.Client.GetParticipantThumbnail(puppet.ID) - if err != nil { - puppet.log.Err(err).Msg("Failed to get avatar thumbnail") - return false + var resp *gmproto.GetThumbnailResponse + var err error + if puppet.ContactID != "" { + resp, err = source.Client.GetParticipantThumbnail(puppet.ID) + if err != nil { + puppet.log.Err(err).Msg("Failed to get avatar thumbnail") + return false + } } puppet.AvatarUpdateTS = time.Now() - if len(resp.Thumbnail) == 0 { + if resp == nil || len(resp.Thumbnail) == 0 { if puppet.AvatarHash == [32]byte{} && puppet.AvatarMXC.IsEmpty() && puppet.AvatarSet { return true }