if !issue.IsClosed {
cmtType = CommentTypeReopen
}
- if _, err := createComment(e, &CreateCommentOptions{
+
+ var opts = &CreateCommentOptions{
Type: cmtType,
Doer: doer,
Repo: issue.Repo,
Issue: issue,
- }); err != nil {
+ }
+ comment, err := createCommentWithNoAction(e, opts)
+ if err != nil {
return err
}
-
- return nil
+ return sendCreateCommentAction(e, opts, comment)
}
// ChangeStatus changes issue status to open or closed.
return fmt.Errorf("loadRepo: %v", err)
}
- if _, err = createComment(sess, &CreateCommentOptions{
+ var opts = &CreateCommentOptions{
Type: CommentTypeChangeTitle,
Doer: doer,
Repo: issue.Repo,
Issue: issue,
OldTitle: oldTitle,
NewTitle: issue.Title,
- }); err != nil {
+ }
+ comment, err := createCommentWithNoAction(sess, opts)
+ if err != nil {
return fmt.Errorf("createComment: %v", err)
}
-
+ if err = sendCreateCommentAction(sess, opts, comment); err != nil {
+ return err
+ }
if err = issue.addCrossReferences(sess, doer, true); err != nil {
return err
}
if err := sess.Begin(); err != nil {
return err
}
- if _, err := createComment(sess, &CreateCommentOptions{
+ var opts = &CreateCommentOptions{
Type: CommentTypeDeleteBranch,
Doer: doer,
Repo: repo,
Issue: issue,
CommitSHA: branchName,
- }); err != nil {
+ }
+ comment, err := createCommentWithNoAction(sess, opts)
+ if err != nil {
+ return err
+ }
+ if err = sendCreateCommentAction(sess, opts, comment); err != nil {
return err
}
return err
}
- if _, err = createMilestoneComment(e, doer, opts.Repo, opts.Issue, 0, opts.Issue.MilestoneID); err != nil {
+ var opts = &CreateCommentOptions{
+ Type: CommentTypeMilestone,
+ Doer: doer,
+ Repo: opts.Repo,
+ Issue: opts.Issue,
+ OldMilestoneID: 0,
+ MilestoneID: opts.Issue.MilestoneID,
+ }
+ comment, err := createCommentWithNoAction(e, opts)
+ if err != nil {
+ return err
+ }
+
+ if err = sendCreateCommentAction(e, opts, comment); err != nil {
return err
}
}
return false, nil, fmt.Errorf("loadRepo: %v", err)
}
- // Comment
- comment, err = createComment(sess, &CreateCommentOptions{
+ var opts = &CreateCommentOptions{
Type: CommentTypeAssignees,
Doer: doer,
Repo: issue.Repo,
Issue: issue,
RemovedAssignee: removed,
AssigneeID: assigneeID,
- })
+ }
+ // Comment
+ comment, err = createCommentWithNoAction(sess, opts)
if err != nil {
return false, nil, fmt.Errorf("createComment: %v", err)
}
+ if err = sendCreateCommentAction(sess, opts, comment); err != nil {
+ return false, nil, err
+ }
// if pull request is in the middle of creation - don't call webhook
if isCreate {
return fmt.Sprintf("%s/files#%s", c.Issue.HTMLURL(), c.HashTag())
}
-func createComment(e *xorm.Session, opts *CreateCommentOptions) (_ *Comment, err error) {
+func createCommentWithNoAction(e *xorm.Session, opts *CreateCommentOptions) (_ *Comment, err error) {
var LabelID int64
if opts.Label != nil {
LabelID = opts.Label.ID
return nil, err
}
- if !opts.NoAction {
- if err = sendCreateCommentAction(e, opts, comment); err != nil {
- return nil, err
- }
- }
-
if err = comment.addCrossReferences(e, opts.Doer, false); err != nil {
return nil, err
}
return nil
}
-func createMilestoneComment(e *xorm.Session, doer *User, repo *Repository, issue *Issue, oldMilestoneID, milestoneID int64) (*Comment, error) {
- return createComment(e, &CreateCommentOptions{
- Type: CommentTypeMilestone,
- Doer: doer,
- Repo: repo,
- Issue: issue,
- OldMilestoneID: oldMilestoneID,
- MilestoneID: milestoneID,
- })
-}
-
func createDeadlineComment(e *xorm.Session, doer *User, issue *Issue, newDeadlineUnix timeutil.TimeStamp) (*Comment, error) {
-
var content string
var commentType CommentType
return nil, err
}
- return createComment(e, &CreateCommentOptions{
+ var opts = &CreateCommentOptions{
Type: commentType,
Doer: doer,
Repo: issue.Repo,
Issue: issue,
Content: content,
- })
+ }
+ comment, err := createCommentWithNoAction(e, opts)
+ if err != nil {
+ return nil, err
+ }
+ return comment, sendCreateCommentAction(e, opts, comment)
}
// Creates issue dependency comment
}
// Make two comments, one in each issue
- _, err = createComment(e, &CreateCommentOptions{
+ var opts = &CreateCommentOptions{
Type: cType,
Doer: doer,
Repo: issue.Repo,
Issue: issue,
DependentIssueID: dependentIssue.ID,
- })
+ }
+ comment, err := createCommentWithNoAction(e, opts)
if err != nil {
return
}
+ if err = sendCreateCommentAction(e, opts, comment); err != nil {
+ return err
+ }
- _, err = createComment(e, &CreateCommentOptions{
+ opts = &CreateCommentOptions{
Type: cType,
Doer: doer,
Repo: issue.Repo,
Issue: dependentIssue,
DependentIssueID: issue.ID,
- })
+ }
+ comment, err = createCommentWithNoAction(e, opts)
if err != nil {
return
}
+ if err = sendCreateCommentAction(e, opts, comment); err != nil {
+ return err
+ }
return
}
RefCommentID int64
RefAction references.XRefAction
RefIsPull bool
- NoAction bool
}
// CreateComment creates comment of issue or commit.
return nil, err
}
- comment, err = createComment(sess, opts)
+ comment, err = createCommentWithNoAction(sess, opts)
+ if err != nil {
+ return nil, err
+ }
+
+ if err = sendCreateCommentAction(sess, opts, comment); err != nil {
+ return nil, err
+ }
+
+ if err = sess.Commit(); err != nil {
+ return nil, err
+ }
+
+ return comment, nil
+}
+
+// CreateCommentWithNoAction creates comment of issue or commit with no action created
+func CreateCommentWithNoAction(opts *CreateCommentOptions) (comment *Comment, err error) {
+ sess := x.NewSession()
+ defer sess.Close()
+ if err = sess.Begin(); err != nil {
+ return nil, err
+ }
+
+ comment, err = createCommentWithNoAction(sess, opts)
if err != nil {
return nil, err
}
return
}
- if _, err = createComment(e, &CreateCommentOptions{
+ var opts = &CreateCommentOptions{
Type: CommentTypeLabel,
Doer: doer,
Repo: issue.Repo,
Issue: issue,
Label: label,
Content: "1",
- }); err != nil {
+ }
+ comment, err := createCommentWithNoAction(e, opts)
+ if err != nil {
+ return err
+ }
+ if err = sendCreateCommentAction(e, opts, comment); err != nil {
return err
}
return
}
- if _, err = createComment(e, &CreateCommentOptions{
+ var opts = &CreateCommentOptions{
Type: CommentTypeLabel,
Doer: doer,
Repo: issue.Repo,
Issue: issue,
Label: label,
- }); err != nil {
+ }
+ comment, err := createCommentWithNoAction(e, opts)
+ if err != nil {
+ return err
+ }
+ if err = sendCreateCommentAction(e, opts, comment); err != nil {
return err
}
return err
}
- _, err := createComment(sess, &CreateCommentOptions{
+ var opt = &CreateCommentOptions{
Doer: opts.Doer,
Issue: opts.Issue,
Repo: opts.Issue.Repo,
Type: commentType,
Content: opts.Reason,
- })
+ }
+ comment, err := createCommentWithNoAction(sess, opt)
if err != nil {
return err
}
+ if err = sendCreateCommentAction(sess, opt, comment); err != nil {
+ return err
+ }
+
return sess.Commit()
}
return err
}
- if _, err := createMilestoneComment(e, doer, issue.Repo, issue, oldMilestoneID, issue.MilestoneID); err != nil {
+ var opts = &CreateCommentOptions{
+ Type: CommentTypeMilestone,
+ Doer: doer,
+ Repo: issue.Repo,
+ Issue: issue,
+ OldMilestoneID: oldMilestoneID,
+ MilestoneID: issue.MilestoneID,
+ }
+ comment, err := createCommentWithNoAction(e, opts)
+ if err != nil {
+ return err
+ }
+
+ if err := sendCreateCommentAction(e, opts, comment); err != nil {
return err
}
}
if ctx.OrigComment != nil {
refCommentID = ctx.OrigComment.ID
}
- if _, err := createComment(e, &CreateCommentOptions{
+ var opts = &CreateCommentOptions{
Type: ctx.Type,
Doer: ctx.Doer,
Repo: xref.Issue.Repo,
RefCommentID: refCommentID,
RefAction: xref.Action,
RefIsPull: ctx.OrigIssue.IsPull,
- }); err != nil {
+ }
+ comment, err := createCommentWithNoAction(e, opts)
+ if err != nil {
+ return err
+ }
+ if err = sendCreateCommentAction(e, opts, comment); err != nil {
return err
}
}
}
}
- comm, err := createComment(sess, &CreateCommentOptions{
+ comm, err := createCommentWithNoAction(sess, &CreateCommentOptions{
Type: CommentTypeReview,
Doer: doer,
Content: review.Content,
Issue: issue,
Repo: issue.Repo,
ReviewID: review.ID,
- NoAction: true,
})
if err != nil || comm == nil {
return nil, nil, err
}
patch = gitdiff.CutDiffAroundLine(patchBuf, int64((&models.Comment{Line: line}).UnsignedLine()), line < 0, setting.UI.CodeCommentLines)
}
- return models.CreateComment(&models.CreateCommentOptions{
+ return models.CreateCommentWithNoAction(&models.CreateCommentOptions{
Type: models.CommentTypeCode,
Doer: doer,
Repo: repo,
CommitSHA: commitID,
ReviewID: reviewID,
Patch: patch,
- NoAction: true,
})
}