提交 8dd07034 编写于 作者: M Matt Bierner

Split reporter out into own file

上级 f084c2a1
......@@ -22,9 +22,8 @@ import Logger from './utils/logger';
import * as VersionStatus from './utils/versionStatus';
import * as is from './utils/is';
import TelemetryReporter from 'vscode-extension-telemetry';
import * as nls from 'vscode-nls';
import TelemetryReporter from "./utils/telemetry";
const localize = nls.loadMessageBundle();
interface CallbackItem {
......@@ -43,12 +42,6 @@ interface RequestItem {
callbacks: CallbackItem | null;
}
interface IPackageInfo {
name: string;
version: string;
aiKey: string;
}
enum Trace {
Off,
Messages,
......@@ -162,7 +155,6 @@ export default class TypeScriptServiceClient implements ITypescriptServiceClient
private _onDidEndInstallTypings = new EventEmitter<Proto.EndInstallTypesEventBody>();
private _onTypesInstallerInitializationFailed = new EventEmitter<Proto.TypesInstallerInitializationFailedEventBody>();
private _packageInfo: IPackageInfo | null;
private _apiVersion: API;
private telemetryReporter: TelemetryReporter;
private checkJs: boolean;
......@@ -230,10 +222,8 @@ export default class TypeScriptServiceClient implements ITypescriptServiceClient
this.restartTsServer();
}
}));
if (this.packageInfo && this.packageInfo.aiKey) {
this.telemetryReporter = new TelemetryReporter(this.packageInfo.name, this.packageInfo.version, this.packageInfo.aiKey);
disposables.push(this.telemetryReporter);
}
this.telemetryReporter = new TelemetryReporter();
disposables.push(this.telemetryReporter);
this.startService();
}
......@@ -341,30 +331,8 @@ export default class TypeScriptServiceClient implements ITypescriptServiceClient
this.logger.logLevel('Trace', message, data);
}
private get packageInfo(): IPackageInfo | null {
if (this._packageInfo !== undefined) {
return this._packageInfo;
}
let packagePath = path.join(__dirname, './../package.json');
let extensionPackage = require(packagePath);
if (extensionPackage) {
this._packageInfo = {
name: extensionPackage.name,
version: extensionPackage.version,
aiKey: extensionPackage.aiKey
};
} else {
this._packageInfo = null;
}
return this._packageInfo;
}
public logTelemetry(eventName: string, properties?: { [prop: string]: string }) {
if (this.telemetryReporter) {
this.telemetryReporter.sendTelemetryEvent(eventName, properties);
}
this.telemetryReporter.logTelemetry(eventName, properties);
}
private service(): Thenable<cp.ChildProcess> {
......
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
'use strict';
import * as path from 'path';
import VsCodeTelemetryReporter from 'vscode-extension-telemetry';
import { Disposable } from "vscode";
interface IPackageInfo {
name: string;
version: string;
aiKey: string;
}
export default class TelemetryReporter extends Disposable {
private _packageInfo: IPackageInfo | null;
private _reporter: VsCodeTelemetryReporter | null;
constructor() {
super(() => this.dispose());
}
dispose() {
if (this._reporter) {
this._reporter.dispose();
this._reporter = null;
}
}
public logTelemetry(eventName: string, properties?: { [prop: string]: string }) {
if (this._reporter) {
this._reporter.sendTelemetryEvent(eventName, properties);
}
}
private get reporter(): VsCodeTelemetryReporter | null {
if (typeof this._reporter !== 'undefined') {
return this._reporter;
}
if (this.packageInfo && this.packageInfo.aiKey) {
this._reporter = new VsCodeTelemetryReporter(
this.packageInfo.name,
this.packageInfo.version,
this.packageInfo.aiKey);
} else {
this._reporter = null;
}
return this._reporter;
}
private get packageInfo(): IPackageInfo | null {
if (this._packageInfo !== undefined) {
return this._packageInfo;
}
let packagePath = path.join(__dirname, './../package.json');
let extensionPackage = require(packagePath);
if (extensionPackage) {
this._packageInfo = {
name: extensionPackage.name,
version: extensionPackage.version,
aiKey: extensionPackage.aiKey
};
} else {
this._packageInfo = null;
}
return this._packageInfo;
}
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册