Skip to content

Commit ea8e8ff

Browse files
authored
Remove setting for always creating a draft PR
Github requires there be commits Fixes microsoft#1705
1 parent 0bc0842 commit ea8e8ff

File tree

4 files changed

+22
-42
lines changed

4 files changed

+22
-42
lines changed

package.json

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -322,11 +322,6 @@
322322
"query": "author:${user} state:open repo:${owner}/${repository} sort:updated-desc"
323323
}
324324
]
325-
},
326-
"githubIssues.alwaysCreateDraftPR": {
327-
"type": "boolean",
328-
"default": false,
329-
"description": "When true, and when you are working on an issue in a branch, immediately creates a draft PR when you start working on an issue."
330325
}
331326
}
332327
},

src/issues/currentIssue.ts

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,9 @@
66
import { PullRequestManager, PullRequestDefaults } from '../github/pullRequestManager';
77
import { IssueModel } from '../github/issueModel';
88
import * as vscode from 'vscode';
9-
import { ISSUES_CONFIGURATION, variableSubstitution, BRANCH_NAME_CONFIGURATION, getIssueNumberLabel, BRANCH_CONFIGURATION, pushAndCreatePR } from './util';
9+
import { ISSUES_CONFIGURATION, variableSubstitution, BRANCH_NAME_CONFIGURATION, getIssueNumberLabel, BRANCH_CONFIGURATION } from './util';
1010
import { Repository } from '../typings/git';
1111
import { StateManager, IssueState } from './stateManager';
12-
import { ReviewManager } from '../view/reviewManager';
1312

1413
export class CurrentIssue {
1514
private statusBarItem: vscode.StatusBarItem | undefined;
@@ -18,7 +17,7 @@ export class CurrentIssue {
1817
private user: string | undefined;
1918
private repo: Repository | undefined;
2019
private repoDefaults: PullRequestDefaults | undefined;
21-
constructor(private issueModel: IssueModel, private manager: PullRequestManager, private reviewManager: ReviewManager, private stateManager: StateManager, private shouldPromptForBranch?: boolean) {
20+
constructor(private issueModel: IssueModel, private manager: PullRequestManager, private stateManager: StateManager, private shouldPromptForBranch?: boolean) {
2221
this.setRepo();
2322
}
2423

@@ -54,7 +53,6 @@ export class CurrentIssue {
5453
await this.createIssueBranch();
5554
await this.setCommitMessageAndGitEvent();
5655
this.setStatusBar();
57-
await this.createDraftPR();
5856
}
5957

6058
public dispose() {
@@ -155,20 +153,4 @@ export class CurrentIssue {
155153
this.statusBarItem.command = 'issue.statusBar';
156154
this.statusBarItem.show();
157155
}
158-
159-
private async createDraftPR() {
160-
const configuration = vscode.workspace.getConfiguration(ISSUES_CONFIGURATION).get('alwaysCreateDraftPR');
161-
if (configuration && this._branchName) {
162-
// It seems that there is no API to tell if a PR or an issue are linked to eachother. Instead of doing something like the following query, we'll just try to push the branch.
163-
// const existingDrafts = (await this.manager.getPullRequests(PRType.Query, undefined, `repo:${this.issueModel.remote.owner}/${this.issueModel.remote.repositoryName} is:open linked:issue author:${await this.getUser()} draft:false`)).items;
164-
const issueState = this.stateManager.getSavedIssueState(this.issueModel.number);
165-
if (!issueState.hasDraftPR) {
166-
const succeeded = await pushAndCreatePR(this.manager, this.reviewManager, true);
167-
if (succeeded) {
168-
issueState.hasDraftPR = true;
169-
this.stateManager.setSavedIssueState(this.issueModel, issueState);
170-
}
171-
}
172-
}
173-
}
174156
}

src/issues/issueFeatureRegistrar.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export class IssueFeatureRegistrar implements vscode.Disposable {
2929
private createIssueInfo: { document: vscode.TextDocument, newIssue: NewIssue | undefined, assignee: string | undefined, lineNumber: number | undefined, insertIndex: number | undefined } | undefined;
3030

3131
constructor(gitAPI: GitAPI, private manager: PullRequestManager, private reviewManager: ReviewManager, private context: vscode.ExtensionContext, private telemetry: ITelemetry) {
32-
this._stateManager = new StateManager(gitAPI, this.manager, this.reviewManager, this.context);
32+
this._stateManager = new StateManager(gitAPI, this.manager, this.context);
3333
}
3434

3535
async initialize() {
@@ -305,13 +305,13 @@ export class IssueFeatureRegistrar implements vscode.Disposable {
305305
}
306306

307307
if (issueModel) {
308-
await this._stateManager.setCurrentIssue(new CurrentIssue(issueModel, this.manager, this.reviewManager, this._stateManager));
308+
await this._stateManager.setCurrentIssue(new CurrentIssue(issueModel, this.manager, this._stateManager));
309309
}
310310
}
311311

312312
async startWorkingBranchPrompt(issueModel: any) {
313313
if (issueModel instanceof IssueModel) {
314-
await this._stateManager.setCurrentIssue(new CurrentIssue(issueModel, this.manager, this.reviewManager, this._stateManager, true));
314+
await this._stateManager.setCurrentIssue(new CurrentIssue(issueModel, this.manager, this._stateManager, true));
315315
}
316316
}
317317

src/issues/stateManager.ts

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import { MilestoneModel } from '../github/milestoneModel';
1212
import { GitAPI } from '../typings/git';
1313
import { ISSUES_CONFIGURATION, BRANCH_CONFIGURATION, QUERIES_CONFIGURATION, DEFAULT_QUERY_CONFIGURATION, variableSubstitution } from './util';
1414
import { CurrentIssue } from './currentIssue';
15-
import { ReviewManager } from '../view/reviewManager';
1615

1716
// TODO: make exclude from date words configurable
1817
const excludeFromDate: string[] = ['Recovery'];
@@ -61,7 +60,6 @@ export class StateManager {
6160
constructor(
6261
readonly gitAPI: GitAPI,
6362
private manager: PullRequestManager,
64-
private reviewManager: ReviewManager,
6563
private context: vscode.ExtensionContext
6664
) { }
6765

@@ -199,7 +197,7 @@ export class StateManager {
199197
if (restoreIssueNumber && this.currentIssue === undefined) {
200198
for (let i = 0; i < issues.length; i++) {
201199
if (issues[i].number === restoreIssueNumber) {
202-
await this.setCurrentIssue(new CurrentIssue(issues[i], this.manager, this.reviewManager, this));
200+
await this.setCurrentIssue(new CurrentIssue(issues[i], this.manager, this));
203201
return;
204202
}
205203
}
@@ -233,7 +231,7 @@ export class StateManager {
233231
if (branch === branchName) {
234232
const issueModel = await this.manager.resolveIssue(state.branches[branch].owner, state.branches[branch].repositoryName, state.branches[branch].number);
235233
if (issueModel) {
236-
await this.setCurrentIssue(new CurrentIssue(issueModel, this.manager, this.reviewManager, this));
234+
await this.setCurrentIssue(new CurrentIssue(issueModel, this.manager, this));
237235
}
238236
return;
239237
}
@@ -301,17 +299,22 @@ export class StateManager {
301299
return;
302300
}
303301
this.isSettingIssue = true;
304-
if (this._currentIssue && (issue?.issue.number === this._currentIssue.issue.number)) {
305-
return;
306-
}
307-
if (this._currentIssue) {
308-
await this._currentIssue.stopWorking();
302+
try {
303+
if (this._currentIssue && (issue?.issue.number === this._currentIssue.issue.number)) {
304+
return;
305+
}
306+
if (this._currentIssue) {
307+
await this._currentIssue.stopWorking();
308+
}
309+
this.context.workspaceState.update(CURRENT_ISSUE_KEY, issue?.issue.number);
310+
this._currentIssue = issue;
311+
await this._currentIssue?.startWorking();
312+
this._onDidChangeCurrentIssue.fire();
313+
} catch (e) {
314+
// Error has already been surfaced
315+
} finally {
316+
this.isSettingIssue = false;
309317
}
310-
this.context.workspaceState.update(CURRENT_ISSUE_KEY, issue?.issue.number);
311-
this._currentIssue = issue;
312-
await this._currentIssue?.startWorking();
313-
this._onDidChangeCurrentIssue.fire();
314-
this.isSettingIssue = false;
315318
}
316319

317320
private getSavedState(): IssuesState {

0 commit comments

Comments
 (0)