Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 8a1abd8

Browse files
committed
Fix all workspaces not populating
Also, makes it so the initial fetch happens immediately instead of waiting for an initial delay.
1 parent 9cce960 commit 8a1abd8

File tree

2 files changed

+16
-7
lines changed

2 files changed

+16
-7
lines changed

src/extension.ts

+9-5
Original file line numberDiff line numberDiff 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) => {

src/workspacesProvider.ts

+7-2
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@ type AgentWatcher = {
3232
* abort polling until fetchAndRefresh() is called again.
3333
*/
3434
export 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

0 commit comments

Comments
 (0)