Skip to content
This repository was archived by the owner on Apr 17, 2024. It is now read-only.

Commit ea6c36f

Browse files
committed
Ensure msgRoomName has room_name before proceeding
1 parent 4b72bf5 commit ea6c36f

File tree

2 files changed

+65
-55
lines changed

2 files changed

+65
-55
lines changed

src/CodeReviews.coffee

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -475,7 +475,8 @@ class CodeReviews
475475
notify_name = notification_string[0...] || null
476476
if (notify_name)?
477477
msgRoomName msg, (room_name) =>
478-
@notify_channel(cr, room_name, notify_name)
478+
if room_name
479+
@notify_channel(cr, room_name, notify_name)
479480

480481
# If our submitter provided a notification individual/channel, say so.
481482
if (notify_name)?

src/code-reviews.coffee

Lines changed: 63 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ module.exports = (robot) ->
2424
url = msg.match[1]
2525
slug = code_reviews.matches_to_slug msg.match
2626
msgRoomName msg, (room_name) ->
27-
if slug
27+
if slug and room_name
2828
cr = new CodeReview msg.message.user, slug, url
29-
# Specific override for human readable cr.user.room
29+
# Specific override for human readable room name
3030
cr.user.room = room_name
3131
found = code_reviews.find_slug_index room_name, slug
3232
if found is false
@@ -52,7 +52,7 @@ module.exports = (robot) ->
5252
reviewerMsg = ''
5353
msg.send "*#{slug}* is already in the queue#{reviewerMsg}"
5454
else
55-
msg.send "Error adding #{url} to queue"
55+
msg.send "Unable to add #{url} to queue. Please try again."
5656

5757
# Respond to message with matching slug names
5858
#
@@ -124,8 +124,9 @@ module.exports = (robot) ->
124124
robot.respond /(?:([-_a-z0-9]+) is )?on it/i, (msg) ->
125125
reviewer = msg.match[1] or msg.message.user.name
126126
msgRoomName msg, (room_name) ->
127-
cr = code_reviews.claim_first room_name, reviewer
128-
dequeue_code_review cr, reviewer, msg
127+
if room_name
128+
cr = code_reviews.claim_first room_name, reviewer
129+
dequeue_code_review cr, reviewer, msg
129130

130131
# Claim first PR in queue wihout directly addressing hubot
131132
# Note the this is a `hear` listener and previous is a `respond`
@@ -135,8 +136,9 @@ module.exports = (robot) ->
135136
return
136137
reviewer = msg.match[1] or msg.message.user.name
137138
msgRoomName msg, (room_name) ->
138-
cr = code_reviews.claim_first room_name, reviewer
139-
dequeue_code_review cr, reviewer, msg
139+
if room_name
140+
cr = code_reviews.claim_first room_name, reviewer
141+
dequeue_code_review cr, reviewer, msg
140142

141143
###
142144
@command on *
@@ -149,8 +151,9 @@ module.exports = (robot) ->
149151
msg.emote ":tornado2:"
150152
reviewer = msg.message.user.name
151153
msgRoomName msg, (room_name) ->
152-
until false is cr = code_reviews.claim_first room_name, reviewer
153-
dequeue_code_review cr, reviewer, msg
154+
if room_name
155+
until false is cr = code_reviews.claim_first room_name, reviewer
156+
dequeue_code_review cr, reviewer, msg
154157

155158
###
156159
@command [userName is ]on cool-repo/123
@@ -167,19 +170,20 @@ module.exports = (robot) ->
167170
return if slug.toLowerCase() is 'it'
168171

169172
msgRoomName msg, (room_name) ->
170-
unclaimed_cr = single_matching_cr(slug, room_name, msg, status = "new")
171-
if (unclaimed_cr)?
172-
code_reviews.claim_by_slug room_name, unclaimed_cr.slug, reviewer
173-
dequeue_code_review unclaimed_cr, reviewer, msg
173+
if room_name
174+
unclaimed_cr = single_matching_cr(slug, room_name, msg, status = "new")
175+
if (unclaimed_cr)?
176+
code_reviews.claim_by_slug room_name, unclaimed_cr.slug, reviewer
177+
dequeue_code_review unclaimed_cr, reviewer, msg
174178

175-
# none of the matches have "new" status
176-
else
177-
cr = single_matching_cr(slug, room_name, msg, status = false, no_output = true)
178-
# When someone attempts to claim a PR
179-
# that was already reviewed, merged, or closed outside of the queue
180-
if (cr)?
181-
response = "It looks like *#{cr.slug}* (@#{cr.user.name}) has already been #{cr.status}"
182-
msg.send response
179+
# none of the matches have "new" status
180+
else
181+
cr = single_matching_cr(slug, room_name, msg, status = false, no_output = true)
182+
# When someone attempts to claim a PR
183+
# that was already reviewed, merged, or closed outside of the queue
184+
if (cr)?
185+
response = "It looks like *#{cr.slug}* (@#{cr.user.name}) has already been #{cr.status}"
186+
msg.send response
183187

184188
###
185189
@command hubot (nm|ignore) cool-repo/123
@@ -192,59 +196,63 @@ module.exports = (robot) ->
192196
return if slug.toLowerCase() is 'it'
193197

194198
msgRoomName msg, (room_name) ->
195-
found_ignore_cr = single_matching_cr(slug, room_name, msg)
196-
if (found_ignore_cr)?
197-
code_reviews.remove_by_slug room_name, found_ignore_cr.slug
198-
#decrement scores
199-
code_review_karma.decr_score found_ignore_cr.user.name, 'take'
200-
if found_ignore_cr.reviewer
201-
code_review_karma.decr_score found_ignore_cr.reviewer, 'give'
202-
msg.send "Sorry for eavesdropping. I removed *#{found_ignore_cr.slug}* from the queue."
203-
return
199+
if room_name
200+
found_ignore_cr = single_matching_cr(slug, room_name, msg)
201+
if (found_ignore_cr)?
202+
code_reviews.remove_by_slug room_name, found_ignore_cr.slug
203+
#decrement scores
204+
code_review_karma.decr_score found_ignore_cr.user.name, 'take'
205+
if found_ignore_cr.reviewer
206+
code_review_karma.decr_score found_ignore_cr.reviewer, 'give'
207+
msg.send "Sorry for eavesdropping. I removed *#{found_ignore_cr.slug}* from the queue."
208+
return
204209

205210
###
206211
@command hubot: (nm|ignore)
207212
@desc Delete most recently added PR from the queue regardless of status
208213
###
209214
robot.respond /(?:\s*)(?:nm|ignore)(?:\s*)$/i, (msg) ->
210215
msgRoomName msg, (room_name) ->
211-
cr = code_reviews.remove_last_new room_name
212-
if cr and cr.slug
213-
code_review_karma.decr_score cr.user.name, 'take'
214-
if cr.reviewer
215-
code_review_karma.decr_score cr.reviewer, 'give'
216-
msg.send "Sorry for eavesdropping. I removed *#{cr.slug}* from the queue."
217-
else
218-
msg.send "There might not be a new PR to remove. Try specifying a slug."
216+
if room_name
217+
cr = code_reviews.remove_last_new room_name
218+
if cr and cr.slug
219+
code_review_karma.decr_score cr.user.name, 'take'
220+
if cr.reviewer
221+
code_review_karma.decr_score cr.reviewer, 'give'
222+
msg.send "Sorry for eavesdropping. I removed *#{cr.slug}* from the queue."
223+
else
224+
msg.send "There might not be a new PR to remove. Try specifying a slug."
219225

220226
###
221227
@command hubot: redo cool-repo/123
222228
@desc Allow another review _without_ decrementing previous reviewer's score
223229
###
224230
robot.respond /(?:redo)(?: ([-_\/a-z0-9]+|\d+|[-_\/a-z0-9]+\/\d+))/i, (msg) ->
225231
msgRoomName msg, (room_name) ->
226-
found_redo_cr = single_matching_cr(msg.match[1], room_name, msg)
227-
if (found_redo_cr)?
228-
index = code_reviews.find_slug_index room_name, found_redo_cr.slug
229-
code_reviews.reset_cr code_reviews.room_queues[room_name][index]
230-
msg.send "You got it, #{found_redo_cr.slug} is ready for a new review."
232+
if room_name
233+
found_redo_cr = single_matching_cr(msg.match[1], room_name, msg)
234+
if (found_redo_cr)?
235+
index = code_reviews.find_slug_index room_name, found_redo_cr.slug
236+
code_reviews.reset_cr code_reviews.room_queues[room_name][index]
237+
msg.send "You got it, #{found_redo_cr.slug} is ready for a new review."
231238

232239
###
233240
@command hubot: (unclaim|reset) cool-repo/123
234241
@desc Reset CR status to new/unclaimed _and_ decrement reviewer's score
235242
###
236243
robot.respond /(unclaim|reset)(?: ([-_\/a-z0-9]+|\d+|[-_\/a-z0-9]+\/\d+))?/i, (msg) ->
237244
msgRoomName msg, (room_name) ->
238-
found_reset_cr = single_matching_cr(msg.match[2], room_name, msg)
239-
if (found_reset_cr)?
240-
# decrement reviewers CR score
241-
if found_reset_cr.reviewer
242-
code_review_karma.decr_score found_reset_cr.reviewer, 'give'
243-
244-
index = code_reviews.find_slug_index room_name, found_reset_cr.slug
245-
code_reviews.reset_cr code_reviews.room_queues[room_name][index]
246-
msg.match[1] += 'ed' if msg.match[1].toLowerCase() is 'unclaim'
247-
msg.send "You got it, I've #{msg.match[1]} *#{found_reset_cr.slug}* in the queue."
245+
if room_name
246+
found_reset_cr = single_matching_cr(msg.match[2], room_name, msg)
247+
if (found_reset_cr)?
248+
# decrement reviewers CR score
249+
if found_reset_cr.reviewer
250+
code_review_karma.decr_score found_reset_cr.reviewer, 'give'
251+
252+
index = code_reviews.find_slug_index room_name, found_reset_cr.slug
253+
code_reviews.reset_cr code_reviews.room_queues[room_name][index]
254+
msg.match[1] += 'ed' if msg.match[1].toLowerCase() is 'unclaim'
255+
msg.send "You got it, I've #{msg.match[1]} *#{found_reset_cr.slug}* in the queue."
248256

249257
###
250258
@command hubot: list crs
@@ -255,7 +263,8 @@ module.exports = (robot) ->
255263
robot.respond /list(?: (all|new|claimed|approved|closed|merged))? CRs/i, (msg) ->
256264
status = msg.match[1] || 'new'
257265
msgRoomName msg, (room_name) ->
258-
code_reviews.send_list room_name, true, status
266+
if room_name
267+
code_reviews.send_list room_name, false, status
259268

260269
# Flush all CRs in all rooms
261270
robot.respond /flush the cr queue, really really/i, (msg) ->

0 commit comments

Comments
 (0)