Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 15 additions & 4 deletions pkg/user/service/user_service.go
Original file line number Diff line number Diff line change
Expand Up @@ -336,7 +336,8 @@ func (u *userService) GetAvatar(data *GetAvatarStruct, instance *instance_model.
return nil, errors.New("invalid phone number")
}

u.loggerWrapper.GetLogger(instance.Id).LogInfo("[%s] Requesting avatar for JID: %s, Preview: %v", instance.Id, jid, data.Preview)
log := u.loggerWrapper.GetLogger(instance.Id)
log.LogInfo("[%s] Requesting avatar for JID: %s, Preview: %v", instance.Id, jid, data.Preview)

var pic *types.ProfilePictureInfo

Expand All @@ -345,20 +346,30 @@ func (u *userService) GetAvatar(data *GetAvatarStruct, instance *instance_model.
ctx, cancel := context.WithTimeout(context.Background(), 80*time.Second)
defer cancel()

u.loggerWrapper.GetLogger(instance.Id).LogInfo("[%s] Starting GetProfilePictureInfo request...", instance.Id)
log.LogInfo("[%s] Starting GetProfilePictureInfo request...", instance.Id)
pic, err = client.GetProfilePictureInfo(ctx, jid, &whatsmeow.GetProfilePictureParams{
Preview: data.Preview,
})
// Group/community JIDs are rejected with not-authorized on the regular
// profile-picture query and require the community variant instead. Retry
// only on that specific error so unrelated failures surface unchanged.
if jid.Server == types.GroupServer && errors.Is(err, whatsmeow.ErrProfilePictureUnauthorized) {
log.LogDebug("[%s] Group JID not authorized on regular query, retrying with IsCommunity", instance.Id)
pic, err = client.GetProfilePictureInfo(ctx, jid, &whatsmeow.GetProfilePictureParams{
Preview: data.Preview,
IsCommunity: true,
})
}
if err != nil {
u.loggerWrapper.GetLogger(instance.Id).LogError("[%s] GetProfilePictureInfo failed: %v", instance.Id, err)
log.LogError("[%s] GetProfilePictureInfo failed: %v", instance.Id, err)
return nil, err
}

if pic == nil {
return nil, errors.New("no profile picture found")
}

u.loggerWrapper.GetLogger(instance.Id).LogInfo("[%s] Got avatar %s", instance.Id, pic.URL)
log.LogInfo("[%s] Got avatar %s", instance.Id, pic.URL)

return pic, nil
}
Expand Down