]> source.dussan.org Git - gitea.git/commitdiff
Extract createComment (#9125)
authorLunny Xiao <xiaolunwen@gmail.com>
Sun, 1 Dec 2019 02:44:39 +0000 (10:44 +0800)
committertechknowlogick <techknowlogick@gitea.io>
Sun, 1 Dec 2019 02:44:39 +0000 (21:44 -0500)
* Extract createComment

* fix lint

* fix lint

models/issue.go
models/issue_assignees.go
models/issue_comment.go
models/issue_label.go
models/issue_lock.go
models/issue_milestone.go
models/issue_xref.go
models/review.go
services/pull/review.go

index e28e7c01c3025fa4716d8e10e6686d654338d04c..310971c45f0db49d649d843940c10a5322fc1c2a 100644 (file)
@@ -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
                }
        }
index 08a567c4ebef47c176b87829089199cf47f51731..c78132db5de70cec9553e31f588031e7519c5482 100644 (file)
@@ -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 {
index 73fd9c8c83eebe83e0eb1bbb86cc96effc5c8ecf..1fad141d9273af1cd0b08c2359a617898084d338 100644 (file)
@@ -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
        }
index ef1f37d77538cd309da3c1302dca0a8cc954e696..b2dd106176f401a57d8f92f5365e87ed02bb5de4 100644 (file)
@@ -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
        }
 
index dc6655ad3b51d4f5e4fdc1e51a4d948d581ae74b..05eca27ad6c1c85aa67142797c1ffe3b7140ea7c 100644 (file)
@@ -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()
 }
index a4c2b4b0622c7c1e7d6aa7c1223652e7a9a0e60b..e3cbb90624060f465f4de29e76e3a788ade8e6da 100644 (file)
@@ -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
                }
        }
index 9f30aba259178d7eed8f8255788986e81102c635..5cf8f58a0f256798daa040cb086c7ea37594f9d8 100644 (file)
@@ -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
                }
        }
index fb989b2b358cb9e64c68bf63c6552d5692911df1..715aaeb43a91e669ca60b3534356155183af4737 100644 (file)
@@ -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
index 29cd4fb716b53dc897dd332cfead75200c1c5636..e2179dd0e5294bfa89a05698fb2064ff3642c49b 100644 (file)
@@ -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,
        })
 }