@@ -39,32 +39,42 @@ export async function processCommand(
3939
4040 const pullNumber = payload . issue ?. number || payload . pull_request ?. number ;
4141 commentText = commentText . toLowerCase ( ) ;
42- if ( commentText . indexOf ( "r: @" ) > - 1 ) {
43- await manuallyAssignedToReviewer ( pullNumber , stateClient ) ;
44- } else if ( commentText . indexOf ( "assign to next reviewer" ) > - 1 ) {
45- await assignToNextReviewer (
46- payload ,
47- commentAuthor ,
48- pullNumber ,
49- stateClient ,
50- reviewerConfig
51- ) ;
52- } else if ( commentText . indexOf ( "stop reviewer notifications" ) > - 1 ) {
53- await stopReviewerNotifications (
54- pullNumber ,
55- stateClient ,
56- "requested by reviewer"
57- ) ;
58- } else if ( commentText . indexOf ( "remind me after tests pass" ) > - 1 ) {
59- await remindAfterTestsPass ( pullNumber , commentAuthor , stateClient ) ;
60- } else if ( commentText . indexOf ( "waiting on author" ) > - 1 ) {
61- await waitOnAuthor ( payload , pullNumber , stateClient ) ;
62- } else if ( commentText . indexOf ( "assign set of reviewers" ) > - 1 ) {
63- await assignReviewerSet ( payload , pullNumber , stateClient , reviewerConfig ) ;
42+
43+ let prState = await stateClient . getPrState ( pullNumber ) ;
44+ if ( prState . stopReviewerNotifications ) {
45+ // Notifications stopped, only "allow assign set of reviewers"
46+ if ( commentText . indexOf ( "assign set of reviewers" ) > - 1 ) {
47+ await assignReviewerSet ( payload , pullNumber , stateClient , reviewerConfig ) ;
48+ } else {
49+ return false ;
50+ }
6451 } else {
65- return false ;
52+ if ( commentText . indexOf ( "r: @" ) > - 1 ) {
53+ await manuallyAssignedToReviewer ( pullNumber , stateClient ) ;
54+ } else if ( commentText . indexOf ( "assign to next reviewer" ) > - 1 ) {
55+ await assignToNextReviewer (
56+ payload ,
57+ commentAuthor ,
58+ pullNumber ,
59+ stateClient ,
60+ reviewerConfig
61+ ) ;
62+ } else if ( commentText . indexOf ( "stop reviewer notifications" ) > - 1 ) {
63+ await stopReviewerNotifications (
64+ pullNumber ,
65+ stateClient ,
66+ "requested by reviewer"
67+ ) ;
68+ } else if ( commentText . indexOf ( "remind me after tests pass" ) > - 1 ) {
69+ await remindAfterTestsPass ( pullNumber , commentAuthor , stateClient ) ;
70+ } else if ( commentText . indexOf ( "waiting on author" ) > - 1 ) {
71+ await waitOnAuthor ( payload , pullNumber , stateClient ) ;
72+ } else if ( commentText . indexOf ( "assign set of reviewers" ) > - 1 ) {
73+ await assignReviewerSet ( payload , pullNumber , stateClient , reviewerConfig ) ;
74+ } else {
75+ return false ;
76+ }
6677 }
67-
6878 return true ;
6979}
7080
@@ -175,6 +185,12 @@ async function assignReviewerSet(
175185 reviewerConfig : typeof ReviewerConfig
176186) {
177187 let prState = await stateClient . getPrState ( pullNumber ) ;
188+ if ( prState . stopReviewerNotifications ) {
189+ // Restore notifications, and clear any existing reviewer set to
190+ // allow new reviewers to be assigned.
191+ prState . stopReviewerNotifications = false ;
192+ prState . reviewersAssignedForLabels = { } ;
193+ }
178194 if ( Object . values ( prState . reviewersAssignedForLabels ) . length > 0 ) {
179195 await github . addPrComment (
180196 pullNumber ,
0 commit comments