From 7308e9a7b7fe57e02d93e22a4428a30ca5132bcc Mon Sep 17 00:00:00 2001 From: SyncIt21 <110812394+SyncIt21@users.noreply.github.com> Date: Fri, 5 Jun 2026 16:21:44 +0530 Subject: [PATCH] Fixes order of adding/removing reviewers from pr events --- dist/index.js | 19 +++++++++++++++---- src/index.ts | 27 +++++++++++++++++++++------ 2 files changed, 36 insertions(+), 10 deletions(-) diff --git a/dist/index.js b/dist/index.js index d4a29b2..cfeacd7 100644 --- a/dist/index.js +++ b/dist/index.js @@ -33225,7 +33225,7 @@ async function run() { info('No reviewers to call'); return; } - //Remove users that removed themselves from review + //Remove users that have previously removed/added themself to review ; (await octokit.paginate(octokit.rest.issues.listEvents.endpoint.merge({ owner: core_owner, @@ -33233,11 +33233,22 @@ async function run() { issue_number: pull_number }))) .flatMap(array => array) + .reverse() //reverse to get latest events .forEach(issue_event => { - if (issue_event.event == 'review_request_removed') { + const event = issue_event.event; + if (event == 'review_request_removed' || + event == 'review_requested') { const remove = issue_event.actor.login; - notice(`User ${remove} cannot be requested because they have removed themself as reviewer.`); - trimmed_owners.splice(trimmed_owners.indexOf(remove), 1); + //skip bot events + if (remove == 'github-actions[bot]') { + return; + } + //if user has triggered this event then we skip it + const index = trimmed_owners.indexOf(remove); + if (index >= 0) { + notice(`User ${remove} has ${event == 'review_request_removed' ? 'previously removed' : 'already added'} themself as a reviewer.`); + trimmed_owners.splice(index, 1); + } } }); //Remove Invalid users diff --git a/src/index.ts b/src/index.ts index f2401f0..9ce39cd 100644 --- a/src/index.ts +++ b/src/index.ts @@ -167,7 +167,7 @@ async function run(): Promise { return } - //Remove users that removed themselves from review + //Remove users that have previously removed/added themself to review ;( await octokit.paginate< RestEndpointMethodTypes['issues']['listEvents']['response']['data'] @@ -180,13 +180,28 @@ async function run(): Promise { ) ) .flatMap(array => array) + .reverse() //reverse to get latest events .forEach(issue_event => { - if (issue_event.event == 'review_request_removed') { + const event = issue_event.event + if ( + event == 'review_request_removed' || + event == 'review_requested' + ) { const remove = issue_event.actor.login - notice( - `User ${remove} cannot be requested because they have removed themself as reviewer.` - ) - trimmed_owners.splice(trimmed_owners.indexOf(remove), 1) + + //skip bot events + if (remove == 'github-actions[bot]') { + return + } + + //if user has triggered this event then we skip it + const index = trimmed_owners.indexOf(remove) + if (index >= 0) { + notice( + `User ${remove} has ${event == 'review_request_removed' ? 'previously removed' : 'already added'} themself as a reviewer.` + ) + trimmed_owners.splice(index, 1) + } } })