@@ -76,12 +76,12 @@ import {
7676 getReactionGroup ,
7777 insertNewCommitsSinceReview ,
7878 parseAccount ,
79+ parseCombinedTimelineEvents ,
7980 parseGraphQLComment ,
8081 parseGraphQLReaction ,
8182 parseGraphQLReviewers ,
8283 parseGraphQLReviewEvent ,
8384 parseGraphQLReviewThread ,
84- parseGraphQLTimelineEvents ,
8585 parseMergeability ,
8686 parseMergeQueueEntry ,
8787 RestAccount ,
@@ -1162,40 +1162,45 @@ export class PullRequestModel extends IssueModel<PullRequest> implements IPullRe
11621162 * Get the timeline events of a pull request, including comments, reviews, commits, merges, deletes, and assigns.
11631163 */
11641164 async getTimelineEvents ( ) : Promise < TimelineEvent [ ] > {
1165- Logger . debug ( `Fetch timeline events of PR #${ this . number } - enter` , PullRequestModel . ID ) ;
1166- const { query, remote, schema } = await this . githubRepository . ensure ( ) ;
1167-
1168- try {
1169- const [ { data } , latestReviewCommitInfo , currentUser , reviewThreads ] = await Promise . all ( [
1170- query < TimelineEventsResponse > ( {
1165+ const getTimelineEvents = async ( ) => {
1166+ Logger . debug ( `Fetch timeline events of PR #${ this . number } - enter` , PullRequestModel . ID ) ;
1167+ const { query, remote, schema } = await this . githubRepository . ensure ( ) ;
1168+ try {
1169+ const { data } = await query < TimelineEventsResponse > ( {
11711170 query : schema . TimelineEvents ,
11721171 variables : {
11731172 owner : remote . owner ,
11741173 name : remote . repositoryName ,
11751174 number : this . number ,
11761175 } ,
1177- } ) ,
1178- this . getViewerLatestReviewCommit ( ) ,
1179- ( await this . githubRepository . getAuthenticatedUser ( ) ) . login ,
1180- this . getReviewThreads ( )
1181- ] ) ;
1176+ } ) ;
11821177
1183- if ( data . repository === null ) {
1184- Logger . error ( 'Unexpected null repository when fetching timeline' , PullRequestModel . ID ) ;
1178+ if ( data . repository === null ) {
1179+ Logger . error ( 'Unexpected null repository when fetching timeline' , PullRequestModel . ID ) ;
1180+ }
1181+ return data ;
1182+ } catch ( e ) {
1183+ Logger . error ( `Failed to get pull request timeline events: ${ e } ` , PullRequestModel . ID ) ;
1184+ console . log ( e ) ;
1185+ return undefined ;
11851186 }
1187+ } ;
11861188
1187- const ret = data . repository ?. pullRequest . timelineItems . nodes ;
1188- const events = ret ? await parseGraphQLTimelineEvents ( ret , this . githubRepository ) : [ ] ;
1189+ const [ data , latestReviewCommitInfo , currentUser , reviewThreads ] = await Promise . all ( [
1190+ getTimelineEvents ( ) ,
1191+ this . getViewerLatestReviewCommit ( ) ,
1192+ ( await this . githubRepository . getAuthenticatedUser ( ) ) . login ,
1193+ this . getReviewThreads ( )
1194+ ] ) ;
11891195
1190- this . addReviewTimelineEventComments ( events , reviewThreads ) ;
1191- insertNewCommitsSinceReview ( events , latestReviewCommitInfo ?. sha , currentUser , this . head ) ;
1192- Logger . debug ( `Fetch timeline events of PR #${ this . number } - done` , PullRequestModel . ID ) ;
1193- return events ;
1194- } catch ( e ) {
1195- Logger . error ( `Failed to get pull request timeline events: ${ e } ` , PullRequestModel . ID ) ;
1196- console . log ( e ) ;
1197- return [ ] ;
1198- }
1196+
1197+ const ret = data ?. repository ?. pullRequest . timelineItems . nodes ?? [ ] ;
1198+ const events = await parseCombinedTimelineEvents ( ret , await this . getRestOnlyTimelineEvents ( ) , this . githubRepository ) ;
1199+
1200+ this . addReviewTimelineEventComments ( events , reviewThreads ) ;
1201+ insertNewCommitsSinceReview ( events , latestReviewCommitInfo ?. sha , currentUser , this . head ) ;
1202+ Logger . debug ( `Fetch timeline events of PR #${ this . number } - done` , PullRequestModel . ID ) ;
1203+ return events ;
11991204 }
12001205
12011206 protected override getUpdatesQuery ( schema : any ) : any {
0 commit comments