2019-09-24 08:02:49 +03:00
// Copyright 2019 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package mailer
import (
"fmt"
"code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/log"
2019-10-14 01:29:10 +03:00
"code.gitea.io/gitea/modules/references"
2019-09-24 08:02:49 +03:00
)
// MailParticipantsComment sends new comment emails to repository watchers
// and mentioned people.
func MailParticipantsComment ( c * models . Comment , opType models . ActionType , issue * models . Issue ) error {
return mailParticipantsComment ( models . DefaultDBContext ( ) , c , opType , issue )
}
func mailParticipantsComment ( ctx models . DBContext , c * models . Comment , opType models . ActionType , issue * models . Issue ) ( err error ) {
2019-10-14 01:29:10 +03:00
rawMentions := references . FindAllMentionsMarkdown ( c . Content )
2019-10-10 19:45:11 +03:00
userMentions , err := issue . ResolveMentionsByVisibility ( ctx , c . Poster , rawMentions )
if err != nil {
return fmt . Errorf ( "ResolveMentionsByVisibility [%d]: %v" , c . IssueID , err )
}
if err = models . UpdateIssueMentions ( ctx , c . IssueID , userMentions ) ; err != nil {
2019-09-24 08:02:49 +03:00
return fmt . Errorf ( "UpdateIssueMentions [%d]: %v" , c . IssueID , err )
}
2019-11-18 11:08:20 +03:00
mentions := make ( [ ] int64 , len ( userMentions ) )
2019-10-10 19:45:11 +03:00
for i , u := range userMentions {
2019-11-18 11:08:20 +03:00
mentions [ i ] = u . ID
2019-10-10 19:45:11 +03:00
}
2019-11-18 11:08:20 +03:00
if err = mailIssueCommentToParticipants (
& mailCommentContext {
Issue : issue ,
Doer : c . Poster ,
ActionType : opType ,
Content : c . Content ,
Comment : c ,
} , 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
}