@@ -11,6 +11,7 @@ import (
11
11
12
12
"code.gitea.io/gitea/models/avatars"
13
13
user_model "code.gitea.io/gitea/models/user"
14
+ "code.gitea.io/gitea/modules/cache"
14
15
"code.gitea.io/gitea/modules/git"
15
16
"code.gitea.io/gitea/modules/log"
16
17
"code.gitea.io/gitea/modules/setting"
@@ -134,35 +135,21 @@ func (pc *PushCommits) ToAPIPayloadCommits(ctx context.Context, repoPath, repoLi
134
135
// AvatarLink tries to match user in database with e-mail
135
136
// in order to show custom avatar, and falls back to general avatar link.
136
137
func (pc * PushCommits ) AvatarLink (ctx context.Context , email string ) string {
137
- if pc .avatars == nil {
138
- pc .avatars = make (map [string ]string )
139
- }
140
- avatar , ok := pc .avatars [email ]
141
- if ok {
142
- return avatar
143
- }
144
-
145
138
size := avatars .DefaultAvatarPixelSize * setting .Avatar .RenderedSizeFactor
146
139
147
- u , ok := pc .emailUsers [email ]
148
- if ! ok {
149
- var err error
150
- u , err = user_model .GetUserByEmail (ctx , email )
140
+ v , _ := cache .GetWithContextCache (ctx , "push_commits" , email , func () (string , error ) {
141
+ u , err := user_model .GetUserByEmail (ctx , email )
151
142
if err != nil {
152
- pc .avatars [email ] = avatars .GenerateEmailAvatarFastLink (ctx , email , size )
153
143
if ! user_model .IsErrUserNotExist (err ) {
154
144
log .Error ("GetUserByEmail: %v" , err )
155
- return ""
145
+ return "" , err
156
146
}
157
- } else {
158
- pc .emailUsers [email ] = u
147
+ return avatars .GenerateEmailAvatarFastLink (ctx , email , size ), nil
159
148
}
160
- }
161
- if u != nil {
162
- pc .avatars [email ] = u .AvatarLinkWithSize (ctx , size )
163
- }
149
+ return u .AvatarLinkWithSize (ctx , size ), nil
150
+ })
164
151
165
- return pc . avatars [ email ]
152
+ return v
166
153
}
167
154
168
155
// CommitToPushCommit transforms a git.Commit to PushCommit type.
0 commit comments