Skip to content

Commit 1e1a8db

Browse files
authored
Contribute open changes button to copilot-cloud-agent (#8039)
* contribute open changes button to copilot-cloud-agent * formatting * use shared helper
1 parent e4fa303 commit 1e1a8db

2 files changed

Lines changed: 19 additions & 2 deletions

File tree

package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3554,6 +3554,9 @@
35543554
},
35553555
{
35563556
"command": "pr.applyChangesFromDescription"
3557+
},
3558+
{
3559+
"command": "pr.openChanges"
35573560
}
35583561
]
35593562
},

src/commands.ts

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -716,7 +716,7 @@ export function registerCommands(
716716
}));
717717

718718
context.subscriptions.push(
719-
vscode.commands.registerCommand('pr.openChanges', async (pr: PRNode | RepositoryChangesNode | PullRequestModel | OverviewContext | ChatSessionWithPR | undefined) => {
719+
vscode.commands.registerCommand('pr.openChanges', async (pr: PRNode | RepositoryChangesNode | PullRequestModel | OverviewContext | ChatSessionWithPR | { path: string } | undefined) => {
720720
if (pr === undefined) {
721721
// This is unexpected, but has happened a few times.
722722
Logger.error('Unexpectedly received undefined when picking a PR.', logId);
@@ -739,7 +739,21 @@ export function registerCommands(
739739
preventDefaultContextMenuItems: true,
740740
});
741741
pullRequestModel = resolved?.pr;
742-
} else {
742+
}
743+
else if (contextHasPath(pr)) {
744+
const { path } = pr;
745+
const prNumber = prNumberFromUriPath(path);
746+
if (!prNumber) {
747+
return vscode.window.showErrorMessage(vscode.l10n.t('No pull request number found in context path.'));
748+
}
749+
const folderManager = reposManager.folderManagers[0];
750+
const pullRequest = await folderManager.fetchById(folderManager.gitHubRepositories[0], Number(prNumber));
751+
if (!pullRequest) {
752+
return vscode.window.showErrorMessage(vscode.l10n.t('Unable to find pull request #{0}', prNumber.toString()));
753+
}
754+
pullRequestModel = pullRequest;
755+
}
756+
else {
743757
const resolved = await resolvePr(pr as OverviewContext);
744758
pullRequestModel = resolved?.pr;
745759
}

0 commit comments

Comments
 (0)