Skip to content

Commit beb4f67

Browse files
authored
Create Pull Request Suggestions hard to find in SCM view (#6180)
Fixes #6163
1 parent d82ed4f commit beb4f67

File tree

3 files changed

+23
-6
lines changed

3 files changed

+23
-6
lines changed

package.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2469,6 +2469,13 @@
24692469
"group": "inline@-2"
24702470
}
24712471
],
2472+
"scm/resourceState/context": [
2473+
{
2474+
"command": "review.createSuggestionsFromChanges",
2475+
"when": "scmProviderRootUri in github:reposInReviewMode && scmProvider =~ /^git|^remoteHub:github/ && scmResourceGroup == workingTree",
2476+
"group": "1_modification@5"
2477+
}
2478+
],
24722479
"comments/commentThread/context": [
24732480
{
24742481
"command": "pr.createComment",

src/commands.ts

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1154,16 +1154,25 @@ ${contents}
11541154
}),
11551155
);
11561156

1157-
context.subscriptions.push(vscode.commands.registerCommand('review.createSuggestionsFromChanges', async (value: { resourceStates: { resourceUri }[] }) => {
1158-
if (value.resourceStates.length === 0) {
1157+
context.subscriptions.push(vscode.commands.registerCommand('review.createSuggestionsFromChanges', async (value: ({ resourceStates: { resourceUri }[] }) | ({ resourceUri: vscode.Uri }), ...additionalSelected: ({ resourceUri: vscode.Uri })[]) => {
1158+
let resources: vscode.Uri[];
1159+
if ('resourceStates' in value) {
1160+
resources = value.resourceStates.map(resource => resource.resourceUri);
1161+
} else {
1162+
resources = [value.resourceUri];
1163+
if (additionalSelected) {
1164+
resources.push(...additionalSelected.map(resource => resource.resourceUri));
1165+
}
1166+
}
1167+
if (resources.length === 0) {
11591168
return;
11601169
}
1161-
const folderManager = reposManager.getManagerForFile(value.resourceStates[0].resourceUri);
1170+
const folderManager = reposManager.getManagerForFile(resources[0]);
11621171
if (!folderManager || !folderManager.activePullRequest) {
11631172
return;
11641173
}
11651174
const reviewManager = ReviewManager.getReviewManagerForFolderManager(reviewsManager.reviewManagers, folderManager);
1166-
return reviewManager?.createSuggestionsFromChanges();
1175+
return reviewManager?.createSuggestionsFromChanges(resources);
11671176
}));
11681177

11691178
context.subscriptions.push(vscode.commands.registerDiffInformationCommand('review.createSuggestionFromChange', async (diffLines: vscode.LineChange[]) => {

src/view/reviewManager.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -755,12 +755,13 @@ export class ReviewManager {
755755
};
756756
}
757757

758-
async createSuggestionsFromChanges() {
758+
async createSuggestionsFromChanges(resources: vscode.Uri[]) {
759+
const resourceStrings = resources.map(resource => resource.toString());
759760
let hasError: boolean = false;
760761
const convertedFiles: vscode.Uri[] = [];
761762
await vscode.window.withProgress({ location: vscode.ProgressLocation.Window, title: 'Converting changes to suggestions' }, async () => {
762763
await Promise.all(this._folderRepoManager.repository.state.workingTreeChanges.map(async changeFile => {
763-
if (changeFile.status !== Status.MODIFIED) {
764+
if (!resourceStrings.includes(changeFile.uri.toString()) || (changeFile.status !== Status.MODIFIED)) {
764765
return;
765766
}
766767
const diff = parsePatch(await this._folderRepoManager.repository.diffWithHEAD(changeFile.uri.fsPath));

0 commit comments

Comments
 (0)