aboutsummaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
authorsilverwind <me@silverwind.io>2021-12-15 18:18:38 -0800
committerGitHub <noreply@github.com>2021-12-16 10:18:38 +0800
commitcc129d2ca22100fe9c28106d9bc302678651f339 (patch)
treea4fb2c926d501230267d03b09d6a9518a4e54c32 /modules
parente78ee73d712d8d248b9a3a552187d06632000331 (diff)
downloadgitea-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.go3
-rw-r--r--modules/repository/commits_test.go4
-rw-r--r--modules/setting/picture.go15
-rw-r--r--modules/templates/helper.go8
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)