@@ -19,7 +19,10 @@ use crate::{
1919} ;
2020
2121use super :: {
22- serde_structs:: { FullReview , PullRequestInfo , ReviewComment , ReviewDiffComment , ThreadComment } ,
22+ serde_structs:: {
23+ FullReview , PullRequestInfo , ReviewComment , ReviewDiffComment , ThreadComment ,
24+ REVIEW_DISMISSAL ,
25+ } ,
2326 GithubApiClient , RestApiClient ,
2427} ;
2528
@@ -206,9 +209,14 @@ impl GithubApiClient {
206209 } ) ?,
207210 ) ;
208211 let repo = format ! (
209- "repos/{}/comments" ,
212+ "repos/{}{} /comments" ,
210213 // if we got here, then we know it is on a CI runner as self.repo should be known
211- self . repo. as_ref( ) . expect( "Repo name unknown." )
214+ self . repo. as_ref( ) . expect( "Repo name unknown." ) ,
215+ if self . event_name == "pull_request" {
216+ "/issues"
217+ } else {
218+ ""
219+ } ,
212220 ) ;
213221 let base_comment_url = self . api_url . join ( & repo) . unwrap ( ) ;
214222 while let Some ( ref endpoint) = comments_url {
@@ -454,51 +462,40 @@ impl GithubApiClient {
454462 && !( [ "PENDING" , "DISMISSED" ] . contains ( & review. state . as_str ( ) ) )
455463 {
456464 // dismiss outdated review
457- match url. join ( "reviews/" ) ?. join ( review. id . to_string ( ) . as_str ( ) ) {
458- Ok ( dismiss_url) => {
459- if let Ok ( req) = Self :: make_api_request (
460- & self . client ,
461- dismiss_url,
462- Method :: PUT ,
463- Some (
464- serde_json:: json!(
465- {
466- "message" : "outdated suggestion" ,
467- "event" : "DISMISS"
468- }
469- )
470- . to_string ( ) ,
471- ) ,
472- None ,
473- ) {
474- match Self :: send_api_request (
475- self . client . clone ( ) ,
476- req,
477- self . rate_limit_headers . clone ( ) ,
478- 0 ,
479- )
480- . await
481- {
482- Ok ( result) => {
483- if !result. status ( ) . is_success ( ) {
484- Self :: log_response (
485- result,
486- "Failed to dismiss outdated review" ,
487- )
488- . await ;
489- }
490- }
491- Err ( e) => {
492- log:: error!(
493- "Failed to dismiss outdated review: {e:}"
494- ) ;
465+ if let Ok ( dismiss_url) =
466+ url. join ( format ! ( "reviews/{}/dismissals" , review. id) . as_str ( ) )
467+ {
468+ if let Ok ( req) = Self :: make_api_request (
469+ & self . client ,
470+ dismiss_url,
471+ Method :: PUT ,
472+ Some ( REVIEW_DISMISSAL . to_string ( ) ) ,
473+ None ,
474+ ) {
475+ match Self :: send_api_request (
476+ self . client . clone ( ) ,
477+ req,
478+ self . rate_limit_headers . clone ( ) ,
479+ 0 ,
480+ )
481+ . await
482+ {
483+ Ok ( result) => {
484+ if !result. status ( ) . is_success ( ) {
485+ Self :: log_response (
486+ result,
487+ "Failed to dismiss outdated review" ,
488+ )
489+ . await ;
495490 }
496491 }
492+ Err ( e) => {
493+ log:: error!(
494+ "Failed to dismiss outdated review: {e:}"
495+ ) ;
496+ }
497497 }
498498 }
499- Err ( e) => {
500- log:: error!( "Failed to parse URL for dismissing outdated review: {e:?}" ) ;
501- }
502499 }
503500 }
504501 }
0 commit comments