mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-24 10:38:59 +01:00
More granular telemetry API (#141086)
* Initial implementation of proposed telemetry API * TelemetryDetails -> TelemetryConfiguration + proposed guards
This commit is contained in:
@@ -6,24 +6,42 @@
|
||||
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
|
||||
import { Event, Emitter } from 'vs/base/common/event';
|
||||
import { ExtHostTelemetryShape } from 'vs/workbench/api/common/extHost.protocol';
|
||||
import { TelemetryLevel } from 'vs/platform/telemetry/common/telemetry';
|
||||
import type { TelemetryConfiguration } from 'vscode';
|
||||
|
||||
export class ExtHostTelemetry implements ExtHostTelemetryShape {
|
||||
private readonly _onDidChangeTelemetryEnabled = new Emitter<boolean>();
|
||||
readonly onDidChangeTelemetryEnabled: Event<boolean> = this._onDidChangeTelemetryEnabled.event;
|
||||
|
||||
private _enabled: boolean = false;
|
||||
private readonly _onDidChangeTelemetryConfiguration = new Emitter<TelemetryConfiguration>();
|
||||
readonly onDidChangeTelemetryConfiguration: Event<TelemetryConfiguration> = this._onDidChangeTelemetryConfiguration.event;
|
||||
|
||||
getTelemetryEnabled(): boolean {
|
||||
return this._enabled;
|
||||
private _level: TelemetryLevel = TelemetryLevel.NONE;
|
||||
private _oldTelemetryEnablement: boolean | undefined;
|
||||
|
||||
getTelemetryConfiguration(): boolean {
|
||||
return this._level === TelemetryLevel.USAGE;
|
||||
}
|
||||
|
||||
$initializeTelemetryEnabled(enabled: boolean): void {
|
||||
this._enabled = enabled;
|
||||
getTelemetryDetails(): TelemetryConfiguration {
|
||||
return {
|
||||
isCrashEnabled: this._level >= TelemetryLevel.CRASH,
|
||||
isErrorsEnabled: this._level >= TelemetryLevel.ERROR,
|
||||
isUsageEnabled: this._level >= TelemetryLevel.USAGE
|
||||
};
|
||||
}
|
||||
|
||||
$onDidChangeTelemetryEnabled(enabled: boolean): void {
|
||||
this._enabled = enabled;
|
||||
this._onDidChangeTelemetryEnabled.fire(enabled);
|
||||
$initializeTelemetryLevel(level: TelemetryLevel): void {
|
||||
this._level = level;
|
||||
}
|
||||
|
||||
$onDidChangeTelemetryLevel(level: TelemetryLevel): void {
|
||||
this._oldTelemetryEnablement = this.getTelemetryConfiguration();
|
||||
this._level = level;
|
||||
if (this._oldTelemetryEnablement !== this.getTelemetryConfiguration()) {
|
||||
this._onDidChangeTelemetryEnabled.fire(this.getTelemetryConfiguration());
|
||||
}
|
||||
this._onDidChangeTelemetryConfiguration.fire(this.getTelemetryDetails());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user