File tree Expand file tree Collapse file tree 2 files changed +16
-7
lines changed
Expand file tree Collapse file tree 2 files changed +16
-7
lines changed Original file line number Diff line number Diff line change @@ -51,14 +51,18 @@ export async function activate(ctx: vscode.ExtensionContext): Promise<void> {
5151
5252 // createTreeView, unlike registerTreeDataProvider, gives us the tree view API
5353 // (so we can see when it is visible) but otherwise they have the same effect.
54- const wsTree = vscode . window . createTreeView ( "myWorkspaces" , { treeDataProvider : myWorkspacesProvider } )
55- vscode . window . registerTreeDataProvider ( "allWorkspaces" , allWorkspacesProvider )
56-
57- myWorkspacesProvider . setVisibility ( wsTree . visible )
58- wsTree . onDidChangeVisibility ( ( event ) => {
54+ const myWsTree = vscode . window . createTreeView ( "myWorkspaces" , { treeDataProvider : myWorkspacesProvider } )
55+ myWorkspacesProvider . setVisibility ( myWsTree . visible )
56+ myWsTree . onDidChangeVisibility ( ( event ) => {
5957 myWorkspacesProvider . setVisibility ( event . visible )
6058 } )
6159
60+ const allWsTree = vscode . window . createTreeView ( "allWorkspaces" , { treeDataProvider : allWorkspacesProvider } )
61+ allWorkspacesProvider . setVisibility ( allWsTree . visible )
62+ allWsTree . onDidChangeVisibility ( ( event ) => {
63+ allWorkspacesProvider . setVisibility ( event . visible )
64+ } )
65+
6266 // Handle vscode:// URIs.
6367 vscode . window . registerUriHandler ( {
6468 handleUri : async ( uri ) => {
Original file line number Diff line number Diff line change @@ -32,7 +32,8 @@ type AgentWatcher = {
3232 * abort polling until fetchAndRefresh() is called again.
3333 */
3434export class WorkspaceProvider implements vscode . TreeDataProvider < vscode . TreeItem > {
35- private workspaces : WorkspaceTreeItem [ ] = [ ]
35+ // Undefined if we have never fetched workspaces before.
36+ private workspaces : WorkspaceTreeItem [ ] | undefined
3637 private agentWatchers : Record < WorkspaceAgent [ "id" ] , AgentWatcher > = { }
3738 private timeout : NodeJS . Timeout | undefined
3839 private fetching = false
@@ -145,11 +146,15 @@ export class WorkspaceProvider implements vscode.TreeDataProvider<vscode.TreeIte
145146
146147 /**
147148 * Either start or stop the refresh timer based on visibility.
149+ *
150+ * If we have never fetched workspaces and are visible, fetch immediately.
148151 */
149152 setVisibility ( visible : boolean ) {
150153 this . visible = visible
151154 if ( ! visible ) {
152155 this . cancelPendingRefresh ( )
156+ } else if ( ! this . workspaces ) {
157+ this . fetchAndRefresh ( )
153158 } else {
154159 this . maybeScheduleRefresh ( )
155160 }
@@ -207,7 +212,7 @@ export class WorkspaceProvider implements vscode.TreeDataProvider<vscode.TreeIte
207212
208213 return Promise . resolve ( [ ] )
209214 }
210- return Promise . resolve ( this . workspaces )
215+ return Promise . resolve ( this . workspaces || [ ] )
211216 }
212217}
213218
You can’t perform that action at this time.
0 commit comments