diff options
author | Joe Chen <jc@unknwon.io> | 2023-02-04 12:22:37 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-04 12:22:37 +0800 |
commit | ed51686240ff84e3cc12be8bc4311c529d44faee (patch) | |
tree | e8cdbc9a2870d1143e81b2524626bfd04ea6d1c7 /internal/db/issue_mail.go | |
parent | cc4d4eacad6b6a92ebb3380715dcaee3bcc5fd41 (diff) |
refactor(db): migrate methods off `user.go` (#7333)
Diffstat (limited to 'internal/db/issue_mail.go')
-rw-r--r-- | internal/db/issue_mail.go | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/internal/db/issue_mail.go b/internal/db/issue_mail.go index d529ecdd..f094cf98 100644 --- a/internal/db/issue_mail.go +++ b/internal/db/issue_mail.go @@ -8,6 +8,7 @@ import ( "context" "fmt" + "github.com/pkg/errors" "github.com/unknwon/com" log "unknwon.dev/clog/v2" @@ -99,6 +100,8 @@ func NewMailerIssue(issue *Issue) email.Issue { // 1. Repository watchers, users who participated in comments and the assignee. // 2. Users who are not in 1. but get mentioned in current issue/comment. func mailIssueCommentToParticipants(issue *Issue, doer *User, mentions []string) error { + ctx := context.TODO() + if !conf.User.EnableEmailNotification { return nil } @@ -125,7 +128,7 @@ func mailIssueCommentToParticipants(issue *Issue, doer *User, mentions []string) continue } - to, err := Users.GetByID(context.TODO(), watchers[i].UserID) + to, err := Users.GetByID(ctx, watchers[i].UserID) if err != nil { return fmt.Errorf("GetUserByID [%d]: %v", watchers[i].UserID, err) } @@ -156,15 +159,20 @@ func mailIssueCommentToParticipants(issue *Issue, doer *User, mentions []string) // Mail mentioned people and exclude watchers. names = append(names, doer.Name) - tos = make([]string, 0, len(mentions)) // list of user names. + toUsernames := make([]string, 0, len(mentions)) // list of user names. for i := range mentions { if com.IsSliceContainsStr(names, mentions[i]) { continue } - tos = append(tos, mentions[i]) + toUsernames = append(toUsernames, mentions[i]) + } + + tos, err = Users.GetMailableEmailsByUsernames(ctx, toUsernames) + if err != nil { + return errors.Wrap(err, "get mailable emails by usernames") } - email.SendIssueMentionMail(NewMailerIssue(issue), NewMailerRepo(issue.Repo), NewMailerUser(doer), GetUserEmailsByNames(tos)) + email.SendIssueMentionMail(NewMailerIssue(issue), NewMailerRepo(issue.Repo), NewMailerUser(doer), tos) return nil } |