diff options
author | 6543 <6543@obermui.de> | 2021-04-02 12:25:13 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-02 11:25:13 +0100 |
commit | 80d6c6d7deb3f6a38ff6d09ec38ffb04de9da726 (patch) | |
tree | 8651abe082da4e920753f03ee4c37de1668ab826 /services/mailer/mail_repo.go | |
parent | cc2d540092149166c9a0cef886b2e952ac9c75d7 (diff) | |
download | gitea-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.go | 54 |
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 } |