* Extract createComment * fix lint * fix linttags/v1.21.12.1
@@ -656,16 +656,18 @@ func (issue *Issue) changeStatus(e *xorm.Session, doer *User, isClosed bool) (er | |||
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. | |||
@@ -711,17 +713,21 @@ func (issue *Issue) ChangeTitle(doer *User, oldTitle string) (err error) { | |||
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 | |||
} | |||
@@ -740,13 +746,18 @@ func AddDeletePRBranchComment(doer *User, repo *Repository, issueID int64, branc | |||
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 | |||
} | |||
@@ -880,7 +891,20 @@ func newIssue(e *xorm.Session, doer *User, opts NewIssueOptions) (err error) { | |||
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 | |||
} | |||
} | |||
@@ -131,18 +131,22 @@ func (issue *Issue) toggleAssignee(sess *xorm.Session, doer *User, assigneeID in | |||
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 { | |||
@@ -495,7 +495,7 @@ func (c *Comment) CodeCommentURL() string { | |||
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 | |||
@@ -539,12 +539,6 @@ func createComment(e *xorm.Session, opts *CreateCommentOptions) (_ *Comment, err | |||
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 | |||
} | |||
@@ -651,19 +645,7 @@ func sendCreateCommentAction(e *xorm.Session, opts *CreateCommentOptions, commen | |||
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 | |||
@@ -685,13 +667,18 @@ func createDeadlineComment(e *xorm.Session, doer *User, issue *Issue, newDeadlin | |||
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 | |||
@@ -705,27 +692,35 @@ func createIssueDependencyComment(e *xorm.Session, doer *User, issue *Issue, dep | |||
} | |||
// 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 | |||
} | |||
@@ -758,7 +753,6 @@ type CreateCommentOptions struct { | |||
RefCommentID int64 | |||
RefAction references.XRefAction | |||
RefIsPull bool | |||
NoAction bool | |||
} | |||
// CreateComment creates comment of issue or commit. | |||
@@ -769,7 +763,31 @@ func CreateComment(opts *CreateCommentOptions) (comment *Comment, err error) { | |||
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 | |||
} | |||
@@ -406,14 +406,19 @@ func newIssueLabel(e *xorm.Session, issue *Issue, label *Label, doer *User) (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 | |||
} | |||
@@ -482,13 +487,18 @@ func deleteIssueLabel(e *xorm.Session, issue *Issue, label *Label, doer *User) ( | |||
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 | |||
} | |||
@@ -45,16 +45,21 @@ func updateIssueLock(opts *IssueLockOptions, lock bool) error { | |||
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() | |||
} |
@@ -386,7 +386,20 @@ func changeMilestoneAssign(e *xorm.Session, doer *User, issue *Issue, oldMilesto | |||
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 | |||
} | |||
} | |||
@@ -116,7 +116,7 @@ func (issue *Issue) createCrossReferences(e *xorm.Session, ctx *crossReferencesC | |||
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, | |||
@@ -126,7 +126,12 @@ func (issue *Issue) createCrossReferences(e *xorm.Session, ctx *crossReferencesC | |||
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 | |||
} | |||
} | |||
@@ -291,14 +291,13 @@ func SubmitReview(doer *User, issue *Issue, reviewType ReviewType, content strin | |||
} | |||
} | |||
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 | |||
@@ -143,7 +143,7 @@ func createCodeComment(doer *models.User, repo *models.Repository, issue *models | |||
} | |||
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, | |||
@@ -154,7 +154,6 @@ func createCodeComment(doer *models.User, repo *models.Repository, issue *models | |||
CommitSHA: commitID, | |||
ReviewID: reviewID, | |||
Patch: patch, | |||
NoAction: true, | |||
}) | |||
} | |||