Skip to content

Commit 2011a5b

Browse files
lunnytechknowlogick
authored andcommitted
Extract createComment (#9125)
* Extract createComment * fix lint * fix lint
1 parent 7c6f2e2 commit 2011a5b

9 files changed

+130
-53
lines changed

models/issue.go

+34-10
Original file line numberDiff line numberDiff line change
@@ -656,16 +656,18 @@ func (issue *Issue) changeStatus(e *xorm.Session, doer *User, isClosed bool) (er
656656
if !issue.IsClosed {
657657
cmtType = CommentTypeReopen
658658
}
659-
if _, err := createComment(e, &CreateCommentOptions{
659+
660+
var opts = &CreateCommentOptions{
660661
Type: cmtType,
661662
Doer: doer,
662663
Repo: issue.Repo,
663664
Issue: issue,
664-
}); err != nil {
665+
}
666+
comment, err := createCommentWithNoAction(e, opts)
667+
if err != nil {
665668
return err
666669
}
667-
668-
return nil
670+
return sendCreateCommentAction(e, opts, comment)
669671
}
670672

671673
// ChangeStatus changes issue status to open or closed.
@@ -711,17 +713,21 @@ func (issue *Issue) ChangeTitle(doer *User, oldTitle string) (err error) {
711713
return fmt.Errorf("loadRepo: %v", err)
712714
}
713715

714-
if _, err = createComment(sess, &CreateCommentOptions{
716+
var opts = &CreateCommentOptions{
715717
Type: CommentTypeChangeTitle,
716718
Doer: doer,
717719
Repo: issue.Repo,
718720
Issue: issue,
719721
OldTitle: oldTitle,
720722
NewTitle: issue.Title,
721-
}); err != nil {
723+
}
724+
comment, err := createCommentWithNoAction(sess, opts)
725+
if err != nil {
722726
return fmt.Errorf("createComment: %v", err)
723727
}
724-
728+
if err = sendCreateCommentAction(sess, opts, comment); err != nil {
729+
return err
730+
}
725731
if err = issue.addCrossReferences(sess, doer, true); err != nil {
726732
return err
727733
}
@@ -740,13 +746,18 @@ func AddDeletePRBranchComment(doer *User, repo *Repository, issueID int64, branc
740746
if err := sess.Begin(); err != nil {
741747
return err
742748
}
743-
if _, err := createComment(sess, &CreateCommentOptions{
749+
var opts = &CreateCommentOptions{
744750
Type: CommentTypeDeleteBranch,
745751
Doer: doer,
746752
Repo: repo,
747753
Issue: issue,
748754
CommitSHA: branchName,
749-
}); err != nil {
755+
}
756+
comment, err := createCommentWithNoAction(sess, opts)
757+
if err != nil {
758+
return err
759+
}
760+
if err = sendCreateCommentAction(sess, opts, comment); err != nil {
750761
return err
751762
}
752763

@@ -880,7 +891,20 @@ func newIssue(e *xorm.Session, doer *User, opts NewIssueOptions) (err error) {
880891
return err
881892
}
882893

883-
if _, err = createMilestoneComment(e, doer, opts.Repo, opts.Issue, 0, opts.Issue.MilestoneID); err != nil {
894+
var opts = &CreateCommentOptions{
895+
Type: CommentTypeMilestone,
896+
Doer: doer,
897+
Repo: opts.Repo,
898+
Issue: opts.Issue,
899+
OldMilestoneID: 0,
900+
MilestoneID: opts.Issue.MilestoneID,
901+
}
902+
comment, err := createCommentWithNoAction(e, opts)
903+
if err != nil {
904+
return err
905+
}
906+
907+
if err = sendCreateCommentAction(e, opts, comment); err != nil {
884908
return err
885909
}
886910
}

models/issue_assignees.go

+7-3
Original file line numberDiff line numberDiff line change
@@ -131,18 +131,22 @@ func (issue *Issue) toggleAssignee(sess *xorm.Session, doer *User, assigneeID in
131131
return false, nil, fmt.Errorf("loadRepo: %v", err)
132132
}
133133

134-
// Comment
135-
comment, err = createComment(sess, &CreateCommentOptions{
134+
var opts = &CreateCommentOptions{
136135
Type: CommentTypeAssignees,
137136
Doer: doer,
138137
Repo: issue.Repo,
139138
Issue: issue,
140139
RemovedAssignee: removed,
141140
AssigneeID: assigneeID,
142-
})
141+
}
142+
// Comment
143+
comment, err = createCommentWithNoAction(sess, opts)
143144
if err != nil {
144145
return false, nil, fmt.Errorf("createComment: %v", err)
145146
}
147+
if err = sendCreateCommentAction(sess, opts, comment); err != nil {
148+
return false, nil, err
149+
}
146150

147151
// if pull request is in the middle of creation - don't call webhook
148152
if isCreate {

models/issue_comment.go

+45-27
Original file line numberDiff line numberDiff line change
@@ -495,7 +495,7 @@ func (c *Comment) CodeCommentURL() string {
495495
return fmt.Sprintf("%s/files#%s", c.Issue.HTMLURL(), c.HashTag())
496496
}
497497

498-
func createComment(e *xorm.Session, opts *CreateCommentOptions) (_ *Comment, err error) {
498+
func createCommentWithNoAction(e *xorm.Session, opts *CreateCommentOptions) (_ *Comment, err error) {
499499
var LabelID int64
500500
if opts.Label != nil {
501501
LabelID = opts.Label.ID
@@ -539,12 +539,6 @@ func createComment(e *xorm.Session, opts *CreateCommentOptions) (_ *Comment, err
539539
return nil, err
540540
}
541541

542-
if !opts.NoAction {
543-
if err = sendCreateCommentAction(e, opts, comment); err != nil {
544-
return nil, err
545-
}
546-
}
547-
548542
if err = comment.addCrossReferences(e, opts.Doer, false); err != nil {
549543
return nil, err
550544
}
@@ -651,19 +645,7 @@ func sendCreateCommentAction(e *xorm.Session, opts *CreateCommentOptions, commen
651645
return nil
652646
}
653647

654-
func createMilestoneComment(e *xorm.Session, doer *User, repo *Repository, issue *Issue, oldMilestoneID, milestoneID int64) (*Comment, error) {
655-
return createComment(e, &CreateCommentOptions{
656-
Type: CommentTypeMilestone,
657-
Doer: doer,
658-
Repo: repo,
659-
Issue: issue,
660-
OldMilestoneID: oldMilestoneID,
661-
MilestoneID: milestoneID,
662-
})
663-
}
664-
665648
func createDeadlineComment(e *xorm.Session, doer *User, issue *Issue, newDeadlineUnix timeutil.TimeStamp) (*Comment, error) {
666-
667649
var content string
668650
var commentType CommentType
669651

@@ -685,13 +667,18 @@ func createDeadlineComment(e *xorm.Session, doer *User, issue *Issue, newDeadlin
685667
return nil, err
686668
}
687669

688-
return createComment(e, &CreateCommentOptions{
670+
var opts = &CreateCommentOptions{
689671
Type: commentType,
690672
Doer: doer,
691673
Repo: issue.Repo,
692674
Issue: issue,
693675
Content: content,
694-
})
676+
}
677+
comment, err := createCommentWithNoAction(e, opts)
678+
if err != nil {
679+
return nil, err
680+
}
681+
return comment, sendCreateCommentAction(e, opts, comment)
695682
}
696683

697684
// Creates issue dependency comment
@@ -705,27 +692,35 @@ func createIssueDependencyComment(e *xorm.Session, doer *User, issue *Issue, dep
705692
}
706693

707694
// Make two comments, one in each issue
708-
_, err = createComment(e, &CreateCommentOptions{
695+
var opts = &CreateCommentOptions{
709696
Type: cType,
710697
Doer: doer,
711698
Repo: issue.Repo,
712699
Issue: issue,
713700
DependentIssueID: dependentIssue.ID,
714-
})
701+
}
702+
comment, err := createCommentWithNoAction(e, opts)
715703
if err != nil {
716704
return
717705
}
706+
if err = sendCreateCommentAction(e, opts, comment); err != nil {
707+
return err
708+
}
718709

719-
_, err = createComment(e, &CreateCommentOptions{
710+
opts = &CreateCommentOptions{
720711
Type: cType,
721712
Doer: doer,
722713
Repo: issue.Repo,
723714
Issue: dependentIssue,
724715
DependentIssueID: issue.ID,
725-
})
716+
}
717+
comment, err = createCommentWithNoAction(e, opts)
726718
if err != nil {
727719
return
728720
}
721+
if err = sendCreateCommentAction(e, opts, comment); err != nil {
722+
return err
723+
}
729724

730725
return
731726
}
@@ -758,7 +753,6 @@ type CreateCommentOptions struct {
758753
RefCommentID int64
759754
RefAction references.XRefAction
760755
RefIsPull bool
761-
NoAction bool
762756
}
763757

764758
// CreateComment creates comment of issue or commit.
@@ -769,7 +763,31 @@ func CreateComment(opts *CreateCommentOptions) (comment *Comment, err error) {
769763
return nil, err
770764
}
771765

772-
comment, err = createComment(sess, opts)
766+
comment, err = createCommentWithNoAction(sess, opts)
767+
if err != nil {
768+
return nil, err
769+
}
770+
771+
if err = sendCreateCommentAction(sess, opts, comment); err != nil {
772+
return nil, err
773+
}
774+
775+
if err = sess.Commit(); err != nil {
776+
return nil, err
777+
}
778+
779+
return comment, nil
780+
}
781+
782+
// CreateCommentWithNoAction creates comment of issue or commit with no action created
783+
func CreateCommentWithNoAction(opts *CreateCommentOptions) (comment *Comment, err error) {
784+
sess := x.NewSession()
785+
defer sess.Close()
786+
if err = sess.Begin(); err != nil {
787+
return nil, err
788+
}
789+
790+
comment, err = createCommentWithNoAction(sess, opts)
773791
if err != nil {
774792
return nil, err
775793
}

models/issue_label.go

+14-4
Original file line numberDiff line numberDiff line change
@@ -406,14 +406,19 @@ func newIssueLabel(e *xorm.Session, issue *Issue, label *Label, doer *User) (err
406406
return
407407
}
408408

409-
if _, err = createComment(e, &CreateCommentOptions{
409+
var opts = &CreateCommentOptions{
410410
Type: CommentTypeLabel,
411411
Doer: doer,
412412
Repo: issue.Repo,
413413
Issue: issue,
414414
Label: label,
415415
Content: "1",
416-
}); err != nil {
416+
}
417+
comment, err := createCommentWithNoAction(e, opts)
418+
if err != nil {
419+
return err
420+
}
421+
if err = sendCreateCommentAction(e, opts, comment); err != nil {
417422
return err
418423
}
419424

@@ -482,13 +487,18 @@ func deleteIssueLabel(e *xorm.Session, issue *Issue, label *Label, doer *User) (
482487
return
483488
}
484489

485-
if _, err = createComment(e, &CreateCommentOptions{
490+
var opts = &CreateCommentOptions{
486491
Type: CommentTypeLabel,
487492
Doer: doer,
488493
Repo: issue.Repo,
489494
Issue: issue,
490495
Label: label,
491-
}); err != nil {
496+
}
497+
comment, err := createCommentWithNoAction(e, opts)
498+
if err != nil {
499+
return err
500+
}
501+
if err = sendCreateCommentAction(e, opts, comment); err != nil {
492502
return err
493503
}
494504

models/issue_lock.go

+7-2
Original file line numberDiff line numberDiff line change
@@ -45,16 +45,21 @@ func updateIssueLock(opts *IssueLockOptions, lock bool) error {
4545
return err
4646
}
4747

48-
_, err := createComment(sess, &CreateCommentOptions{
48+
var opt = &CreateCommentOptions{
4949
Doer: opts.Doer,
5050
Issue: opts.Issue,
5151
Repo: opts.Issue.Repo,
5252
Type: commentType,
5353
Content: opts.Reason,
54-
})
54+
}
55+
comment, err := createCommentWithNoAction(sess, opt)
5556
if err != nil {
5657
return err
5758
}
5859

60+
if err = sendCreateCommentAction(sess, opt, comment); err != nil {
61+
return err
62+
}
63+
5964
return sess.Commit()
6065
}

models/issue_milestone.go

+14-1
Original file line numberDiff line numberDiff line change
@@ -386,7 +386,20 @@ func changeMilestoneAssign(e *xorm.Session, doer *User, issue *Issue, oldMilesto
386386
return err
387387
}
388388

389-
if _, err := createMilestoneComment(e, doer, issue.Repo, issue, oldMilestoneID, issue.MilestoneID); err != nil {
389+
var opts = &CreateCommentOptions{
390+
Type: CommentTypeMilestone,
391+
Doer: doer,
392+
Repo: issue.Repo,
393+
Issue: issue,
394+
OldMilestoneID: oldMilestoneID,
395+
MilestoneID: issue.MilestoneID,
396+
}
397+
comment, err := createCommentWithNoAction(e, opts)
398+
if err != nil {
399+
return err
400+
}
401+
402+
if err := sendCreateCommentAction(e, opts, comment); err != nil {
390403
return err
391404
}
392405
}

models/issue_xref.go

+7-2
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ func (issue *Issue) createCrossReferences(e *xorm.Session, ctx *crossReferencesC
116116
if ctx.OrigComment != nil {
117117
refCommentID = ctx.OrigComment.ID
118118
}
119-
if _, err := createComment(e, &CreateCommentOptions{
119+
var opts = &CreateCommentOptions{
120120
Type: ctx.Type,
121121
Doer: ctx.Doer,
122122
Repo: xref.Issue.Repo,
@@ -126,7 +126,12 @@ func (issue *Issue) createCrossReferences(e *xorm.Session, ctx *crossReferencesC
126126
RefCommentID: refCommentID,
127127
RefAction: xref.Action,
128128
RefIsPull: ctx.OrigIssue.IsPull,
129-
}); err != nil {
129+
}
130+
comment, err := createCommentWithNoAction(e, opts)
131+
if err != nil {
132+
return err
133+
}
134+
if err = sendCreateCommentAction(e, opts, comment); err != nil {
130135
return err
131136
}
132137
}

models/review.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -291,14 +291,13 @@ func SubmitReview(doer *User, issue *Issue, reviewType ReviewType, content strin
291291
}
292292
}
293293

294-
comm, err := createComment(sess, &CreateCommentOptions{
294+
comm, err := createCommentWithNoAction(sess, &CreateCommentOptions{
295295
Type: CommentTypeReview,
296296
Doer: doer,
297297
Content: review.Content,
298298
Issue: issue,
299299
Repo: issue.Repo,
300300
ReviewID: review.ID,
301-
NoAction: true,
302301
})
303302
if err != nil || comm == nil {
304303
return nil, nil, err

0 commit comments

Comments
 (0)