Skip to content

Commit c40c391

Browse files
committed
fixup! Retrieves pull request for a branch in Azure DevOps to show in Home
1 parent 9c8660a commit c40c391

File tree

2 files changed

+38
-47
lines changed

2 files changed

+38
-47
lines changed

src/plus/integrations/providers/azure/azure.ts

Lines changed: 3 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import {
1414
RequestNotFoundError,
1515
} from '../../../../errors';
1616
import type { IssueOrPullRequest } from '../../../../git/models/issueOrPullRequest';
17-
import { PullRequest } from '../../../../git/models/pullRequest';
17+
import type { PullRequest } from '../../../../git/models/pullRequest';
1818
import type { Provider } from '../../../../git/models/remoteProvider';
1919
import { showIntegrationRequestFailed500WarningMessage } from '../../../../messages';
2020
import { configuration } from '../../../../system/-webview/configuration';
@@ -33,6 +33,7 @@ import type {
3333
import {
3434
azurePullRequestStatusToState,
3535
azureWorkItemsStateCategoryToState,
36+
fromAzurePullRequest,
3637
getAzurePullRequestWebUrl,
3738
isClosedAzurePullRequestStatus,
3839
isClosedAzureWorkItemStateCategory,
@@ -101,26 +102,7 @@ export class AzureDevOpsApi implements Disposable {
101102
const pr = prResult?.value.find(pr => pr.sourceRefName.endsWith(branch));
102103
if (pr == null) return undefined;
103104

104-
return new PullRequest(
105-
provider,
106-
{
107-
id: pr.createdBy.id,
108-
name: pr.createdBy.displayName,
109-
avatarUrl: pr.createdBy.imageUrl,
110-
url: pr.createdBy.url,
111-
},
112-
pr.pullRequestId.toString(),
113-
pr.pullRequestId.toString(),
114-
pr.title,
115-
getPullRequestUrl(options.baseUrl, owner, projectName, repoName, pr.pullRequestId),
116-
{
117-
owner: owner,
118-
repo: repo,
119-
},
120-
azurePullRequestStatusToState(pr.status),
121-
new Date(pr.creationDate),
122-
new Date(pr.creationDate),
123-
);
105+
return fromAzurePullRequest(pr, provider);
124106
} catch (ex) {
125107
Logger.error(ex, scope);
126108
return undefined;

src/plus/integrations/providers/azure/models.ts

Lines changed: 35 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
import type { IssueOrPullRequestState } from '../../../../git/models/issueOrPullRequest';
2+
import { PullRequest } from '../../../../git/models/pullRequest';
3+
import type { Provider } from '../../../../git/models/remoteProvider';
24

35
export type AzureWorkItemStateCategory = 'Proposed' | 'InProgress' | 'Resolved' | 'Completed' | 'Removed';
46

@@ -144,32 +146,6 @@ export interface AzureRepository {
144146
isInMaintenance: boolean;
145147
}
146148

147-
export type AzureProjectState = 'createPending' | 'deleted' | 'deleting' | 'new' | 'unchanged' | 'wellFormed';
148-
export type AzureProjectVisibility = 'private' | 'public';
149-
150-
export interface AzureProject {
151-
id: string;
152-
name: string;
153-
url: string;
154-
state: AzureProjectState;
155-
revision: number;
156-
visibility: AzureProjectVisibility;
157-
lastUpdateTime: string;
158-
}
159-
160-
export interface AzureRepository {
161-
id: string;
162-
name: string;
163-
url: string;
164-
project: AzureProject;
165-
size: number;
166-
remoteUrl: string;
167-
sshUrl: string;
168-
webUrl: string;
169-
isDisabled: boolean;
170-
isInMaintenance: boolean;
171-
}
172-
173149
export interface AzureGitCommitRef {
174150
commitId: string;
175151
url: string;
@@ -289,9 +265,18 @@ export interface AzurePullRequestWithLinks extends AzurePullRequest {
289265
remoteUrl?: string;
290266
workItemRefs?: AzureResourceRef[];
291267
}
268+
269+
export function getVSTSOwner(url: URL): string {
270+
return url.hostname.split('.')[0];
271+
}
292272
export function getAzureDevOpsOwner(url: URL): string {
293273
return url.pathname.split('/')[1];
294274
}
275+
export function getAzureOwner(url: URL): string {
276+
const isVSTS = url.hostname.endsWith('visualstudio.com');
277+
return isVSTS ? getVSTSOwner(url) : getAzureDevOpsOwner(url);
278+
}
279+
295280
export function getAzureRepo(pr: AzurePullRequest): string {
296281
return `${pr.repository.project.name}/_git/${pr.repository.name}`;
297282
}
@@ -307,3 +292,27 @@ export function getAzurePullRequestWebUrl(pr: AzurePullRequest): string {
307292
const owner = getAzureDevOpsOwner(url);
308293
return `${baseUrl}/${owner}/${repoPath}/pullrequest/${pr.pullRequestId}`;
309294
}
295+
296+
export function fromAzurePullRequest(pr: AzurePullRequest, provider: Provider): PullRequest {
297+
const url = new URL(pr.url);
298+
return new PullRequest(
299+
provider,
300+
{
301+
id: pr.createdBy.id,
302+
name: pr.createdBy.displayName,
303+
avatarUrl: pr.createdBy.imageUrl,
304+
url: pr.createdBy.url,
305+
},
306+
pr.pullRequestId.toString(),
307+
pr.pullRequestId.toString(),
308+
pr.title,
309+
getAzurePullRequestWebUrl(pr),
310+
{
311+
owner: getAzureOwner(url),
312+
repo: getAzureRepo(pr),
313+
},
314+
azurePullRequestStatusToState(pr.status),
315+
new Date(pr.creationDate),
316+
new Date(pr.creationDate),
317+
);
318+
}

0 commit comments

Comments
 (0)