@@ -67,6 +67,7 @@ import * as limitedSchema from './queriesLimited.gql';
6767import * as sharedSchema from './queriesShared.gql' ;
6868import {
6969 convertRESTPullRequestToRawPullRequest ,
70+ eventTime ,
7071 getAvatarWithEnterpriseFallback ,
7172 getOverrideBranch ,
7273 insertNewCommitsSinceReview ,
@@ -1478,7 +1479,7 @@ export class GitHubRepository extends Disposable {
14781479 /**
14791480 * TODO: @alexr00 we should delete this https://github.com/microsoft/vscode-pull-request-github/issues/6965
14801481 */
1481- async getCopilotTimelineEvents ( issueModel : IssueModel ) : Promise < Common . TimelineEvent [ ] > {
1482+ async getCopilotTimelineEvents ( issueModel : IssueModel , skipMerge : boolean = false ) : Promise < Common . TimelineEvent [ ] > {
14821483 if ( ! COPILOT_ACCOUNTS [ issueModel . author . login ] ) {
14831484 return [ ] ;
14841485 }
@@ -1494,7 +1495,24 @@ export class GitHubRepository extends Disposable {
14941495 per_page : 100
14951496 } ) ;
14961497
1497- return parseSelectRestTimelineEvents ( issueModel , timeline ) ;
1498+ const timelineEvents = parseSelectRestTimelineEvents ( issueModel , timeline ) ;
1499+ if ( timelineEvents . length === 0 ) {
1500+ return [ ] ;
1501+ }
1502+ if ( ! skipMerge ) {
1503+ const oldLastEvent = issueModel . timelineEvents . length > 0 ? issueModel . timelineEvents [ issueModel . timelineEvents . length - 1 ] : undefined ;
1504+ let allEvents : Common . TimelineEvent [ ] ;
1505+ if ( ! oldLastEvent ) {
1506+ allEvents = timelineEvents ;
1507+ } else {
1508+ const oldEventTime = ( eventTime ( oldLastEvent ) ?? 0 ) ;
1509+ const newEvents = timelineEvents . filter ( event => ( eventTime ( event ) ?? 0 ) > oldEventTime ) ;
1510+ allEvents = [ ...issueModel . timelineEvents , ...newEvents ] ;
1511+ }
1512+ issueModel . timelineEvents = allEvents ;
1513+ this . _onDidChangePullRequests . fire ( ) ;
1514+ }
1515+ return timelineEvents ;
14981516 } catch ( e ) {
14991517 Logger . error ( `Error fetching Copilot timeline events of issue #${ issueModel . number } - ${ formatError ( e ) } ` , GitHubRepository . ID ) ;
15001518 return [ ] ;
@@ -1520,7 +1538,7 @@ export class GitHubRepository extends Disposable {
15201538 return [ ] ;
15211539 }
15221540 const ret = data . repository . pullRequest . timelineItems . nodes ;
1523- const events = await parseCombinedTimelineEvents ( ret , await this . getCopilotTimelineEvents ( issueModel ) , this ) ;
1541+ const events = await parseCombinedTimelineEvents ( ret , await this . getCopilotTimelineEvents ( issueModel , true ) , this ) ;
15241542
15251543 const crossRefs = new Map ( events
15261544 . filter ( ( event ) : event is Common . CrossReferencedEvent => {
@@ -1604,7 +1622,7 @@ export class GitHubRepository extends Disposable {
16041622
16051623
16061624 const ret = data ?. repository ?. pullRequest . timelineItems . nodes ?? [ ] ;
1607- const events = await parseCombinedTimelineEvents ( ret , await this . getCopilotTimelineEvents ( pullRequestModel ) , this ) ;
1625+ const events = await parseCombinedTimelineEvents ( ret , await this . getCopilotTimelineEvents ( pullRequestModel , true ) , this ) ;
16081626
16091627 this . addReviewTimelineEventComments ( events , reviewThreads ) ;
16101628 insertNewCommitsSinceReview ( events , latestReviewCommitInfo ?. sha , currentUser , pullRequestModel . head ) ;
0 commit comments