@@ -11,8 +11,6 @@ import (
11
11
"code.gitea.io/gitea/modules/auth"
12
12
"code.gitea.io/gitea/modules/context"
13
13
"code.gitea.io/gitea/modules/log"
14
- "code.gitea.io/gitea/modules/notification"
15
- comment_service "code.gitea.io/gitea/services/comments"
16
14
pull_service "code.gitea.io/gitea/services/pull"
17
15
)
18
16
@@ -31,64 +29,33 @@ func CreateCodeComment(ctx *context.Context, form auth.CodeCommentForm) {
31
29
ctx .Redirect (fmt .Sprintf ("%s/pulls/%d/files" , ctx .Repo .RepoLink , issue .Index ))
32
30
return
33
31
}
34
- var comment * models.Comment
35
- defer func () {
36
- if comment != nil {
37
- ctx .Redirect (comment .HTMLURL ())
38
- } else {
39
- ctx .Redirect (fmt .Sprintf ("%s/pulls/%d/files" , ctx .Repo .RepoLink , issue .Index ))
40
- }
41
- }()
32
+
42
33
signedLine := form .Line
43
34
if form .Side == "previous" {
44
35
signedLine *= - 1
45
36
}
46
37
47
- review := new (models.Review )
48
- if form .IsReview {
49
- var err error
50
- // Check if the user has already a pending review for this issue
51
- if review , err = models .GetCurrentReview (ctx .User , issue ); err != nil {
52
- if ! models .IsErrReviewNotExist (err ) {
53
- ctx .ServerError ("CreateCodeComment" , err )
54
- return
55
- }
56
- // No pending review exists
57
- // Create a new pending review for this issue & user
58
- if review , err = pull_service .CreateReview (models.CreateReviewOptions {
59
- Type : models .ReviewTypePending ,
60
- Reviewer : ctx .User ,
61
- Issue : issue ,
62
- }); err != nil {
63
- ctx .ServerError ("CreateCodeComment" , err )
64
- return
65
- }
66
-
67
- }
68
- }
69
- if review .ID == 0 {
70
- review .ID = form .Reply
71
- }
72
- //FIXME check if line, commit and treepath exist
73
- comment , err := comment_service .CreateCodeComment (
38
+ comment , err := pull_service .CreateCodeComment (
74
39
ctx .User ,
75
- issue .Repo ,
76
40
issue ,
41
+ signedLine ,
77
42
form .Content ,
78
43
form .TreePath ,
79
- signedLine ,
80
- review . ID ,
44
+ form . IsReview ,
45
+ form . Reply ,
81
46
)
82
47
if err != nil {
83
48
ctx .ServerError ("CreateCodeComment" , err )
84
49
return
85
50
}
86
- // Send no notification if comment is pending
87
- if ! form .IsReview || form .Reply != 0 {
88
- notification .NotifyCreateIssueComment (ctx .User , issue .Repo , issue , comment )
89
- }
90
51
91
52
log .Trace ("Comment created: %d/%d/%d" , ctx .Repo .Repository .ID , issue .ID , comment .ID )
53
+
54
+ if comment != nil {
55
+ ctx .Redirect (comment .HTMLURL ())
56
+ } else {
57
+ ctx .Redirect (fmt .Sprintf ("%s/pulls/%d/files" , ctx .Repo .RepoLink , issue .Index ))
58
+ }
92
59
}
93
60
94
61
// SubmitReview creates a review out of the existing pending review or creates a new one if no pending review exist
@@ -105,23 +72,17 @@ func SubmitReview(ctx *context.Context, form auth.SubmitReviewForm) {
105
72
ctx .Redirect (fmt .Sprintf ("%s/pulls/%d/files" , ctx .Repo .RepoLink , issue .Index ))
106
73
return
107
74
}
108
- var review * models.Review
109
- var err error
110
75
111
76
reviewType := form .ReviewType ()
112
-
113
77
switch reviewType {
114
78
case models .ReviewTypeUnknown :
115
79
ctx .ServerError ("GetCurrentReview" , fmt .Errorf ("unknown ReviewType: %s" , form .Type ))
116
80
return
117
81
118
82
// can not approve/reject your own PR
119
83
case models .ReviewTypeApprove , models .ReviewTypeReject :
120
-
121
84
if issue .Poster .ID == ctx .User .ID {
122
-
123
85
var translated string
124
-
125
86
if reviewType == models .ReviewTypeApprove {
126
87
translated = ctx .Tr ("repo.issues.review.self.approval" )
127
88
} else {
@@ -134,69 +95,17 @@ func SubmitReview(ctx *context.Context, form auth.SubmitReviewForm) {
134
95
}
135
96
}
136
97
137
- review , err = models .GetCurrentReview (ctx .User , issue )
138
- if err == nil {
139
- review .Issue = issue
140
- if errl := review .LoadCodeComments (); errl != nil {
141
- ctx .ServerError ("LoadCodeComments" , err )
142
- return
143
- }
144
- }
145
-
146
- if ((err == nil && len (review .CodeComments ) == 0 ) ||
147
- (err != nil && models .IsErrReviewNotExist (err ))) &&
148
- form .HasEmptyContent () {
149
- ctx .Flash .Error (ctx .Tr ("repo.issues.review.content.empty" ))
150
- ctx .Redirect (fmt .Sprintf ("%s/pulls/%d/files" , ctx .Repo .RepoLink , issue .Index ))
151
- return
152
- }
153
-
98
+ _ , comm , err := pull_service .SubmitReview (ctx .User , issue , reviewType , form .Content )
154
99
if err != nil {
155
- if ! models .IsErrReviewNotExist (err ) {
156
- ctx .ServerError ("GetCurrentReview" , err )
157
- return
158
- }
159
- // No current review. Create a new one!
160
- if review , err = pull_service .CreateReview (models.CreateReviewOptions {
161
- Type : reviewType ,
162
- Issue : issue ,
163
- Reviewer : ctx .User ,
164
- Content : form .Content ,
165
- }); err != nil {
166
- ctx .ServerError ("CreateReview" , err )
167
- return
168
- }
169
- } else {
170
- review .Content = form .Content
171
- review .Type = reviewType
172
- if err = pull_service .UpdateReview (review ); err != nil {
173
- ctx .ServerError ("UpdateReview" , err )
174
- return
100
+ if pull_service .IsContentEmptyErr (err ) {
101
+ ctx .Flash .Error (ctx .Tr ("repo.issues.review.content.empty" ))
102
+ ctx .Redirect (fmt .Sprintf ("%s/pulls/%d/files" , ctx .Repo .RepoLink , issue .Index ))
103
+ } else {
104
+ ctx .ServerError ("SubmitReview" , err )
175
105
}
176
- }
177
- comm , err := models .CreateComment (& models.CreateCommentOptions {
178
- Type : models .CommentTypeReview ,
179
- Doer : ctx .User ,
180
- Content : review .Content ,
181
- Issue : issue ,
182
- Repo : issue .Repo ,
183
- ReviewID : review .ID ,
184
- })
185
- if err != nil || comm == nil {
186
- ctx .ServerError ("CreateComment" , err )
187
- return
188
- }
189
- if err = review .Publish (); err != nil {
190
- ctx .ServerError ("Publish" , err )
191
- return
192
- }
193
106
194
- pr , err := issue .GetPullRequest ()
195
- if err != nil {
196
- ctx .ServerError ("GetPullRequest" , err )
197
107
return
198
108
}
199
- notification .NotifyPullRequestReview (pr , review , comm )
200
109
201
110
ctx .Redirect (fmt .Sprintf ("%s/pulls/%d#%s" , ctx .Repo .RepoLink , issue .Index , comm .HashTag ()))
202
111
}
0 commit comments