aboutsummaryrefslogtreecommitdiffstats
path: root/services/mailer
diff options
context:
space:
mode:
authorwxiaoguang <wxiaoguang@gmail.com>2023-10-31 22:11:48 +0800
committerGitHub <noreply@github.com>2023-10-31 22:11:48 +0800
commita4b242ae7a3edc6302a2730a01cda5a2e76bd6b5 (patch)
tree525ac99acfa676038e6d0af57bec90c4e0517560 /services/mailer
parent16d15ce087cd4b9ddf91f6acff7eacac24e6aac5 (diff)
downloadgitea-a4b242ae7a3edc6302a2730a01cda5a2e76bd6b5.tar.gz
gitea-a4b242ae7a3edc6302a2730a01cda5a2e76bd6b5.zip
Clean up template locale usage (#27856)
After many refactoring PRs for the "locale" and "template context function", now the ".locale" is not needed for web templates any more. This PR does a clean up for: 1. Remove `ctx.Data["locale"]` for web context. 2. Use `ctx.Locale` in `500.tmpl`, for consistency. 3. Add a test check for `500 page` locale usage. 4. Remove the `Str2html` and `DotEscape` from mail template context data, they are copy&paste errors introduced by #19169 and #16200 . These functions are template functions (provided by the common renderer), but not template data variables. 5. Make email `SendAsync` function mockable (I was planning to add more tests but it would make this PR much too complex, so the tests could be done in another PR)
Diffstat (limited to 'services/mailer')
-rw-r--r--services/mailer/mail.go28
-rw-r--r--services/mailer/mail_issue.go2
-rw-r--r--services/mailer/mail_release.go8
-rw-r--r--services/mailer/mail_repo.go6
-rw-r--r--services/mailer/mail_team_invite.go6
-rw-r--r--services/mailer/mailer.go11
6 files changed, 15 insertions, 46 deletions
diff --git a/services/mailer/mail.go b/services/mailer/mail.go
index 0210128046..1f139d233f 100644
--- a/services/mailer/mail.go
+++ b/services/mailer/mail.go
@@ -26,7 +26,6 @@ import (
"code.gitea.io/gitea/modules/markup"
"code.gitea.io/gitea/modules/markup/markdown"
"code.gitea.io/gitea/modules/setting"
- "code.gitea.io/gitea/modules/templates"
"code.gitea.io/gitea/modules/timeutil"
"code.gitea.io/gitea/modules/translation"
incoming_payload "code.gitea.io/gitea/services/mailer/incoming/payload"
@@ -68,15 +67,12 @@ func SendTestMail(email string) error {
func sendUserMail(language string, u *user_model.User, tpl base.TplName, code, subject, info string) {
locale := translation.NewLocale(language)
data := map[string]any{
+ "locale": locale,
"DisplayName": u.DisplayName(),
"ActiveCodeLives": timeutil.MinutesToFriendly(setting.Service.ActiveCodeLives, locale),
"ResetPwdCodeLives": timeutil.MinutesToFriendly(setting.Service.ResetPwdCodeLives, locale),
"Code": code,
"Language": locale.Language(),
- // helper
- "locale": locale,
- "Str2html": templates.Str2html,
- "DotEscape": templates.DotEscape,
}
var content bytes.Buffer
@@ -119,15 +115,12 @@ func SendActivateEmailMail(u *user_model.User, email *user_model.EmailAddress) {
}
locale := translation.NewLocale(u.Language)
data := map[string]any{
+ "locale": locale,
"DisplayName": u.DisplayName(),
"ActiveCodeLives": timeutil.MinutesToFriendly(setting.Service.ActiveCodeLives, locale),
"Code": u.GenerateEmailActivateCode(email.Email),
"Email": email.Email,
"Language": locale.Language(),
- // helper
- "locale": locale,
- "Str2html": templates.Str2html,
- "DotEscape": templates.DotEscape,
}
var content bytes.Buffer
@@ -152,13 +145,10 @@ func SendRegisterNotifyMail(u *user_model.User) {
locale := translation.NewLocale(u.Language)
data := map[string]any{
+ "locale": locale,
"DisplayName": u.DisplayName(),
"Username": u.Name,
"Language": locale.Language(),
- // helper
- "locale": locale,
- "Str2html": templates.Str2html,
- "DotEscape": templates.DotEscape,
}
var content bytes.Buffer
@@ -185,14 +175,11 @@ func SendCollaboratorMail(u, doer *user_model.User, repo *repo_model.Repository)
subject := locale.Tr("mail.repo.collaborator.added.subject", doer.DisplayName(), repoName)
data := map[string]any{
+ "locale": locale,
"Subject": subject,
"RepoName": repoName,
"Link": repo.HTMLURL(),
"Language": locale.Language(),
- // helper
- "locale": locale,
- "Str2html": templates.Str2html,
- "DotEscape": templates.DotEscape,
}
var content bytes.Buffer
@@ -259,6 +246,7 @@ func composeIssueCommentMessages(ctx *mailCommentContext, lang string, recipient
locale := translation.NewLocale(lang)
mailMeta := map[string]any{
+ "locale": locale,
"FallbackSubject": fallback,
"Body": body,
"Link": link,
@@ -275,10 +263,6 @@ func composeIssueCommentMessages(ctx *mailCommentContext, lang string, recipient
"ReviewComments": reviewComments,
"Language": locale.Language(),
"CanReply": setting.IncomingEmail.Enabled && commentType != issues_model.CommentTypePullRequestPush,
- // helper
- "locale": locale,
- "Str2html": templates.Str2html,
- "DotEscape": templates.DotEscape,
}
var mailSubject bytes.Buffer
@@ -469,7 +453,7 @@ func SendIssueAssignedMail(ctx context.Context, issue *issues_model.Issue, doer
if err != nil {
return err
}
- SendAsyncs(msgs)
+ SendAsync(msgs...)
}
return nil
}
diff --git a/services/mailer/mail_issue.go b/services/mailer/mail_issue.go
index baa9f1d9ab..fab3315be2 100644
--- a/services/mailer/mail_issue.go
+++ b/services/mailer/mail_issue.go
@@ -162,7 +162,7 @@ func mailIssueCommentBatch(ctx *mailCommentContext, users []*user_model.User, vi
if err != nil {
return err
}
- SendAsyncs(msgs)
+ SendAsync(msgs...)
receivers = receivers[:i]
}
}
diff --git a/services/mailer/mail_release.go b/services/mailer/mail_release.go
index 7bc3db3fe6..88973a6be2 100644
--- a/services/mailer/mail_release.go
+++ b/services/mailer/mail_release.go
@@ -14,7 +14,6 @@ import (
"code.gitea.io/gitea/modules/markup"
"code.gitea.io/gitea/modules/markup/markdown"
"code.gitea.io/gitea/modules/setting"
- "code.gitea.io/gitea/modules/templates"
"code.gitea.io/gitea/modules/translation"
)
@@ -69,13 +68,10 @@ func mailNewRelease(ctx context.Context, lang string, tos []string, rel *repo_mo
subject := locale.Tr("mail.release.new.subject", rel.TagName, rel.Repo.FullName())
mailMeta := map[string]any{
+ "locale": locale,
"Release": rel,
"Subject": subject,
"Language": locale.Language(),
- // helper
- "locale": locale,
- "Str2html": templates.Str2html,
- "DotEscape": templates.DotEscape,
}
var mailBody bytes.Buffer
@@ -95,5 +91,5 @@ func mailNewRelease(ctx context.Context, lang string, tos []string, rel *repo_mo
msgs = append(msgs, msg)
}
- SendAsyncs(msgs)
+ SendAsync(msgs...)
}
diff --git a/services/mailer/mail_repo.go b/services/mailer/mail_repo.go
index e9c1991b5b..b89dcd43b5 100644
--- a/services/mailer/mail_repo.go
+++ b/services/mailer/mail_repo.go
@@ -12,7 +12,6 @@ import (
repo_model "code.gitea.io/gitea/models/repo"
user_model "code.gitea.io/gitea/models/user"
"code.gitea.io/gitea/modules/setting"
- "code.gitea.io/gitea/modules/templates"
"code.gitea.io/gitea/modules/translation"
)
@@ -65,6 +64,7 @@ func sendRepoTransferNotifyMailPerLang(lang string, newOwner, doer *user_model.U
}
data := map[string]any{
+ "locale": locale,
"Doer": doer,
"User": repo.Owner,
"Repo": repo.FullName(),
@@ -72,10 +72,6 @@ func sendRepoTransferNotifyMailPerLang(lang string, newOwner, doer *user_model.U
"Subject": subject,
"Language": locale.Language(),
"Destination": destination,
- // helper
- "locale": locale,
- "Str2html": templates.Str2html,
- "DotEscape": templates.DotEscape,
}
if err := bodyTemplates.ExecuteTemplate(&content, string(mailRepoTransferNotify), data); err != nil {
diff --git a/services/mailer/mail_team_invite.go b/services/mailer/mail_team_invite.go
index 88ad0c9836..ab32beefac 100644
--- a/services/mailer/mail_team_invite.go
+++ b/services/mailer/mail_team_invite.go
@@ -14,7 +14,6 @@ import (
"code.gitea.io/gitea/modules/base"
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/setting"
- "code.gitea.io/gitea/modules/templates"
"code.gitea.io/gitea/modules/translation"
)
@@ -53,16 +52,13 @@ func MailTeamInvite(ctx context.Context, inviter *user_model.User, team *org_mod
subject := locale.Tr("mail.team_invite.subject", inviter.DisplayName(), org.DisplayName())
mailMeta := map[string]any{
+ "locale": locale,
"Inviter": inviter,
"Organization": org,
"Team": team,
"Invite": invite,
"Subject": subject,
"InviteURL": inviteURL,
- // helper
- "locale": locale,
- "Str2html": templates.Str2html,
- "DotEscape": templates.DotEscape,
}
var mailBody bytes.Buffer
diff --git a/services/mailer/mailer.go b/services/mailer/mailer.go
index 42d7d5ad5d..5e8e3dbb38 100644
--- a/services/mailer/mailer.go
+++ b/services/mailer/mailer.go
@@ -425,15 +425,12 @@ func NewContext(ctx context.Context) {
go graceful.GetManager().RunWithCancel(mailQueue)
}
-// SendAsync send mail asynchronously
-func SendAsync(msg *Message) {
- SendAsyncs([]*Message{msg})
-}
+// SendAsync send emails asynchronously (make it mockable)
+var SendAsync = sendAsync
-// SendAsyncs send mails asynchronously
-func SendAsyncs(msgs []*Message) {
+func sendAsync(msgs ...*Message) {
if setting.MailService == nil {
- log.Error("Mailer: SendAsyncs is being invoked but mail service hasn't been initialized")
+ log.Error("Mailer: SendAsync is being invoked but mail service hasn't been initialized")
return
}