summaryrefslogtreecommitdiffstats
path: root/routers/user/setting/account.go
diff options
context:
space:
mode:
Diffstat (limited to 'routers/user/setting/account.go')
-rw-r--r--routers/user/setting/account.go22
1 files changed, 22 insertions, 0 deletions
diff --git a/routers/user/setting/account.go b/routers/user/setting/account.go
index c6b5c0c2dc..674606cce8 100644
--- a/routers/user/setting/account.go
+++ b/routers/user/setting/account.go
@@ -6,6 +6,8 @@
package setting
import (
+ "errors"
+
"code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/auth"
"code.gitea.io/gitea/modules/base"
@@ -24,6 +26,7 @@ func Account(ctx *context.Context) {
ctx.Data["Title"] = ctx.Tr("settings")
ctx.Data["PageIsSettingsAccount"] = true
ctx.Data["Email"] = ctx.User.Email
+ ctx.Data["EmailNotificationsPreference"] = ctx.User.EmailNotifications()
loadAccountData(ctx)
@@ -82,6 +85,25 @@ func EmailPost(ctx *context.Context, form auth.AddEmailForm) {
ctx.Redirect(setting.AppSubURL + "/user/settings/account")
return
}
+ // Set Email Notification Preference
+ if ctx.Query("_method") == "NOTIFICATION" {
+ preference := ctx.Query("preference")
+ if !(preference == models.EmailNotificationsEnabled ||
+ preference == models.EmailNotificationsOnMention ||
+ preference == models.EmailNotificationsDisabled) {
+ log.Error("Email notifications preference change returned unrecognized option %s: %s", preference, ctx.User.Name)
+ ctx.ServerError("SetEmailPreference", errors.New("option unrecognized"))
+ return
+ }
+ if err := ctx.User.SetEmailNotifications(preference); err != nil {
+ log.Error("Set Email Notifications failed: %v", err)
+ ctx.ServerError("SetEmailNotifications", err)
+ return
+ }
+ log.Trace("Email notifications preference made %s: %s", preference, ctx.User.Name)
+ ctx.Redirect(setting.AppSubURL + "/user/settings/account")
+ return
+ }
if ctx.HasError() {
loadAccountData(ctx)