Path: blob/main/src/vs/workbench/contrib/issue/electron-browser/issue.contribution.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 { IDisposable } from '../../../../base/common/lifecycle.js';6import { localize, localize2 } from '../../../../nls.js';7import { Categories } from '../../../../platform/action/common/actionCommonCategories.js';8import { Action2, registerAction2 } from '../../../../platform/actions/common/actions.js';9import { CommandsRegistry } from '../../../../platform/commands/common/commands.js';10import { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';11import { InstantiationType, registerSingleton } from '../../../../platform/instantiation/common/extensions.js';12import { ServicesAccessor } from '../../../../platform/instantiation/common/instantiation.js';13import { IProcessService } from '../../../../platform/process/common/process.js';14import { IProductService } from '../../../../platform/product/common/productService.js';15import { IQuickAccessRegistry, Extensions as QuickAccessExtensions } from '../../../../platform/quickinput/common/quickAccess.js';16import { Registry } from '../../../../platform/registry/common/platform.js';17import { Extensions, IWorkbenchContributionsRegistry } from '../../../common/contributions.js';18import { LifecyclePhase } from '../../../services/lifecycle/common/lifecycle.js';19import { IssueQuickAccess } from '../browser/issueQuickAccess.js';20import '../browser/issueTroubleshoot.js';21import { BaseIssueContribution } from '../common/issue.contribution.js';22import { IIssueFormService, IWorkbenchIssueService, IssueType } from '../common/issue.js';23import { NativeIssueService } from './issueService.js';24import { NativeIssueFormService } from './nativeIssueFormService.js';2526//#region Issue Contribution27registerSingleton(IWorkbenchIssueService, NativeIssueService, InstantiationType.Delayed);28registerSingleton(IIssueFormService, NativeIssueFormService, InstantiationType.Delayed);2930class NativeIssueContribution extends BaseIssueContribution {3132constructor(33@IProductService productService: IProductService,34@IConfigurationService configurationService: IConfigurationService35) {36super(productService, configurationService);3738if (!configurationService.getValue<boolean>('telemetry.feedback.enabled')) {39return;40}4142if (productService.reportIssueUrl) {43this._register(registerAction2(ReportPerformanceIssueUsingReporterAction));44}4546let disposable: IDisposable | undefined;4748const registerQuickAccessProvider = () => {49disposable = Registry.as<IQuickAccessRegistry>(QuickAccessExtensions.Quickaccess).registerQuickAccessProvider({50ctor: IssueQuickAccess,51prefix: IssueQuickAccess.PREFIX,52contextKey: 'inReportIssuePicker',53placeholder: localize('tasksQuickAccessPlaceholder', "Type the name of an extension to report on."),54helpEntries: [{55description: localize('openIssueReporter', "Open Issue Reporter"),56commandId: 'workbench.action.openIssueReporter'57}]58});59};6061this._register(configurationService.onDidChangeConfiguration(e => {62if (!configurationService.getValue<boolean>('extensions.experimental.issueQuickAccess') && disposable) {63disposable.dispose();64disposable = undefined;65} else if (!disposable) {66registerQuickAccessProvider();67}68}));6970if (configurationService.getValue<boolean>('extensions.experimental.issueQuickAccess')) {71registerQuickAccessProvider();72}73}74}75Registry.as<IWorkbenchContributionsRegistry>(Extensions.Workbench).registerWorkbenchContribution(NativeIssueContribution, LifecyclePhase.Restored);7677class ReportPerformanceIssueUsingReporterAction extends Action2 {7879static readonly ID = 'workbench.action.reportPerformanceIssueUsingReporter';8081constructor() {82super({83id: ReportPerformanceIssueUsingReporterAction.ID,84title: localize2({ key: 'reportPerformanceIssue', comment: [`Here, 'issue' means problem or bug`] }, "Report Performance Issue..."),85category: Categories.Help,86f1: true87});88}8990override async run(accessor: ServicesAccessor): Promise<void> {91const issueService = accessor.get(IWorkbenchIssueService); // later can just get IIssueFormService9293return issueService.openReporter({ issueType: IssueType.PerformanceIssue });94}95}9697CommandsRegistry.registerCommand('_issues.getSystemStatus', (accessor) => {98return accessor.get(IProcessService).getSystemStatus();99});100101// #endregion102103104