diff --git a/extensions/typescript-language-features/src/features/organizeImports.ts b/extensions/typescript-language-features/src/features/organizeImports.ts index 5c164fb2179..ecf080b313f 100644 --- a/extensions/typescript-language-features/src/features/organizeImports.ts +++ b/extensions/typescript-language-features/src/features/organizeImports.ts @@ -12,6 +12,7 @@ import { Command, CommandManager } from '../utils/commandManager'; import { VersionDependentRegistration } from '../utils/dependentRegistration'; import * as typeconverts from '../utils/typeConverters'; import FileConfigurationManager from './fileConfigurationManager'; +import TelemetryReporter from '../utils/telemetry'; const localize = nls.loadMessageBundle(); @@ -22,10 +23,20 @@ class OrganizeImportsCommand implements Command { public readonly id = OrganizeImportsCommand.Id; constructor( - private readonly client: ITypeScriptServiceClient + private readonly client: ITypeScriptServiceClient, + private readonly telemetryReporter: TelemetryReporter, ) { } public async execute(file: string): Promise { + /* __GDPR__ + "organizeImports.execute" : { + "${include}": [ + "${TypeScriptCommonProperties}" + ] + } + */ + this.telemetryReporter.logTelemetry('organizeImports.execute', {}); + const args: Proto.OrganizeImportsRequestArgs = { scope: { type: 'file', @@ -49,8 +60,10 @@ export class OrganizeImportsCodeActionProvider implements vscode.CodeActionProvi private readonly client: ITypeScriptServiceClient, commandManager: CommandManager, private readonly fileConfigManager: FileConfigurationManager, + telemetryReporter: TelemetryReporter, + ) { - commandManager.register(new OrganizeImportsCommand(client)); + commandManager.register(new OrganizeImportsCommand(client, telemetryReporter)); } public readonly metadata: vscode.CodeActionProviderMetadata = { @@ -82,10 +95,11 @@ export function register( selector: vscode.DocumentSelector, client: ITypeScriptServiceClient, commandManager: CommandManager, - fileConfigurationManager: FileConfigurationManager + fileConfigurationManager: FileConfigurationManager, + telemetryReporter: TelemetryReporter, ) { return new VersionDependentRegistration(client, API.v280, () => { - const organizeImportsProvider = new OrganizeImportsCodeActionProvider(client, commandManager, fileConfigurationManager); + const organizeImportsProvider = new OrganizeImportsCodeActionProvider(client, commandManager, fileConfigurationManager, telemetryReporter); return vscode.languages.registerCodeActionsProvider(selector, organizeImportsProvider, organizeImportsProvider.metadata); diff --git a/extensions/typescript-language-features/src/languageProvider.ts b/extensions/typescript-language-features/src/languageProvider.ts index 6af364ce8f8..3647f8dbcf5 100644 --- a/extensions/typescript-language-features/src/languageProvider.ts +++ b/extensions/typescript-language-features/src/languageProvider.ts @@ -84,7 +84,7 @@ export default class LanguageProvider { this.disposables.push((await import('./features/implementations')).register(selector, this.client)); this.disposables.push((await import('./features/implementationsCodeLens')).register(selector, this.description.id, this.client, cachedResponse)); this.disposables.push((await import('./features/jsDocCompletions')).register(selector, this.client, this.commandManager)); - this.disposables.push((await import('./features/organizeImports')).register(selector, this.client, this.commandManager, this.fileConfigurationManager)); + this.disposables.push((await import('./features/organizeImports')).register(selector, this.client, this.commandManager, this.fileConfigurationManager, this.telemetryReporter)); this.disposables.push((await import('./features/quickFix')).register(selector, this.client, this.fileConfigurationManager, this.commandManager, this.diagnosticsManager, this.telemetryReporter)); this.disposables.push((await import('./features/refactor')).register(selector, this.client, this.fileConfigurationManager, this.commandManager, this.telemetryReporter)); this.disposables.push((await import('./features/references')).register(selector, this.client));