Skip to content

Commit 4c48cff

Browse files
Copilotalexr00
andcommitted
Implement pr.readyForReviewAndMerge command with busy state handling
Co-authored-by: alexr00 <38270282+alexr00@users.noreply.github.com>
1 parent 66ca67b commit 4c48cff

2 files changed

Lines changed: 36 additions & 0 deletions

File tree

src/github/pullRequestOverview.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,12 @@ export class PullRequestOverviewPanel extends IssueOverviewPanel<PullRequestMode
142142

143143
this.setVisibilityContext();
144144

145+
this._register(vscode.commands.registerCommand('pr.readyForReview', async () => {
146+
return this.readyForReviewCommand();
147+
}));
148+
this._register(vscode.commands.registerCommand('pr.readyForReviewAndMerge', async (context?: { mergeMethod: MergeMethod }) => {
149+
return this.readyForReviewAndMergeCommand(context);
150+
}));
145151
this._register(vscode.commands.registerCommand('review.approveDescription', (e) => this.approvePullRequestCommand(e)));
146152
this._register(vscode.commands.registerCommand('review.commentDescription', (e) => this.submitReviewCommand(e)));
147153
this._register(vscode.commands.registerCommand('review.requestChangesDescription', (e) => this.requestChangesCommand(e)));
@@ -678,6 +684,22 @@ export class PullRequestOverviewPanel extends IssueOverviewPanel<PullRequestMode
678684
}
679685
}
680686

687+
private async readyForReviewCommand(): Promise<void> {
688+
// Trigger the webview action by posting a message
689+
// This will use the existing webview logic which handles busy state
690+
this._postMessage({
691+
command: 'pr.readyForReview-trigger'
692+
});
693+
}
694+
695+
private async readyForReviewAndMergeCommand(_context?: { mergeMethod: MergeMethod }): Promise<void> {
696+
// Trigger the webview action by posting a message
697+
// This will use the existing webview logic which handles busy state
698+
this._postMessage({
699+
command: 'pr.readyForReviewAndMerge-trigger'
700+
});
701+
}
702+
681703
private async checkoutDefaultBranch(message: IRequestMessage<string>): Promise<void> {
682704
try {
683705
const prBranch = this._folderRepositoryManager.repository.state.HEAD?.name;

webviews/common/context.tsx

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -388,6 +388,20 @@ export class PRContext {
388388
return this.updatePR({ busy: true, lastReviewType: message.lastReviewType });
389389
case 'pr.append-review':
390390
return this.appendReview(message);
391+
case 'pr.readyForReview-trigger':
392+
// Trigger the ready for review action by simulating a button click
393+
const readyButton = document.querySelector('[value="ready"]') as HTMLButtonElement;
394+
if (readyButton) {
395+
readyButton.click();
396+
}
397+
return;
398+
case 'pr.readyForReviewAndMerge-trigger':
399+
// Trigger the ready and merge action by simulating a button click
400+
const readyMergeButton = document.querySelector('[value="readyAndMerge"]') as HTMLButtonElement;
401+
if (readyMergeButton) {
402+
readyMergeButton.click();
403+
}
404+
return;
391405
}
392406
};
393407

0 commit comments

Comments
 (0)