Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit176ef81

Browse files
committed
Reset metadata watchers when refreshing workspaces
1 parentdd9d42f commit176ef81

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

‎src/workspacesProvider.ts‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ export enum WorkspaceQuery {
1414
exportclassWorkspaceProviderimplementsvscode.TreeDataProvider<vscode.TreeItem>{
1515
privateworkspaces:WorkspaceTreeItem[]=[]
1616
privateagentMetadata:Record<WorkspaceAgent["id"],AgentMetadataEvent[]>={}
17+
privatewatcherDisposers:(()=>void)[]=[]
1718

1819
constructor(privatereadonlygetWorkspacesQuery:WorkspaceQuery,privatereadonlystorage:Storage){
1920
this.fetchAndRefresh()
@@ -22,6 +23,8 @@ export class WorkspaceProvider implements vscode.TreeDataProvider<vscode.TreeIte
2223
// fetchAndRefrehsh fetches new workspaces then re-renders the entire tree.
2324
asyncfetchAndRefresh(){
2425
constworkspacesTreeItem:WorkspaceTreeItem[]=[]
26+
this.watcherDisposers.forEach((dispose)=>dispose())
27+
this.watcherDisposers=[]
2528
// If the URL is set then we are logged in.
2629
if(this.storage.getURL()){
2730
constresp=awaitgetWorkspaces({q:this.getWorkspacesQuery})
@@ -71,6 +74,9 @@ export class WorkspaceProvider implements vscode.TreeDataProvider<vscode.TreeIte
7174
returnPromise.resolve(this.workspaces)
7275
}
7376

77+
// monitorMetadata opens a web socket to monitor metadata on the specified
78+
// agent and registers a disposer on this.watcherDisposers that can be used to
79+
// stop the watch.
7480
asyncmonitorMetadata(agentId:WorkspaceAgent["id"]):Promise<void>{
7581
constagentMetadataURL=newURL(`${this.storage.getURL()}/api/v2/workspaceagents/${agentId}/watch-metadata`)
7682
constagentMetadataEventSource=newEventSource(agentMetadataURL.toString(),{
@@ -97,6 +103,9 @@ export class WorkspaceProvider implements vscode.TreeDataProvider<vscode.TreeIte
97103
agentMetadataEventSource.close()
98104
}
99105
})
106+
this.watcherDisposers.push(()=>{
107+
agentMetadataEventSource.close()
108+
})
100109
}
101110
}
102111

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp