2019-09-24 08:02:49 +03:00
// Copyright 2019 The Gitea Authors. All rights reserved.
2022-11-27 21:20:29 +03:00
// SPDX-License-Identifier: MIT
2019-09-24 08:02:49 +03:00
package mailer
import (
2022-01-20 02:26:57 +03:00
"context"
2022-08-25 05:31:57 +03:00
activities_model "code.gitea.io/gitea/models/activities"
2022-06-13 12:37:59 +03:00
issues_model "code.gitea.io/gitea/models/issues"
2021-11-24 12:49:20 +03:00
user_model "code.gitea.io/gitea/models/user"
2022-10-12 08:18:26 +03:00
"code.gitea.io/gitea/modules/container"
2019-09-24 08:02:49 +03:00
"code.gitea.io/gitea/modules/log"
2021-08-12 10:26:33 +03:00
"code.gitea.io/gitea/modules/setting"
2019-09-24 08:02:49 +03:00
)
2021-04-02 13:25:13 +03:00
// MailParticipantsComment sends new comment emails to repository watchers and mentioned people.
2022-08-25 05:31:57 +03:00
func MailParticipantsComment ( ctx context . Context , c * issues_model . Comment , opType activities_model . ActionType , issue * issues_model . Issue , mentions [ ] * user_model . User ) error {
2021-08-12 10:26:33 +03:00
if setting . MailService == nil {
// No mail service configured
return nil
}
2021-05-30 12:38:38 +03:00
content := c . Content
2022-06-13 12:37:59 +03:00
if c . Type == issues_model . CommentTypePullRequestPush {
2021-05-30 12:38:38 +03:00
content = ""
}
2021-04-02 13:25:13 +03:00
if err := mailIssueCommentToParticipants (
2019-11-18 11:08:20 +03:00
& mailCommentContext {
2022-01-20 02:26:57 +03:00
Context : ctx ,
2019-11-18 11:08:20 +03:00
Issue : issue ,
Doer : c . Poster ,
ActionType : opType ,
2021-05-30 12:38:38 +03:00
Content : content ,
2019-11-18 11:08:20 +03:00
Comment : c ,
2021-04-02 13:25:13 +03:00
} , mentions ) ; err != nil {
2019-11-07 16:34:28 +03:00
log . Error ( "mailIssueCommentToParticipants: %v" , err )
2019-09-24 08:02:49 +03:00
}
return nil
}
2021-01-02 20:04:02 +03:00
// MailMentionsComment sends email to users mentioned in a code comment
2022-06-13 12:37:59 +03:00
func MailMentionsComment ( ctx context . Context , pr * issues_model . PullRequest , c * issues_model . Comment , mentions [ ] * user_model . User ) ( err error ) {
2021-08-12 10:26:33 +03:00
if setting . MailService == nil {
// No mail service configured
return nil
}
2022-10-12 08:18:26 +03:00
visited := make ( container . Set [ int64 ] , len ( mentions ) + 1 )
visited . Add ( c . Poster . ID )
2021-01-02 20:04:02 +03:00
if err = mailIssueCommentBatch (
& mailCommentContext {
2022-01-20 02:26:57 +03:00
Context : ctx ,
2021-01-02 20:04:02 +03:00
Issue : pr . Issue ,
Doer : c . Poster ,
2022-08-25 05:31:57 +03:00
ActionType : activities_model . ActionCommentPull ,
2021-01-02 20:04:02 +03:00
Content : c . Content ,
Comment : c ,
2021-04-02 13:25:13 +03:00
} , mentions , visited , true ) ; err != nil {
2021-01-02 20:04:02 +03:00
log . Error ( "mailIssueCommentBatch: %v" , err )
}
return nil
}