1
0
Fork 0
forked from forgejo/forgejo

Avatar refactor, move avatar code from models to models.avatars, remove duplicated code (#17123)

Why this refactor

The goal is to move most files from `models` package to `models.xxx` package. Many models depend on avatar model, so just move this first.

And the existing logic is not clear, there are too many function like `AvatarLink`, `RelAvatarLink`, `SizedRelAvatarLink`, `SizedAvatarLink`, `MakeFinalAvatarURL`, `HashedAvatarLink`, etc. This refactor make everything clear:

* user.AvatarLink()
* user.AvatarLinkWithSize(size)
* avatars.GenerateEmailAvatarFastLink(email, size)
* avatars.GenerateEmailAvatarFinalLink(email, size)

And many duplicated code are deleted in route handler, the handler and the model share the same avatar logic now.
This commit is contained in:
wxiaoguang 2021-10-06 07:25:46 +08:00 committed by GitHub
parent 48c2578bd8
commit f0ba87fda8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
15 changed files with 274 additions and 300 deletions

View file

@ -9,6 +9,7 @@ import (
"time"
"code.gitea.io/gitea/models"
"code.gitea.io/gitea/models/avatars"
"code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/modules/log"
api "code.gitea.io/gitea/modules/structs"
@ -139,14 +140,14 @@ func (pc *PushCommits) AvatarLink(email string) string {
return avatar
}
size := models.DefaultAvatarPixelSize * models.AvatarRenderedSizeFactor
size := avatars.DefaultAvatarPixelSize * avatars.AvatarRenderedSizeFactor
u, ok := pc.emailUsers[email]
if !ok {
var err error
u, err = models.GetUserByEmail(email)
if err != nil {
pc.avatars[email] = models.SizedAvatarLink(email, size)
pc.avatars[email] = avatars.GenerateEmailAvatarFastLink(email, size)
if !models.IsErrUserNotExist(err) {
log.Error("GetUserByEmail: %v", err)
return ""
@ -156,7 +157,7 @@ func (pc *PushCommits) AvatarLink(email string) string {
}
}
if u != nil {
pc.avatars[email] = u.RealSizedAvatarLink(size)
pc.avatars[email] = u.AvatarLinkWithSize(size)
}
return pc.avatars[email]