Skip to content

Commit 33028c3

Browse files
authored
disable feedback setting (microsoft#243276)
* disable feedback setting * reload when setting changed * remove unused setting * add policy and case when disabled and hit the button
1 parent 8dbf750 commit 33028c3

File tree

5 files changed

+63
-19
lines changed

5 files changed

+63
-19
lines changed

src/vs/platform/telemetry/common/telemetryService.ts

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -219,9 +219,28 @@ Registry.as<IConfigurationRegistry>(Extensions.Configuration).registerConfigurat
219219
'default': TelemetryConfiguration.ON,
220220
'restricted': true,
221221
'scope': ConfigurationScope.APPLICATION,
222-
'tags': ['usesOnlineServices', 'telemetry']
222+
'tags': ['usesOnlineServices', 'telemetry'],
223+
'policy': {
224+
name: 'TelemetryLevel',
225+
minimumVersion: '1.99',
226+
}
223227
}
224-
}
228+
},
229+
});
230+
231+
Registry.as<IConfigurationRegistry>(Extensions.Configuration).registerConfiguration({
232+
'id': TELEMETRY_SECTION_ID,
233+
properties: {
234+
'telemetry.disableFeedback': {
235+
type: 'boolean',
236+
default: false,
237+
description: 'Disable feedback options.',
238+
policy: {
239+
name: 'DisableFeedback',
240+
minimumVersion: '1.99',
241+
}
242+
},
243+
},
225244
});
226245

227246
// Deprecated telemetry setting

src/vs/workbench/contrib/issue/common/issue.contribution.ts

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,17 @@
33
* Licensed under the MIT License. See License.txt in the project root for license information.
44
*--------------------------------------------------------------------------------------------*/
55

6+
import { Disposable } from '../../../../base/common/lifecycle.js';
67
import { localize, localize2 } from '../../../../nls.js';
78
import { ICommandAction } from '../../../../platform/action/common/action.js';
89
import { Categories } from '../../../../platform/action/common/actionCommonCategories.js';
910
import { MenuId, MenuRegistry } from '../../../../platform/actions/common/actions.js';
1011
import { CommandsRegistry, ICommandMetadata } from '../../../../platform/commands/common/commands.js';
12+
import { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';
13+
import { INotificationService } from '../../../../platform/notification/common/notification.js';
1114
import { IProductService } from '../../../../platform/product/common/productService.js';
1215
import { IWorkbenchContribution } from '../../../common/contributions.js';
13-
import { IWorkbenchIssueService, IssueReporterData } from './issue.js';
14-
import { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';
15-
import { Disposable } from '../../../../base/common/lifecycle.js';
16+
import { IssueReporterData, IWorkbenchIssueService } from './issue.js';
1617

1718
const OpenIssueReporterActionId = 'workbench.action.openIssueReporter';
1819
const OpenIssueReporterApiId = 'vscode.openIssueReporter';
@@ -65,6 +66,18 @@ export class BaseIssueContribution extends Disposable implements IWorkbenchContr
6566
) {
6667
super();
6768

69+
if (configurationService.getValue<boolean>('telemetry.disableFeedback')) {
70+
this._register(CommandsRegistry.registerCommand({
71+
id: 'workbench.action.openIssueReporter',
72+
handler: function (accessor) {
73+
const data = accessor.get(INotificationService);
74+
data.info('Feedback is disabled.');
75+
76+
},
77+
}));
78+
return;
79+
}
80+
6881
if (!productService.reportIssueUrl) {
6982
return;
7083
}

src/vs/workbench/contrib/issue/electron-sandbox/issue.contribution.ts

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,25 +3,25 @@
33
* Licensed under the MIT License. See License.txt in the project root for license information.
44
*--------------------------------------------------------------------------------------------*/
55

6+
import { IDisposable } from '../../../../base/common/lifecycle.js';
67
import { localize, localize2 } from '../../../../nls.js';
7-
import { registerAction2, Action2 } from '../../../../platform/actions/common/actions.js';
8-
import { IWorkbenchIssueService, IssueType, IIssueFormService } from '../common/issue.js';
9-
import { BaseIssueContribution } from '../common/issue.contribution.js';
8+
import { Categories } from '../../../../platform/action/common/actionCommonCategories.js';
9+
import { Action2, registerAction2 } from '../../../../platform/actions/common/actions.js';
10+
import { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';
11+
import { InstantiationType, registerSingleton } from '../../../../platform/instantiation/common/extensions.js';
12+
import { ServicesAccessor } from '../../../../platform/instantiation/common/instantiation.js';
1013
import { IProductService } from '../../../../platform/product/common/productService.js';
14+
import { IQuickAccessRegistry, Extensions as QuickAccessExtensions } from '../../../../platform/quickinput/common/quickAccess.js';
1115
import { Registry } from '../../../../platform/registry/common/platform.js';
1216
import { Extensions, IWorkbenchContributionsRegistry } from '../../../common/contributions.js';
1317
import { LifecyclePhase } from '../../../services/lifecycle/common/lifecycle.js';
14-
import { Categories } from '../../../../platform/action/common/actionCommonCategories.js';
15-
import { ServicesAccessor } from '../../../../platform/instantiation/common/instantiation.js';
16-
import { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';
17-
import { IDisposable } from '../../../../base/common/lifecycle.js';
18-
import { IQuickAccessRegistry, Extensions as QuickAccessExtensions } from '../../../../platform/quickinput/common/quickAccess.js';
1918
import { IssueQuickAccess } from '../browser/issueQuickAccess.js';
20-
import { registerSingleton, InstantiationType } from '../../../../platform/instantiation/common/extensions.js';
21-
import { NativeIssueService } from './issueService.js';
22-
import './processMainService.js';
2319
import '../browser/issueTroubleshoot.js';
20+
import { BaseIssueContribution } from '../common/issue.contribution.js';
21+
import { IIssueFormService, IWorkbenchIssueService, IssueType } from '../common/issue.js';
22+
import { NativeIssueService } from './issueService.js';
2423
import { NativeIssueFormService } from './nativeIssueFormService.js';
24+
import './processMainService.js';
2525

2626
//#region Issue Contribution
2727
registerSingleton(IWorkbenchIssueService, NativeIssueService, InstantiationType.Delayed);
@@ -35,6 +35,10 @@ class NativeIssueContribution extends BaseIssueContribution {
3535
) {
3636
super(productService, configurationService);
3737

38+
if (configurationService.getValue<boolean>('telemetry.disableFeedback')) {
39+
return;
40+
}
41+
3842
if (productService.reportIssueUrl) {
3943
this._register(registerAction2(ReportPerformanceIssueUsingReporterAction));
4044
}

src/vs/workbench/contrib/relauncher/browser/relauncher.contribution.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ interface IConfiguration extends IWindowsConfiguration {
3030
security?: { workspace?: { trust?: { enabled?: boolean } }; restrictUNCAccess?: boolean };
3131
window: IWindowSettings;
3232
workbench?: { enableExperiments?: boolean };
33+
telemetry?: { disableFeedback?: boolean };
3334
_extensionsGallery?: { enablePPE?: boolean };
3435
accessibility?: { verbosity?: { debug?: boolean } };
3536
}
@@ -48,7 +49,8 @@ export class SettingsChangeRelauncher extends Disposable implements IWorkbenchCo
4849
'workbench.enableExperiments',
4950
'_extensionsGallery.enablePPE',
5051
'security.restrictUNCAccess',
51-
'accessibility.verbosity.debug'
52+
'accessibility.verbosity.debug',
53+
'telemetry.disableFeedback'
5254
];
5355

5456
private readonly titleBarStyle = new ChangeObserver<TitlebarStyle>('string');
@@ -63,6 +65,7 @@ export class SettingsChangeRelauncher extends Disposable implements IWorkbenchCo
6365
private readonly enablePPEExtensionsGallery = new ChangeObserver('boolean');
6466
private readonly restrictUNCAccess = new ChangeObserver('boolean');
6567
private readonly accessibilityVerbosityDebug = new ChangeObserver('boolean');
68+
private readonly telemetryDisableFeedback = new ChangeObserver('boolean');
6669

6770
constructor(
6871
@IHostService private readonly hostService: IHostService,
@@ -149,6 +152,9 @@ export class SettingsChangeRelauncher extends Disposable implements IWorkbenchCo
149152
// Profiles
150153
processChanged(this.productService.quality !== 'stable' && this.enablePPEExtensionsGallery.handleChange(config._extensionsGallery?.enablePPE));
151154

155+
// Disable Feedback
156+
processChanged(this.telemetryDisableFeedback.handleChange(config.telemetry?.disableFeedback));
157+
152158
if (askToRelaunch && changed && this.hostService.hasFocus) {
153159
this.doConfirm(
154160
isNative ?

src/vs/workbench/contrib/surveys/browser/nps.contribution.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import { Severity, INotificationService, NotificationPriority } from '../../../.
1515
import { IOpenerService } from '../../../../platform/opener/common/opener.js';
1616
import { URI } from '../../../../base/common/uri.js';
1717
import { platform } from '../../../../base/common/process.js';
18+
import { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';
1819

1920
const PROBABILITY = 0.15;
2021
const SESSION_COUNT_KEY = 'nps/sessionCount';
@@ -29,9 +30,10 @@ class NPSContribution implements IWorkbenchContribution {
2930
@INotificationService notificationService: INotificationService,
3031
@ITelemetryService telemetryService: ITelemetryService,
3132
@IOpenerService openerService: IOpenerService,
32-
@IProductService productService: IProductService
33+
@IProductService productService: IProductService,
34+
@IConfigurationService configurationService: IConfigurationService
3335
) {
34-
if (!productService.npsSurveyUrl) {
36+
if (!productService.npsSurveyUrl || configurationService.getValue<boolean>('telemetry.disableFeedback')) {
3537
return;
3638
}
3739

0 commit comments

Comments
 (0)