aboutsummaryrefslogtreecommitdiffstats
path: root/models
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2019-12-01 10:44:39 +0800
committertechknowlogick <techknowlogick@gitea.io>2019-11-30 21:44:39 -0500
commit2011a5b8183fe227f9f57f861dbe42abbd7abf42 (patch)
treecc34a5a20b3d8851f4dd139ce3a8356817883e1b /models
parent7c6f2e27becb7ab43fe266d2882a0d80977c2ef7 (diff)
downloadgitea-2011a5b8183fe227f9f57f861dbe42abbd7abf42.tar.gz
gitea-2011a5b8183fe227f9f57f861dbe42abbd7abf42.zip
Extract createComment (#9125)
* Extract createComment * fix lint * fix lint
Diffstat (limited to 'models')
-rw-r--r--models/issue.go44
-rw-r--r--models/issue_assignees.go10
-rw-r--r--models/issue_comment.go72
-rw-r--r--models/issue_label.go18
-rw-r--r--models/issue_lock.go9
-rw-r--r--models/issue_milestone.go15
-rw-r--r--models/issue_xref.go9
-rw-r--r--models/review.go3
8 files changed, 129 insertions, 51 deletions
diff --git a/models/issue.go b/models/issue.go
index e28e7c01c3..310971c45f 100644
--- a/models/issue.go
+++ b/models/issue.go
@@ -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
}
}
diff --git a/models/issue_assignees.go b/models/issue_assignees.go
index 08a567c4eb..c78132db5d 100644
--- a/models/issue_assignees.go
+++ b/models/issue_assignees.go
@@ -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 {
diff --git a/models/issue_comment.go b/models/issue_comment.go
index 73fd9c8c83..1fad141d92 100644
--- a/models/issue_comment.go
+++ b/models/issue_comment.go
@@ -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
}
diff --git a/models/issue_label.go b/models/issue_label.go
index ef1f37d775..b2dd106176 100644
--- a/models/issue_label.go
+++ b/models/issue_label.go
@@ -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
}
diff --git a/models/issue_lock.go b/models/issue_lock.go
index dc6655ad3b..05eca27ad6 100644
--- a/models/issue_lock.go
+++ b/models/issue_lock.go
@@ -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()
}
diff --git a/models/issue_milestone.go b/models/issue_milestone.go
index a4c2b4b062..e3cbb90624 100644
--- a/models/issue_milestone.go
+++ b/models/issue_milestone.go
@@ -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
}
}
diff --git a/models/issue_xref.go b/models/issue_xref.go
index 9f30aba259..5cf8f58a0f 100644
--- a/models/issue_xref.go
+++ b/models/issue_xref.go
@@ -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
}
}
diff --git a/models/review.go b/models/review.go
index fb989b2b35..715aaeb43a 100644
--- a/models/review.go
+++ b/models/review.go
@@ -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