summaryrefslogtreecommitdiffstats
path: root/services/mailer/mail_repo.go
diff options
context:
space:
mode:
author6543 <6543@obermui.de>2021-04-02 12:25:13 +0200
committerGitHub <noreply@github.com>2021-04-02 11:25:13 +0100
commit80d6c6d7deb3f6a38ff6d09ec38ffb04de9da726 (patch)
tree8651abe082da4e920753f03ee4c37de1668ab826 /services/mailer/mail_repo.go
parentcc2d540092149166c9a0cef886b2e952ac9c75d7 (diff)
downloadgitea-80d6c6d7deb3f6a38ff6d09ec38ffb04de9da726.tar.gz
gitea-80d6c6d7deb3f6a38ff6d09ec38ffb04de9da726.zip
[refactor] mailer service (#15072)
* Unexport SendUserMail * Instead of "[]*models.User" or "[]string" lists infent "[]*MailRecipient" for mailer * adopt * code format * TODOs for "i18n" * clean * no fallback for lang -> just use english * lint * exec testComposeIssueCommentMessage per lang and use only emails * rm MailRecipient * Dont reload from users from db if you alredy have in ram * nits * minimize diff Signed-off-by: 6543 <6543@obermui.de> * localize subjects * linter ... * Tr extend * start tmpl edit ... * Apply suggestions from code review * use translation.Locale * improve mailIssueCommentBatch Signed-off-by: Andrew Thornton <art27@cantab.net> * add i18n to datas Signed-off-by: Andrew Thornton <art27@cantab.net> * a comment Co-authored-by: Andrew Thornton <art27@cantab.net>
Diffstat (limited to 'services/mailer/mail_repo.go')
-rw-r--r--services/mailer/mail_repo.go54
1 files changed, 36 insertions, 18 deletions
diff --git a/services/mailer/mail_repo.go b/services/mailer/mail_repo.go
index b9d24f4334..c742101ee1 100644
--- a/services/mailer/mail_repo.go
+++ b/services/mailer/mail_repo.go
@@ -9,42 +9,60 @@ import (
"fmt"
"code.gitea.io/gitea/models"
+ "code.gitea.io/gitea/modules/translation"
)
// SendRepoTransferNotifyMail triggers a notification e-mail when a pending repository transfer was created
func SendRepoTransferNotifyMail(doer, newOwner *models.User, repo *models.Repository) error {
- var (
- emails []string
- destination string
- content bytes.Buffer
- )
-
if newOwner.IsOrganization() {
users, err := models.GetUsersWhoCanCreateOrgRepo(newOwner.ID)
if err != nil {
return err
}
- for i := range users {
- emails = append(emails, users[i].Email)
+ langMap := make(map[string][]string)
+ for _, user := range users {
+ langMap[user.Language] = append(langMap[user.Language], user.Email)
+ }
+
+ for lang, tos := range langMap {
+ if err := sendRepoTransferNotifyMailPerLang(lang, newOwner, doer, tos, repo); err != nil {
+ return err
+ }
}
+
+ return nil
+ }
+
+ return sendRepoTransferNotifyMailPerLang(newOwner.Language, newOwner, doer, []string{newOwner.Email}, repo)
+}
+
+// sendRepoTransferNotifyMail triggers a notification e-mail when a pending repository transfer was created for each language
+func sendRepoTransferNotifyMailPerLang(lang string, newOwner, doer *models.User, emails []string, repo *models.Repository) error {
+ var (
+ locale = translation.NewLocale(lang)
+ content bytes.Buffer
+ )
+
+ destination := locale.Tr("mail.repo.transfer.to_you")
+ subject := locale.Tr("mail.repo.transfer.subject_to_you", doer.DisplayName(), repo.FullName())
+ if newOwner.IsOrganization() {
destination = newOwner.DisplayName()
- } else {
- emails = []string{newOwner.Email}
- destination = "you"
+ subject = locale.Tr("mail.repo.transfer.subject_to", doer.DisplayName(), repo.FullName(), destination)
}
- subject := fmt.Sprintf("%s would like to transfer \"%s\" to %s", doer.DisplayName(), repo.FullName(), destination)
data := map[string]interface{}{
- "Doer": doer,
- "User": repo.Owner,
- "Repo": repo.FullName(),
- "Link": repo.HTMLURL(),
- "Subject": subject,
-
+ "Doer": doer,
+ "User": repo.Owner,
+ "Repo": repo.FullName(),
+ "Link": repo.HTMLURL(),
+ "Subject": subject,
+ "i18n": locale,
+ "Language": locale.Language(),
"Destination": destination,
}
+ // TODO: i18n templates?
if err := bodyTemplates.ExecuteTemplate(&content, string(mailRepoTransferNotify), data); err != nil {
return err
}