diff options
author | silverwind <me@silverwind.io> | 2021-12-15 18:18:38 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-12-16 10:18:38 +0800 |
commit | cc129d2ca22100fe9c28106d9bc302678651f339 (patch) | |
tree | a4fb2c926d501230267d03b09d6a9518a4e54c32 /modules | |
parent | e78ee73d712d8d248b9a3a552187d06632000331 (diff) | |
download | gitea-cc129d2ca22100fe9c28106d9bc302678651f339.tar.gz gitea-cc129d2ca22100fe9c28106d9bc302678651f339.zip |
Make AvatarRenderedSizeFactor configurable and set it to 3 (#17951)
Save a bit of bandwidth by only requesting 3-times the rendered avatar
size. Factor 4 is only really beneficial on a handful of mobile phones
and I don't think they are the primary device we design for.
Configurability contributed by zeripath.
Fixes: https://github.com/go-gitea/gitea/pull/17422
Fixes: https://github.com/go-gitea/gitea/issues/16287
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
Diffstat (limited to 'modules')
-rw-r--r-- | modules/repository/commits.go | 3 | ||||
-rw-r--r-- | modules/repository/commits_test.go | 4 | ||||
-rw-r--r-- | modules/setting/picture.go | 15 | ||||
-rw-r--r-- | modules/templates/helper.go | 8 |
4 files changed, 17 insertions, 13 deletions
diff --git a/modules/repository/commits.go b/modules/repository/commits.go index 8e727c95d0..9ff9a9531b 100644 --- a/modules/repository/commits.go +++ b/modules/repository/commits.go @@ -13,6 +13,7 @@ import ( user_model "code.gitea.io/gitea/models/user" "code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/log" + "code.gitea.io/gitea/modules/setting" api "code.gitea.io/gitea/modules/structs" ) @@ -141,7 +142,7 @@ func (pc *PushCommits) AvatarLink(email string) string { return avatar } - size := avatars.DefaultAvatarPixelSize * avatars.AvatarRenderedSizeFactor + size := avatars.DefaultAvatarPixelSize * setting.Avatar.RenderedSizeFactor u, ok := pc.emailUsers[email] if !ok { diff --git a/modules/repository/commits_test.go b/modules/repository/commits_test.go index 30edf3362e..d01388fe10 100644 --- a/modules/repository/commits_test.go +++ b/modules/repository/commits_test.go @@ -124,13 +124,13 @@ func TestPushCommits_AvatarLink(t *testing.T) { } assert.Equal(t, - "https://secure.gravatar.com/avatar/ab53a2911ddf9b4817ac01ddcd3d975f?d=identicon&s=112", + "https://secure.gravatar.com/avatar/ab53a2911ddf9b4817ac01ddcd3d975f?d=identicon&s=84", pushCommits.AvatarLink("user2@example.com")) assert.Equal(t, "https://secure.gravatar.com/avatar/"+ fmt.Sprintf("%x", md5.Sum([]byte("nonexistent@example.com")))+ - "?d=identicon&s=112", + "?d=identicon&s=84", pushCommits.AvatarLink("nonexistent@example.com")) } diff --git a/modules/setting/picture.go b/modules/setting/picture.go index 415552d7ce..a6d3447dcc 100644 --- a/modules/setting/picture.go +++ b/modules/setting/picture.go @@ -18,13 +18,15 @@ var ( Avatar = struct { Storage - MaxWidth int - MaxHeight int - MaxFileSize int64 + MaxWidth int + MaxHeight int + MaxFileSize int64 + RenderedSizeFactor int }{ - MaxWidth: 4096, - MaxHeight: 3072, - MaxFileSize: 1048576, + MaxWidth: 4096, + MaxHeight: 3072, + MaxFileSize: 1048576, + RenderedSizeFactor: 3, } GravatarSource string @@ -55,6 +57,7 @@ func newPictureService() { Avatar.MaxWidth = sec.Key("AVATAR_MAX_WIDTH").MustInt(4096) Avatar.MaxHeight = sec.Key("AVATAR_MAX_HEIGHT").MustInt(3072) Avatar.MaxFileSize = sec.Key("AVATAR_MAX_FILE_SIZE").MustInt64(1048576) + Avatar.RenderedSizeFactor = sec.Key("AVATAR_RENDERED_SIZE_FACTOR").MustInt(3) switch source := sec.Key("GRAVATAR_SOURCE").MustString("gravatar"); source { case "duoshuo": diff --git a/modules/templates/helper.go b/modules/templates/helper.go index 1841ad2732..c1c6b40347 100644 --- a/modules/templates/helper.go +++ b/modules/templates/helper.go @@ -557,17 +557,17 @@ func Avatar(item interface{}, others ...interface{}) template.HTML { switch t := item.(type) { case *user_model.User: - src := t.AvatarLinkWithSize(size * avatars.AvatarRenderedSizeFactor) + src := t.AvatarLinkWithSize(size * setting.Avatar.RenderedSizeFactor) if src != "" { return AvatarHTML(src, size, class, t.DisplayName()) } case *models.Collaborator: - src := t.AvatarLinkWithSize(size * avatars.AvatarRenderedSizeFactor) + src := t.AvatarLinkWithSize(size * setting.Avatar.RenderedSizeFactor) if src != "" { return AvatarHTML(src, size, class, t.DisplayName()) } case *models.Organization: - src := t.AsUser().AvatarLinkWithSize(size * avatars.AvatarRenderedSizeFactor) + src := t.AsUser().AvatarLinkWithSize(size * setting.Avatar.RenderedSizeFactor) if src != "" { return AvatarHTML(src, size, class, t.AsUser().DisplayName()) } @@ -596,7 +596,7 @@ func RepoAvatar(repo *repo_model.Repository, others ...interface{}) template.HTM // AvatarByEmail renders avatars by email address. args: email, name, size (int), class (string) func AvatarByEmail(email string, name string, others ...interface{}) template.HTML { size, class := parseOthers(avatars.DefaultAvatarPixelSize, "ui avatar image", others...) - src := avatars.GenerateEmailAvatarFastLink(email, size*avatars.AvatarRenderedSizeFactor) + src := avatars.GenerateEmailAvatarFastLink(email, size*setting.Avatar.RenderedSizeFactor) if src != "" { return AvatarHTML(src, size, class, name) |