@@ -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