@@ -274,15 +274,27 @@ jobs:
274274 // Dismiss all existing bot reviews and resolve their conversations
275275 for (const review of botReviews) {
276276 if (review.state !== 'DISMISSED') {
277+ // Resolve threads first
277278 await resolveReviewThreads(review.id);
278- await github.rest.pulls.dismissReview({
279- owner: context.repo.owner,
280- repo: context.repo.repo,
281- pull_number: context.issue.number,
282- review_id: review.id,
283- message: 'All lint issues have been resolved'
284- });
285- console.log(`Dismissed review ${review.id} and resolved conversations`);
279+
280+ // Only dismiss reviews that can be dismissed (APPROVED or CHANGES_REQUESTED)
281+ // COMMENTED reviews cannot be dismissed via the API
282+ if (review.state === 'APPROVED' || review.state === 'CHANGES_REQUESTED') {
283+ try {
284+ await github.rest.pulls.dismissReview({
285+ owner: context.repo.owner,
286+ repo: context.repo.repo,
287+ pull_number: context.issue.number,
288+ review_id: review.id,
289+ message: 'All lint issues have been resolved'
290+ });
291+ console.log(`Dismissed ${review.state} review ${review.id} and resolved conversations`);
292+ } catch (error) {
293+ console.log(`Could not dismiss review ${review.id}: ${error.message}`);
294+ }
295+ } else {
296+ console.log(`Skipped dismissing ${review.state} review ${review.id} (only threads resolved)`);
297+ }
286298 }
287299 }
288300
@@ -310,15 +322,27 @@ jobs:
310322 // Dismiss ALL existing bot reviews and resolve their conversations
311323 for (const review of botReviews) {
312324 if (review.state !== 'DISMISSED') {
325+ // Resolve threads first
313326 await resolveReviewThreads(review.id);
314- await github.rest.pulls.dismissReview({
315- owner: context.repo.owner,
316- repo: context.repo.repo,
317- pull_number: context.issue.number,
318- review_id: review.id,
319- message: 'Updating with new lint results'
320- });
321- console.log(`Dismissed review ${review.id} and resolved conversations`);
327+
328+ // Only dismiss reviews that can be dismissed (APPROVED or CHANGES_REQUESTED)
329+ // COMMENTED reviews cannot be dismissed via the API
330+ if (review.state === 'APPROVED' || review.state === 'CHANGES_REQUESTED') {
331+ try {
332+ await github.rest.pulls.dismissReview({
333+ owner: context.repo.owner,
334+ repo: context.repo.repo,
335+ pull_number: context.issue.number,
336+ review_id: review.id,
337+ message: 'Updating with new lint results'
338+ });
339+ console.log(`Dismissed ${review.state} review ${review.id} and resolved conversations`);
340+ } catch (error) {
341+ console.log(`Could not dismiss review ${review.id}: ${error.message}`);
342+ }
343+ } else {
344+ console.log(`Skipped dismissing ${review.state} review ${review.id} (only threads resolved)`);
345+ }
322346 }
323347 }
324348
0 commit comments