Skip to content

Commit 137ef16

Browse files
authored
Fix console error (#7921)
1 parent 0282f2c commit 137ef16

1 file changed

Lines changed: 19 additions & 6 deletions

File tree

src/issues/stateManager.ts

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -99,13 +99,16 @@ export class StateManager {
9999
private context: vscode.ExtensionContext,
100100
) { }
101101

102-
private getOrCreateSingleRepoState(uri: vscode.Uri, folderManager?: FolderRepositoryManager): SingleRepoState {
102+
private getOrCreateSingleRepoState(uri: vscode.Uri, folderManager?: FolderRepositoryManager): SingleRepoState | undefined {
103103
let state = this._singleRepoStates.get(uri.path);
104104
if (state) {
105105
return state;
106106
}
107107
if (!folderManager) {
108-
folderManager = this.manager.getManagerForFile(uri)!;
108+
folderManager = this.manager.getManagerForFile(uri);
109+
}
110+
if (!folderManager) {
111+
return undefined;
109112
}
110113
state = {
111114
issueCollection: new Map(),
@@ -147,6 +150,9 @@ export class StateManager {
147150
private registerRepositoryChangeEvent() {
148151
async function updateRepository(that: StateManager, repository: Repository) {
149152
const state = that.getOrCreateSingleRepoState(repository.rootUri);
153+
if (!state) {
154+
return;
155+
}
150156
// setIssueData can cause the last head and branch state to change. Capture them before that can happen.
151157
const oldHead = state.lastHead;
152158
const oldBranch = state.lastBranch;
@@ -233,16 +239,20 @@ export class StateManager {
233239
this.context.subscriptions.push(folderManager.onDidChangeRepositories(async (e) => {
234240
if (e.added) {
235241
const state = this.getOrCreateSingleRepoState(folderManager.repository.rootUri);
236-
if ((state.issueCollection.size === 0) || (await Promise.all(state.issueCollection.values())).some(collection => collection.issues === undefined)) {
242+
243+
if (state && ((state.issueCollection.size === 0) || (await Promise.all(state.issueCollection.values())).some(collection => collection.issues === undefined))) {
237244
this.refresh(folderManager);
238245
}
239246
}
240247
}));
241248

242-
const singleRepoState: SingleRepoState = this.getOrCreateSingleRepoState(
249+
const singleRepoState: SingleRepoState | undefined = this.getOrCreateSingleRepoState(
243250
folderManager.repository.rootUri,
244251
folderManager,
245252
);
253+
if (!singleRepoState) {
254+
continue;
255+
}
246256
singleRepoState.lastHead = folderManager.repository.state.HEAD
247257
? folderManager.repository.state.HEAD.commit
248258
: undefined;
@@ -281,10 +291,10 @@ export class StateManager {
281291
}
282292

283293
async getUserMap(uri: vscode.Uri): Promise<Map<string, IAccount>> {
284-
if (!this.initializePromise) {
294+
const state = this.getOrCreateSingleRepoState(uri);
295+
if (!this.initializePromise || !state) {
285296
return Promise.resolve(new Map());
286297
}
287-
const state = this.getOrCreateSingleRepoState(uri);
288298
if (!state.userMap || (await state.userMap).size === 0) {
289299
state.userMap = this.getUsers(uri);
290300
}
@@ -301,6 +311,9 @@ export class StateManager {
301311

302312
private async setIssueData(folderManager: FolderRepositoryManager) {
303313
const singleRepoState = this.getOrCreateSingleRepoState(folderManager.repository.rootUri, folderManager);
314+
if (!singleRepoState) {
315+
return;
316+
}
304317
singleRepoState.issueCollection.clear();
305318
const enterpriseRemotes = parseRepositoryRemotes(folderManager.repository).filter(
306319
remote => remote.isEnterprise

0 commit comments

Comments
 (0)