@@ -22,8 +22,14 @@ import { Logger } from '../../../../system/logger';
22
22
import type { LogScope } from '../../../../system/logger.scope' ;
23
23
import { getLogScope } from '../../../../system/logger.scope' ;
24
24
import { maybeStopWatch } from '../../../../system/stopwatch' ;
25
- import type { AzureWorkItemState , AzureWorkItemStateCategory , WorkItem } from './models' ;
26
- import { azureWorkItemsStateCategoryToState , isClosedAzureWorkItemStateCategory } from './models' ;
25
+ import type { AzurePullRequest , AzureWorkItemState , AzureWorkItemStateCategory , WorkItem } from './models' ;
26
+ import {
27
+ azurePullRequestStatusToState ,
28
+ azureWorkItemsStateCategoryToState ,
29
+ getPullRequestUrl ,
30
+ isClosedAzurePullRequestStatus ,
31
+ isClosedAzureWorkItemStateCategory ,
32
+ } from './models' ;
27
33
28
34
export class AzureDevOpsApi implements Disposable {
29
35
private readonly _disposable : Disposable ;
@@ -71,7 +77,7 @@ export class AzureDevOpsApi implements Disposable {
71
77
} ,
72
78
) : Promise < IssueOrPullRequest | undefined > {
73
79
const scope = getLogScope ( ) ;
74
- const [ projectName ] = repo . split ( '/' ) ;
80
+ const [ projectName , _ , repoName ] = repo . split ( '/' ) ;
75
81
76
82
try {
77
83
// Try to get the Work item (wit) first with specific fields
@@ -112,6 +118,39 @@ export class AzureDevOpsApi implements Disposable {
112
118
url : issueResult . _links . html . href ,
113
119
} ;
114
120
}
121
+ } catch ( ex ) {
122
+ if ( ex . original ?. status !== 404 ) {
123
+ Logger . error ( ex , scope ) ;
124
+ return undefined ;
125
+ }
126
+ }
127
+
128
+ try {
129
+ const prResult = await this . request < AzurePullRequest > (
130
+ provider ,
131
+ token ,
132
+ options ?. baseUrl ,
133
+ `${ owner } /${ projectName } /_apis/git/repositories/${ repoName } /pullRequests/${ id } ` ,
134
+ {
135
+ method : 'GET' ,
136
+ } ,
137
+ scope ,
138
+ ) ;
139
+
140
+ if ( prResult != null ) {
141
+ return {
142
+ id : prResult . pullRequestId . toString ( ) ,
143
+ type : 'pullrequest' ,
144
+ nodeId : prResult . pullRequestId . toString ( ) , // prResult.artifactId maybe?
145
+ provider : provider ,
146
+ createdDate : new Date ( prResult . creationDate ) ,
147
+ updatedDate : new Date ( prResult . creationDate ) ,
148
+ state : azurePullRequestStatusToState ( prResult . status ) ,
149
+ closed : isClosedAzurePullRequestStatus ( prResult . status ) ,
150
+ title : prResult . title ,
151
+ url : getPullRequestUrl ( options . baseUrl , owner , projectName , repoName , prResult . pullRequestId ) ,
152
+ } ;
153
+ }
115
154
116
155
return undefined ;
117
156
} catch ( ex ) {
0 commit comments