From 2c09582d89f6ff075fdfb8fce5f039b8ac5a920f Mon Sep 17 00:00:00 2001 From: Corey Hulen Date: Wed, 21 Dec 2016 05:33:04 -0800 Subject: [PATCH] Fixing image profiles (#4863) * Fixing image profiles * Fixing break --- api/user.go | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/api/user.go b/api/user.go index 4413815f9c..7e5a50fc4b 100644 --- a/api/user.go +++ b/api/user.go @@ -1251,6 +1251,7 @@ func createProfileImage(username string, userId string) ([]byte, *model.AppError func getProfileImage(c *Context, w http.ResponseWriter, r *http.Request) { params := mux.Vars(r) id := params["user_id"] + readFailed := false if result := <-Srv.Store.User().Get(id); result.Err != nil { c.Err = result.Err @@ -1268,15 +1269,18 @@ func getProfileImage(c *Context, w http.ResponseWriter, r *http.Request) { path := "users/" + id + "/profile.png" if data, err := ReadFile(path); err != nil { + readFailed = true if img, err = createProfileImage(result.Data.(*model.User).Username, id); err != nil { c.Err = err return } - if err := WriteFile(img, path); err != nil { - c.Err = err - return + if result.Data.(*model.User).LastPictureUpdate == 0 { + if err := WriteFile(img, path); err != nil { + c.Err = err + return + } } } else { @@ -1284,7 +1288,7 @@ func getProfileImage(c *Context, w http.ResponseWriter, r *http.Request) { } } - if c.Session.UserId == id { + if c.Session.UserId == id || readFailed { w.Header().Set("Cache-Control", "max-age=300, public") // 5 mins } else { w.Header().Set("Cache-Control", "max-age=86400, public") // 24 hrs