diff --git a/extensions/typescript-language-features/src/extension.ts b/extensions/typescript-language-features/src/extension.ts index a470ce8bfec..a8d2a17aa59 100644 --- a/extensions/typescript-language-features/src/extension.ts +++ b/extensions/typescript-language-features/src/extension.ts @@ -90,8 +90,7 @@ function createLazyClientHost( context.subscriptions.push(clientHost); - const surveyor = new Surveyor(context.globalState); - context.subscriptions.push(clientHost.serviceClient.onSurveyReady(e => surveyor.surveyReady(e.surveyId))); + context.subscriptions.push(new Surveyor(context.globalState, clientHost.serviceClient)); clientHost.serviceClient.onReady(() => { context.subscriptions.push( diff --git a/extensions/typescript-language-features/src/utils/surveyor.ts b/extensions/typescript-language-features/src/utils/surveyor.ts index da05db553a4..ed898c74e9d 100644 --- a/extensions/typescript-language-features/src/utils/surveyor.ts +++ b/extensions/typescript-language-features/src/utils/surveyor.ts @@ -5,6 +5,8 @@ import * as vscode from 'vscode'; import * as nls from 'vscode-nls'; +import TypeScriptServiceClient from '../typescriptServiceClient'; +import { Disposable } from './dispose'; const localize = nls.loadMessageBundle(); @@ -121,18 +123,23 @@ class Survey { } } -export class Surveyor { +export class Surveyor extends Disposable { private readonly surveys: Map; public constructor( - memento: vscode.Memento + memento: vscode.Memento, + serviceClient: TypeScriptServiceClient, ) { + super(); + this.surveys = new Map(allSurveys.map(data => [data.id, new Survey(data, memento)] as [string, Survey])); + + this._register(serviceClient.onSurveyReady(e => this.surveyReady(e.surveyId))); } - public surveyReady(surveyId: string): void { + private surveyReady(surveyId: string): void { const survey = this.tryGetActiveSurvey(surveyId); if (survey && survey.trigger()) { survey.willShow();