diff --git a/internal/web/profile.go b/internal/web/profile.go index d421efc..c2561db 100644 --- a/internal/web/profile.go +++ b/internal/web/profile.go @@ -66,10 +66,19 @@ func (s *WebService) HandleProfileEdit(w http.ResponseWriter, r *http.Request) { s.render(w, r, "profile/edit.html", data) return } - if err := s.users.CreateAvatar(r.Context(), data.User.Id, bytes); err != nil { - data.Error = "Could not save avatar" - s.render(w, r, "profile/edit.html", data) - return + // Check if the user already has an avatar; if so update, otherwise insert. + if _, err := s.users.GetAvatar(r.Context(), data.User.Id); err == nil { + if err := s.users.UpdateAvatar(r.Context(), data.User.Id, bytes); err != nil { + data.Error = "Could not save avatar" + s.render(w, r, "profile/edit.html", data) + return + } + } else { + if err := s.users.CreateAvatar(r.Context(), data.User.Id, bytes); err != nil { + data.Error = "Could not save avatar" + s.render(w, r, "profile/edit.html", data) + return + } } }