@@ -27,7 +27,7 @@ import { IssueOverviewPanel, panelKey } from './issueOverview';
2727import { isCopilotOnMyBehalf , PullRequestModel } from './pullRequestModel' ;
2828import { PullRequestReviewCommon , ReviewContext } from './pullRequestReviewCommon' ;
2929import { branchPicks , pickEmail , reviewersQuickPick } from './quickPicks' ;
30- import { parseReviewers , processDiffLinks , processPermalinks } from './utils' ;
30+ import { ISSUE_OR_URL_EXPRESSION , parseIssueExpressionOutput , parseReviewers , processDiffLinks , processPermalinks } from './utils' ;
3131import { CancelCodingAgentReply , ChangeBaseReply , ChangeReviewersReply , DeleteReviewResult , MergeArguments , MergeResult , PullRequest , ReadyForReviewAndMergeContext , ReadyForReviewContext , ReviewCommentContext , ReviewType , UnresolvedIdentity } from './views' ;
3232import { debounce } from '../common/async' ;
3333import { COPILOT_ACCOUNTS , IComment } from '../common/comment' ;
@@ -38,6 +38,7 @@ import Logger from '../common/logger';
3838import { CHECKOUT_DEFAULT_BRANCH , CHECKOUT_PULL_REQUEST_BASE_BRANCH , DEFAULT_MERGE_METHOD , DELETE_BRANCH_AFTER_MERGE , POST_DONE , PR_SETTINGS_NAMESPACE } from '../common/settingKeys' ;
3939import { ITelemetry } from '../common/telemetry' ;
4040import { EventType , ReviewEvent , SessionLinkInfo , TimelineEvent } from '../common/timelineEvent' ;
41+ import { toOpenIssueWebviewUri } from '../common/uri' ;
4142import { asPromise , formatError } from '../common/utils' ;
4243import { IRequestMessage , PULL_REQUEST_OVERVIEW_VIEW_TYPE } from '../common/webview' ;
4344import { toCheckRunLogUri } from '../view/checkRunLogContentProvider' ;
@@ -459,7 +460,13 @@ export class PullRequestOverviewPanel extends IssueOverviewPanel<PullRequestMode
459460 revertable : pullRequest . state === GithubItemStateEnum . Merged ,
460461 isCopilotOnMyBehalf : await isCopilotOnMyBehalf ( pullRequest , currentUser , coAuthors ) ,
461462 generateDescriptionTitle : this . getGenerateDescriptionTitle ( ) ,
462- closingIssues : pullRequest . closingIssues ,
463+ closingIssues : await Promise . all ( ( pullRequest . closingIssues ?? [ ] ) . map ( async issue => {
464+ const parsed = parseIssueExpressionOutput ( issue . url . match ( ISSUE_OR_URL_EXPRESSION ) ) ;
465+ const owner = parsed ?. owner ?? pullRequest . remote . owner ;
466+ const repo = parsed ?. name ?? pullRequest . remote . repositoryName ;
467+ const webviewUri = await toOpenIssueWebviewUri ( { owner, repo, issueNumber : issue . number } ) ;
468+ return { ...issue , url : webviewUri . toString ( ) } ;
469+ } ) ) ,
463470 } ;
464471 this . _postMessage ( {
465472 command : 'pr.initialize' ,
0 commit comments