Path: blob/main/src/vs/workbench/contrib/editTelemetry/browser/editTelemetryContribution.ts
3296 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import { Disposable } from '../../../../base/common/lifecycle.js';6import { autorun, derived } from '../../../../base/common/observable.js';7import { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';8import { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';9import { observableConfigValue } from '../../../../platform/observable/common/platformObservableUtils.js';10import { ITelemetryService, TelemetryLevel, telemetryLevelEnabled } from '../../../../platform/telemetry/common/telemetry.js';11import { AnnotatedDocuments } from './helpers/annotatedDocuments.js';12import { EditTrackingFeature } from './telemetry/editSourceTrackingFeature.js';13import { VSCodeWorkspace } from './helpers/vscodeObservableWorkspace.js';14import { AiStatsFeature } from './editStats/aiStatsFeature.js';15import { EDIT_TELEMETRY_SETTING_ID, AI_STATS_SETTING_ID } from './settingIds.js';1617export class EditTelemetryContribution extends Disposable {18constructor(19@IInstantiationService private readonly _instantiationService: IInstantiationService,20@IConfigurationService private readonly _configurationService: IConfigurationService,21@ITelemetryService private readonly _telemetryService: ITelemetryService,22) {23super();2425const workspace = derived(reader => reader.store.add(this._instantiationService.createInstance(VSCodeWorkspace)));26const annotatedDocuments = derived(reader => reader.store.add(this._instantiationService.createInstance(AnnotatedDocuments, workspace.read(reader))));2728const editSourceTrackingEnabled = observableConfigValue(EDIT_TELEMETRY_SETTING_ID, true, this._configurationService);29this._register(autorun(r => {30const enabled = editSourceTrackingEnabled.read(r);31if (!enabled || !telemetryLevelEnabled(this._telemetryService, TelemetryLevel.USAGE)) {32return;33}34r.store.add(this._instantiationService.createInstance(EditTrackingFeature, workspace.read(r), annotatedDocuments.read(r)));35}));3637const aiStatsEnabled = observableConfigValue(AI_STATS_SETTING_ID, true, this._configurationService);38this._register(autorun(r => {39const enabled = aiStatsEnabled.read(r);40if (!enabled) {41return;42}4344r.store.add(this._instantiationService.createInstance(AiStatsFeature, annotatedDocuments.read(r)));45}));46}47}484950