aboutsummaryrefslogtreecommitdiffstats
path: root/models/user_avatar.go
diff options
context:
space:
mode:
Diffstat (limited to 'models/user_avatar.go')
-rw-r--r--models/user_avatar.go65
1 files changed, 22 insertions, 43 deletions
diff --git a/models/user_avatar.go b/models/user_avatar.go
index a7ca1c9151..b8296568c2 100644
--- a/models/user_avatar.go
+++ b/models/user_avatar.go
@@ -9,9 +9,8 @@ import (
"fmt"
"image/png"
"io"
- "strconv"
- "strings"
+ "code.gitea.io/gitea/models/avatars"
"code.gitea.io/gitea/models/db"
"code.gitea.io/gitea/modules/avatar"
"code.gitea.io/gitea/modules/log"
@@ -40,7 +39,7 @@ func (u *User) generateRandomAvatar(e db.Engine) error {
return fmt.Errorf("RandomImage: %v", err)
}
- u.Avatar = HashEmail(seed)
+ u.Avatar = avatars.HashEmail(seed)
// Don't share the images so that we can delete them easily
if err := storage.SaveFrom(storage.Avatars, u.CustomAvatarRelativePath(), func(w io.Writer) error {
@@ -60,61 +59,41 @@ func (u *User) generateRandomAvatar(e db.Engine) error {
return nil
}
-// 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 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 {
+// AvatarLinkWithSize returns a link to the user's avatar with size. size <= 0 means default size
+func (u *User) AvatarLinkWithSize(size int) string {
if u.ID == -1 {
- return DefaultAvatarLink()
+ // ghost user
+ return avatars.DefaultAvatarLink()
}
+ useLocalAvatar := false
+ autoGenerateAvatar := false
+
switch {
case u.UseCustomAvatar:
- if u.Avatar == "" {
- return DefaultAvatarLink()
- }
- if size > 0 {
- return setting.AppSubURL + "/avatars/" + u.Avatar + "?size=" + strconv.Itoa(size)
- }
- return setting.AppSubURL + "/avatars/" + u.Avatar
+ useLocalAvatar = true
case setting.DisableGravatar, setting.OfflineMode:
- if u.Avatar == "" {
+ useLocalAvatar = true
+ autoGenerateAvatar = true
+ }
+
+ if useLocalAvatar {
+ if u.Avatar == "" && autoGenerateAvatar {
if err := u.GenerateRandomAvatar(); err != nil {
log.Error("GenerateRandomAvatar: %v", err)
}
}
- if size > 0 {
- return setting.AppSubURL + "/avatars/" + u.Avatar + "?size=" + strconv.Itoa(size)
+ if u.Avatar == "" {
+ return avatars.DefaultAvatarLink()
}
- return setting.AppSubURL + "/avatars/" + u.Avatar
+ return avatars.GenerateUserAvatarImageLink(u.Avatar, size)
}
- return SizedAvatarLink(u.AvatarEmail, size)
+ return avatars.GenerateEmailAvatarFastLink(u.AvatarEmail, size)
}
-// RelAvatarLink returns a relative link to the user's avatar. The link
-// may either be a sub-URL to this site, or a full URL to an external avatar
-// service.
-func (u *User) RelAvatarLink() string {
- return u.SizedRelAvatarLink(DefaultAvatarSize)
-}
-
-// AvatarLink returns user avatar absolute link.
+// AvatarLink returns a avatar link with default size
func (u *User) AvatarLink() string {
- link := u.RelAvatarLink()
- if link[0] == '/' && link[1] != '/' {
- return setting.AppURL + strings.TrimPrefix(link, setting.AppSubURL)[1:]
- }
- return link
+ return u.AvatarLinkWithSize(0)
}
// UploadAvatar saves custom avatar for user.