mirror of
				https://github.com/go-gitea/gitea
				synced 2025-10-31 03:18:24 +00:00 
			
		
		
		
	Closes #23725   /claim #23725 --------- Signed-off-by: NorthRealm <155140859+NorthRealm@users.noreply.github.com> Co-authored-by: wxiaoguang <wxiaoguang@gmail.com> Co-authored-by: ChristopherHX <christopher.homberger@web.de>
		
			
				
	
	
		
			90 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Copyright 2025 The Gitea Authors. All rights reserved.
 | |
| // SPDX-License-Identifier: MIT
 | |
| 
 | |
| package setting
 | |
| 
 | |
| import (
 | |
| 	"net/http"
 | |
| 
 | |
| 	"code.gitea.io/gitea/models/unit"
 | |
| 	user_model "code.gitea.io/gitea/models/user"
 | |
| 	"code.gitea.io/gitea/modules/optional"
 | |
| 	"code.gitea.io/gitea/modules/setting"
 | |
| 	"code.gitea.io/gitea/modules/templates"
 | |
| 	"code.gitea.io/gitea/services/context"
 | |
| 	"code.gitea.io/gitea/services/user"
 | |
| )
 | |
| 
 | |
| const tplSettingsNotifications templates.TplName = "user/settings/notifications"
 | |
| 
 | |
| // Notifications render user's notifications settings
 | |
| func Notifications(ctx *context.Context) {
 | |
| 	if !setting.Service.EnableNotifyMail {
 | |
| 		ctx.NotFound(nil)
 | |
| 		return
 | |
| 	}
 | |
| 
 | |
| 	ctx.Data["Title"] = ctx.Tr("notifications")
 | |
| 	ctx.Data["PageIsSettingsNotifications"] = true
 | |
| 	ctx.Data["EmailNotificationsPreference"] = ctx.Doer.EmailNotificationsPreference
 | |
| 
 | |
| 	actionsEmailPref, err := user_model.GetUserSetting(ctx, ctx.Doer.ID, user_model.SettingsKeyEmailNotificationGiteaActions, user_model.SettingEmailNotificationGiteaActionsFailureOnly)
 | |
| 	if err != nil {
 | |
| 		ctx.ServerError("GetUserSetting", err)
 | |
| 		return
 | |
| 	}
 | |
| 	ctx.Data["ActionsEmailNotificationsPreference"] = actionsEmailPref
 | |
| 
 | |
| 	ctx.HTML(http.StatusOK, tplSettingsNotifications)
 | |
| }
 | |
| 
 | |
| // NotificationsEmailPost set user's email notification preference
 | |
| func NotificationsEmailPost(ctx *context.Context) {
 | |
| 	if !setting.Service.EnableNotifyMail {
 | |
| 		ctx.NotFound(nil)
 | |
| 		return
 | |
| 	}
 | |
| 
 | |
| 	preference := ctx.FormString("preference")
 | |
| 	if !(preference == user_model.EmailNotificationsEnabled ||
 | |
| 		preference == user_model.EmailNotificationsOnMention ||
 | |
| 		preference == user_model.EmailNotificationsDisabled ||
 | |
| 		preference == user_model.EmailNotificationsAndYourOwn) {
 | |
| 		ctx.Flash.Error(ctx.Tr("invalid_data", preference))
 | |
| 		ctx.Redirect(setting.AppSubURL + "/user/settings/notifications")
 | |
| 		return
 | |
| 	}
 | |
| 	opts := &user.UpdateOptions{
 | |
| 		EmailNotificationsPreference: optional.Some(preference),
 | |
| 	}
 | |
| 	if err := user.UpdateUser(ctx, ctx.Doer, opts); err != nil {
 | |
| 		ctx.ServerError("UpdateUser", err)
 | |
| 		return
 | |
| 	}
 | |
| 	ctx.Flash.Success(ctx.Tr("settings.email_preference_set_success"))
 | |
| 	ctx.Redirect(setting.AppSubURL + "/user/settings/notifications")
 | |
| }
 | |
| 
 | |
| // NotificationsActionsEmailPost set user's email notification preference on Gitea Actions
 | |
| func NotificationsActionsEmailPost(ctx *context.Context) {
 | |
| 	if !setting.Actions.Enabled || unit.TypeActions.UnitGlobalDisabled() {
 | |
| 		ctx.NotFound(nil)
 | |
| 		return
 | |
| 	}
 | |
| 
 | |
| 	preference := ctx.FormString("preference")
 | |
| 	if !(preference == user_model.SettingEmailNotificationGiteaActionsAll ||
 | |
| 		preference == user_model.SettingEmailNotificationGiteaActionsDisabled ||
 | |
| 		preference == user_model.SettingEmailNotificationGiteaActionsFailureOnly) {
 | |
| 		ctx.Flash.Error(ctx.Tr("invalid_data", preference))
 | |
| 		ctx.Redirect(setting.AppSubURL + "/user/settings/notifications")
 | |
| 		return
 | |
| 	}
 | |
| 	if err := user_model.SetUserSetting(ctx, ctx.Doer.ID, user_model.SettingsKeyEmailNotificationGiteaActions, preference); err != nil {
 | |
| 		ctx.ServerError("SetUserSetting", err)
 | |
| 		return
 | |
| 	}
 | |
| 	ctx.Flash.Success(ctx.Tr("settings.email_preference_set_success"))
 | |
| 	ctx.Redirect(setting.AppSubURL + "/user/settings/notifications")
 | |
| }
 |