* 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, | |||
| }) | |||
| } | |||