From d958b9db4fa0f1910b3ca82338e3d68a70efedd9 Mon Sep 17 00:00:00 2001 From: Sandro Santilli Date: Thu, 26 Sep 2019 18:21:23 +0200 Subject: Alwaywas return local url for users avatar (#8245) * Always return local url for users avatar Avoids having to wait for DNS lookups when libravatar is activated fixing #6046 * Avoid double slash in avatar link * Move avatar route to the correct place --- models/action_test.go | 2 +- models/user.go | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) (limited to 'models') diff --git a/models/action_test.go b/models/action_test.go index 16fdc7adcc..c90538ebe6 100644 --- a/models/action_test.go +++ b/models/action_test.go @@ -173,7 +173,7 @@ func TestPushCommits_AvatarLink(t *testing.T) { pushCommits.Len = len(pushCommits.Commits) assert.Equal(t, - "https://secure.gravatar.com/avatar/ab53a2911ddf9b4817ac01ddcd3d975f?d=identicon", + "/suburl/user/avatar/user2/-1", pushCommits.AvatarLink("user2@example.com")) assert.Equal(t, diff --git a/models/user.go b/models/user.go index e31f8b8534..030e23c383 100644 --- a/models/user.go +++ b/models/user.go @@ -17,6 +17,7 @@ import ( "image/png" "os" "path/filepath" + "strconv" "strings" "time" "unicode/utf8" @@ -374,9 +375,20 @@ func (u *User) generateRandomAvatar(e Engine) error { return nil } -// SizedRelAvatarLink returns a relative link to the user's avatar. When -// applicable, the link is for an avatar of the indicated size (in pixels). +// SizedRelAvatarLink returns a link to the user's avatar via +// the local explore page. Function returns immediately. +// When applicable, the link is for an avatar of the indicated size (in pixels). func (u *User) SizedRelAvatarLink(size int) string { + return strings.TrimRight(setting.AppSubURL, "/") + "/user/avatar/" + u.Name + "/" + strconv.Itoa(size) +} + +// RealSizedAvatarLink returns a link to the user's avatar. When +// applicable, the link is for an avatar of the indicated size (in pixels). +// +// This function make take time to return when federated avatars +// are in use, due to a DNS lookup need +// +func (u *User) RealSizedAvatarLink(size int) string { if u.ID == -1 { return base.DefaultAvatarLink() } -- cgit v1.2.3