@@ -18,7 +18,7 @@ import { Remote } from '../common/remote';
1818import { Resource } from '../common/resources' ;
1919import { GITHUB_ENTERPRISE , OVERRIDE_DEFAULT_BRANCH , PR_SETTINGS_NAMESPACE , URI } from '../common/settingKeys' ;
2020import * as Common from '../common/timelineEvent' ;
21- import { DataUri } from '../common/uri' ;
21+ import { DataUri , toOpenIssueWebviewUri , toOpenPullRequestWebviewUri } from '../common/uri' ;
2222import { gitHubLabelColor , uniqBy } from '../common/utils' ;
2323import { OctokitCommon } from './common' ;
2424import { FolderRepositoryManager , PullRequestDefaults } from './folderRepositoryManager' ;
@@ -983,7 +983,7 @@ export function parseGraphQLReviewEvent(
983983 } ;
984984}
985985
986- export function parseGraphQLTimelineEvents (
986+ export async function parseGraphQLTimelineEvents (
987987 events : (
988988 | GraphQL . MergedEvent
989989 | GraphQL . Review
@@ -994,9 +994,9 @@ export function parseGraphQLTimelineEvents(
994994 | GraphQL . CrossReferencedEvent
995995 ) [ ] ,
996996 githubRepository : GitHubRepository ,
997- ) : Common . TimelineEvent [ ] {
997+ ) : Promise < Common . TimelineEvent [ ] > {
998998 const normalizedEvents : Common . TimelineEvent [ ] = [ ] ;
999- events . forEach ( event => {
999+ for ( const event of events ) {
10001000 const type = convertGraphQLEventType ( event . __typename ) ;
10011001
10021002 switch ( type ) {
@@ -1014,7 +1014,7 @@ export function parseGraphQLTimelineEvents(
10141014 graphNodeId : commentEvent . id ,
10151015 createdAt : commentEvent . createdAt ,
10161016 } ) ;
1017- return ;
1017+ break ;
10181018 case Common . EventType . Reviewed :
10191019 const reviewEvent = event as GraphQL . Review ;
10201020 normalizedEvents . push ( {
@@ -1029,7 +1029,7 @@ export function parseGraphQLTimelineEvents(
10291029 state : reviewEvent . state ,
10301030 id : reviewEvent . databaseId ,
10311031 } ) ;
1032- return ;
1032+ break ;
10331033 case Common . EventType . Committed :
10341034 const commitEv = event as GraphQL . Commit ;
10351035 normalizedEvents . push ( {
@@ -1043,7 +1043,7 @@ export function parseGraphQLTimelineEvents(
10431043 message : commitEv . commit . message ,
10441044 authoredDate : new Date ( commitEv . commit . authoredDate ) ,
10451045 } as Common . CommitEvent ) ; // TODO remove cast
1046- return ;
1046+ break ;
10471047 case Common . EventType . Merged :
10481048 const mergeEv = event as GraphQL . MergedEvent ;
10491049
@@ -1058,7 +1058,7 @@ export function parseGraphQLTimelineEvents(
10581058 url : mergeEv . url ,
10591059 graphNodeId : mergeEv . id ,
10601060 } ) ;
1061- return ;
1061+ break ;
10621062 case Common . EventType . Assigned :
10631063 const assignEv = event as GraphQL . AssignedEvent ;
10641064
@@ -1069,7 +1069,7 @@ export function parseGraphQLTimelineEvents(
10691069 actor : parseAccount ( assignEv . actor ) ,
10701070 createdAt : assignEv . createdAt ,
10711071 } ) ;
1072- return ;
1072+ break ;
10731073 case Common . EventType . HeadRefDeleted :
10741074 const deletedEv = event as GraphQL . HeadRefDeletedEvent ;
10751075
@@ -1080,23 +1080,28 @@ export function parseGraphQLTimelineEvents(
10801080 createdAt : deletedEv . createdAt ,
10811081 headRef : deletedEv . headRefName ,
10821082 } ) ;
1083- return ;
1083+ break ;
10841084 case Common . EventType . CrossReferenced :
10851085 const crossRefEv = event as GraphQL . CrossReferencedEvent ;
1086-
1086+ const isIssue = crossRefEv . source . __typename === 'Issue' ;
1087+ const extensionUrl = isIssue
1088+ ? await toOpenIssueWebviewUri ( { owner : crossRefEv . source . repository . owner . login , repo : crossRefEv . source . repository . name , issueNumber : crossRefEv . source . number } )
1089+ : await toOpenPullRequestWebviewUri ( { owner : crossRefEv . source . repository . owner . login , repo : crossRefEv . source . repository . name , pullRequestNumber : crossRefEv . source . number } ) ;
10871090 normalizedEvents . push ( {
10881091 id : crossRefEv . id ,
10891092 event : type ,
10901093 actor : parseAccount ( crossRefEv . actor , githubRepository ) ,
10911094 createdAt : crossRefEv . createdAt ,
10921095 source : {
10931096 url : crossRefEv . source . url ,
1097+ extensionUrl : extensionUrl . toString ( ) ,
10941098 number : crossRefEv . source . number ,
1095- title : crossRefEv . source . title
1099+ title : crossRefEv . source . title ,
1100+ isIssue
10961101 } ,
10971102 willCloseTarget : crossRefEv . willCloseTarget
10981103 } ) ;
1099- return ;
1104+ break ;
11001105 case Common . EventType . Closed :
11011106 const closedEv = event as GraphQL . ClosedEvent ;
11021107
@@ -1106,7 +1111,7 @@ export function parseGraphQLTimelineEvents(
11061111 actor : parseAccount ( closedEv . actor , githubRepository ) ,
11071112 createdAt : closedEv . createdAt ,
11081113 } ) ;
1109- return ;
1114+ break ;
11101115 case Common . EventType . Reopened :
11111116 const reopenedEv = event as GraphQL . ReopenedEvent ;
11121117
@@ -1116,11 +1121,11 @@ export function parseGraphQLTimelineEvents(
11161121 actor : parseAccount ( reopenedEv . actor , githubRepository ) ,
11171122 createdAt : reopenedEv . createdAt ,
11181123 } ) ;
1119- return ;
1124+ break ;
11201125 default :
11211126 break ;
11221127 }
1123- } ) ;
1128+ }
11241129
11251130 return normalizedEvents ;
11261131}
0 commit comments