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