@@ -333,7 +333,7 @@ export class ServerManagerView {
333333 }
334334
335335 // Open last active tab
336- const firstTab = this . tabs [ 0 ] ;
336+ const firstTab = this . getTabByOrder ( this . tabs , 0 ) ! ;
337337 let lastActiveTabId = ConfigUtil . getConfigItem (
338338 "lastActiveTabId" ,
339339 firstTab . properties . tabId ,
@@ -343,22 +343,22 @@ export class ServerManagerView {
343343 // It will be undefined if user disconnected the server for lastActiveTab.
344344 if (
345345 lastActiveTab === undefined ||
346- lastActiveTab . properties . index >= servers . length
346+ lastActiveTab . properties . order >= servers . length
347347 ) {
348348 lastActiveTabId = firstTab . properties . tabId ;
349349 }
350350
351351 // `webview.load()` for lastActiveTabId before the others
352352 await this . activateTab ( lastActiveTabId ) ;
353353 await Promise . all (
354- servers . map ( async ( server , i ) => {
354+ servers . map ( async ( server ) => {
355355 // After the lastActiveTabId is activated, we load the others in the background
356356 // without activating them, to prevent flashing of server icons
357357 if ( server . id === lastActiveTabId ) {
358358 return ;
359359 }
360360
361- const tab = this . tabs [ i ] ;
361+ const tab = this . getTabByServerId ( server . id ) ;
362362 if ( tab instanceof ServerTab ) ( await tab . webview ) . load ( ) ;
363363 } ) ,
364364 ) ;
@@ -372,15 +372,15 @@ export class ServerManagerView {
372372 }
373373 }
374374
375- initServer ( server : ServerConfig , index : number ) : ServerTab {
375+ initServer ( server : ServerConfig , order : number ) : ServerTab {
376376 const tabId = this . generateTabId ( ) ;
377377 const tab : ServerTab = new ServerTab ( {
378378 role : "server" ,
379379 icon : DomainUtil . iconAsUrl ( server . icon ) ,
380380 label : server . alias ,
381381 $root : this . $tabsContainer ,
382382 onClick : this . activateLastTab . bind ( this , tabId ) ,
383- index ,
383+ order ,
384384 tabId,
385385 serverId : server . id ,
386386 onHover : this . onHover . bind ( this , tabId ) ,
@@ -561,7 +561,7 @@ export class ServerManagerView {
561561 return ;
562562 }
563563
564- const index = this . tabs . length ;
564+ const order = this . tabs . length ;
565565 const tabId = this . generateTabId ( ) ;
566566 this . functionalTabs . set ( tabProperties . page , tabId ) ;
567567 const $view = await tabProperties . makeView ( ) ;
@@ -574,7 +574,7 @@ export class ServerManagerView {
574574 label : tabProperties . label ,
575575 page : tabProperties . page ,
576576 $root : this . $tabsContainer ,
577- index ,
577+ order ,
578578 tabId,
579579 onClick : this . activateTab . bind ( this , tabId ) ,
580580 onDestroy : async ( ) => {
@@ -657,12 +657,19 @@ export class ServerManagerView {
657657 role : tab . properties . role ,
658658 page : tab . properties . page ,
659659 label : tab . properties . label ,
660- index : tab . properties . index ,
660+ order : tab . properties . order ,
661661 id : tab . properties . tabId ,
662662 serverId : tab instanceof ServerTab ? tab . serverId : undefined ,
663663 } ) ) ;
664664 }
665665
666+ getTabByOrder (
667+ tabs : ServerOrFunctionalTab [ ] ,
668+ order : number ,
669+ ) : ServerOrFunctionalTab | undefined {
670+ return tabs . find ( ( tab ) => tab . properties . order === order ) ;
671+ }
672+
666673 async activateTab ( id : string , hideOldTab = true ) : Promise < void > {
667674 const tab = this . getTabById ( id ) ;
668675 if ( ! tab ) {
@@ -737,7 +744,10 @@ export class ServerManagerView {
737744
738745 // Issue #188: If the functional tab was not focused, do not activate another tab.
739746 if ( this . activeTabId === tabId ) {
740- await this . activateTab ( this . tabs [ 0 ] . properties . tabId , false ) ;
747+ await this . activateTab (
748+ this . getTabByOrder ( this . tabs , 0 ) ! . properties . tabId ,
749+ false ,
750+ ) ;
741751 }
742752 }
743753
0 commit comments