1
0
Fork 0
mirror of https://codeberg.org/forgejo/forgejo.git synced 2025-08-01 17:38:33 +00:00

feat: do not regenerate an existing random avatar

Leave aside the refactoring part of
https://github.com/go-gitea/gitea/pull/33433, keep the improvement.

Also get a test from https://github.com/go-gitea/gitea/pull/31365
while we're at it.

(cherry picked from commit 4ffc54f59a7723eb5aef21955129bdd329ee1d4f)
This commit is contained in:
Earl Warren 2025-02-02 10:13:15 +01:00
parent 6f97d5d625
commit 08175152e0
No known key found for this signature in database
GPG key ID: 0579CB2928A78A00
2 changed files with 79 additions and 7 deletions

View file

@ -38,14 +38,18 @@ func GenerateRandomAvatar(ctx context.Context, u *User) error {
u.Avatar = avatars.HashEmail(seed)
// Don't share the images so that we can delete them easily
if err := storage.SaveFrom(storage.Avatars, u.CustomAvatarRelativePath(), func(w io.Writer) error {
if err := png.Encode(w, img); err != nil {
log.Error("Encode: %v", err)
_, err = storage.Avatars.Stat(u.CustomAvatarRelativePath())
if err != nil {
// If unable to Stat the avatar file (usually it means non-existing), then try to save a new one
// Don't share the images so that we can delete them easily
if err := storage.SaveFrom(storage.Avatars, u.CustomAvatarRelativePath(), func(w io.Writer) error {
if err := png.Encode(w, img); err != nil {
log.Error("Encode: %v", err)
}
return nil
}); err != nil {
return fmt.Errorf("failed to save avatar %s: %w", u.CustomAvatarRelativePath(), err)
}
return err
}); err != nil {
return fmt.Errorf("Failed to create dir %s: %w", u.CustomAvatarRelativePath(), err)
}
if _, err := db.GetEngine(ctx).ID(u.ID).Cols("avatar").Update(u); err != nil {