2019-09-06 10:20:09 +08: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 comments
import (
"code.gitea.io/gitea/models"
2021-09-19 19:49:59 +08:00
"code.gitea.io/gitea/models/db"
2021-10-11 06:40:03 +08:00
"code.gitea.io/gitea/models/issues"
2019-10-30 18:02:46 +08:00
"code.gitea.io/gitea/modules/notification"
2021-10-11 06:40:03 +08:00
"code.gitea.io/gitea/modules/timeutil"
2019-09-06 10:20:09 +08:00
)
2019-09-25 01:39:50 +08:00
// CreateIssueComment creates a plain issue comment.
func CreateIssueComment ( doer * models . User , repo * models . Repository , issue * models . Issue , content string , attachments [ ] string ) ( * models . Comment , error ) {
comment , err := models . CreateComment ( & models . CreateCommentOptions {
Type : models . CommentTypeComment ,
Doer : doer ,
Repo : repo ,
Issue : issue ,
Content : content ,
Attachments : attachments ,
} )
if err != nil {
return nil , err
}
2021-10-11 06:40:03 +08:00
err = issues . SaveIssueContentHistory ( db . GetEngine ( db . DefaultContext ) , doer . ID , issue . ID , comment . ID , timeutil . TimeStampNow ( ) , comment . Content , true )
if err != nil {
return nil , err
}
2021-09-23 16:45:36 +01:00
mentions , err := issue . FindAndUpdateIssueMentions ( db . DefaultContext , doer , comment . Content )
2021-01-02 18:04:02 +01:00
if err != nil {
return nil , err
}
2021-10-11 06:40:03 +08:00
2021-01-02 18:04:02 +01:00
notification . NotifyCreateIssueComment ( doer , repo , issue , comment , mentions )
2019-10-30 18:02:46 +08:00
2019-09-25 01:39:50 +08:00
return comment , nil
}
// UpdateComment updates information of comment.
func UpdateComment ( c * models . Comment , doer * models . User , oldContent string ) error {
if err := models . UpdateComment ( c , doer ) ; err != nil {
return err
}
2021-10-11 06:40:03 +08:00
if c . Type == models . CommentTypeComment && c . Content != oldContent {
err := issues . SaveIssueContentHistory ( db . GetEngine ( db . DefaultContext ) , doer . ID , c . IssueID , c . ID , timeutil . TimeStampNow ( ) , c . Content , false )
if err != nil {
return err
}
}
2019-10-30 18:02:46 +08:00
notification . NotifyUpdateComment ( doer , c , oldContent )
2019-09-25 01:39:50 +08:00
return nil
}
// DeleteComment deletes the comment
2021-01-22 03:56:19 +01:00
func DeleteComment ( doer * models . User , comment * models . Comment ) error {
if err := models . DeleteComment ( comment ) ; err != nil {
2019-09-25 01:39:50 +08:00
return err
}
2019-10-30 18:02:46 +08:00
notification . NotifyDeleteComment ( doer , comment )
2019-09-25 01:39:50 +08:00
return nil
}