@@ -19,7 +19,10 @@ use crate::{
19
19
} ;
20
20
21
21
use super :: {
22
- serde_structs:: { FullReview , PullRequestInfo , ReviewComment , ReviewDiffComment , ThreadComment } ,
22
+ serde_structs:: {
23
+ FullReview , PullRequestInfo , ReviewComment , ReviewDiffComment , ThreadComment ,
24
+ REVIEW_DISMISSAL ,
25
+ } ,
23
26
GithubApiClient , RestApiClient ,
24
27
} ;
25
28
@@ -206,9 +209,14 @@ impl GithubApiClient {
206
209
} ) ?,
207
210
) ;
208
211
let repo = format ! (
209
- "repos/{}/comments" ,
212
+ "repos/{}{} /comments" ,
210
213
// 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
+ } ,
212
220
) ;
213
221
let base_comment_url = self . api_url . join ( & repo) . unwrap ( ) ;
214
222
while let Some ( ref endpoint) = comments_url {
@@ -454,51 +462,40 @@ impl GithubApiClient {
454
462
&& !( [ "PENDING" , "DISMISSED" ] . contains ( & review. state . as_str ( ) ) )
455
463
{
456
464
// 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 ;
495
490
}
496
491
}
492
+ Err ( e) => {
493
+ log:: error!(
494
+ "Failed to dismiss outdated review: {e:}"
495
+ ) ;
496
+ }
497
497
}
498
498
}
499
- Err ( e) => {
500
- log:: error!( "Failed to parse URL for dismissing outdated review: {e:?}" ) ;
501
- }
502
499
}
503
500
}
504
501
}
0 commit comments