@@ -26,6 +26,11 @@ export const robot = (app: Probot) => {
26
26
app . on ( [ 'pull_request.opened' , 'pull_request.synchronize' ] , async ( context ) => {
27
27
const repo = context . repo ( ) ;
28
28
const chat = await loadChat ( context ) ;
29
+ const pull_request = context . payload . pull_request ;
30
+
31
+ if ( pull_request . state === 'closed' || pull_request . locked || pull_request . draft ) {
32
+ return ;
33
+ }
29
34
30
35
const data = await context . octokit . request (
31
36
`GET /repos/{owner}/{repo}/compare/{basehead}` ,
@@ -36,14 +41,31 @@ export const robot = (app: Probot) => {
36
41
}
37
42
) ;
38
43
39
- const { files, commits } = data . data ;
44
+ let { files : changedFiles , commits } = data . data ;
45
+
46
+ if ( context . payload . action === 'synchronize' ) {
47
+ if ( commits . length >= 2 ) {
48
+ const { data : { files } } = await context . octokit . request (
49
+ `GET /repos/{owner}/{repo}/compare/{basehead}` ,
50
+ {
51
+ owner : repo . owner ,
52
+ repo : repo . repo ,
53
+ basehead : `${ commits [ commits . length - 2 ] . sha } ...${ commits [ commits . length - 1 ] . sha } ` ,
54
+ }
55
+ ) ;
56
+
57
+ const filesNames = files ?. map ( file => file . filename ) || [ ] ;
58
+ changedFiles = changedFiles ?. filter ( file => filesNames . includes ( file . filename ) )
59
+ }
60
+ }
61
+
40
62
41
- if ( ! files ?. length ) {
63
+ if ( ! changedFiles ?. length ) {
42
64
return ;
43
65
}
44
66
45
- for ( let i = 0 ; i < files . length ; i ++ ) {
46
- const file = files [ i ] ;
67
+ for ( let i = 0 ; i < changedFiles . length ; i ++ ) {
68
+ const file = changedFiles [ i ] ;
47
69
const patch = file . patch || '' ;
48
70
49
71
if ( ! patch || patch . length > MAX_PATCH_COUNT ) {
0 commit comments