aboutsummaryrefslogtreecommitdiff
path: root/internal/db/issue_mail.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/db/issue_mail.go')
-rw-r--r--internal/db/issue_mail.go16
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
}