UNPKG

@codingame/monaco-vscode-extensions-service-override

Version:

VSCode public API plugged on the monaco editor - extensions service-override

143 lines (139 loc) 5.81 kB
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6'; import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls'; import { toAction } from '@codingame/monaco-vscode-api/vscode/vs/base/common/actions'; import { MainContext } from '@codingame/monaco-vscode-api/vscode/vs/workbench/api/common/extHost.protocol'; import { extHostNamedCustomer } from '../../services/extensions/common/extHostCustomers.js'; import { IDialogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/dialogs/common/dialogs.service'; import { NotificationPriority } from '@codingame/monaco-vscode-api/vscode/vs/platform/notification/common/notification'; import { INotificationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/notification/common/notification.service'; import { Event } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event'; import { ICommandService } from '@codingame/monaco-vscode-api/vscode/vs/platform/commands/common/commands.service'; import { IExtensionService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensions.service'; var MainThreadMessageService_1; let MainThreadMessageService = class MainThreadMessageService { static { MainThreadMessageService_1 = this; } static { this.URGENT_NOTIFICATION_SOURCES = ["vscode.github-authentication", "vscode.microsoft-authentication"]; } constructor( extHostContext, _notificationService, _commandService, _dialogService, extensionService ) { this._notificationService = _notificationService; this._commandService = _commandService; this._dialogService = _dialogService; this.extensionsListener = extensionService.onDidChangeExtensions(e => { for (const extension of e.removed) { this._notificationService.removeFilter(extension.identifier.value); } }); } dispose() { this.extensionsListener.dispose(); } $showMessage(severity, message, options, commands) { if (options.modal) { return this._showModalMessage(severity, message, options.detail, commands, options.useCustom); } else { return this._showMessage(severity, message, commands, options); } } _showMessage(severity, message, commands, options) { return (new Promise(resolve => { const primaryActions = ( commands.map(command => toAction({ id: `_extension_message_handle_${command.handle}`, label: command.title, enabled: true, run: () => { resolve(command.handle); return Promise.resolve(); } }))); let source; let sourceIsUrgent = false; if (options.source) { source = { label: options.source.label, id: options.source.identifier.value }; sourceIsUrgent = MainThreadMessageService_1.URGENT_NOTIFICATION_SOURCES.includes(source.id); } if (!source) { source = ( localize(2633, "Extension")); } const secondaryActions = []; if (options.source) { secondaryActions.push(toAction({ id: options.source.identifier.value, label: ( localize(2634, "Manage Extension")), run: () => { return this._commandService.executeCommand("_extensions.manage", options.source.identifier.value); } })); } const messageHandle = this._notificationService.notify({ severity, message, actions: { primary: primaryActions, secondary: secondaryActions }, source, priority: sourceIsUrgent ? NotificationPriority.URGENT : NotificationPriority.DEFAULT, sticky: sourceIsUrgent }); Event.once(messageHandle.onDidClose)(() => { resolve(undefined); }); })); } async _showModalMessage(severity, message, detail, commands, useCustom) { const buttons = []; let cancelButton = undefined; for (const command of commands) { const button = { label: command.title, run: () => command.handle }; if (command.isCloseAffordance) { cancelButton = button; } else { buttons.push(button); } } if (!cancelButton) { if (buttons.length > 0) { cancelButton = { label: ( localize(2635, "Cancel")), run: () => undefined }; } else { cancelButton = { label: ( localize(2636, "&&OK")), run: () => undefined }; } } const { result } = await this._dialogService.prompt({ type: severity, message, detail, buttons, cancelButton, custom: useCustom }); return result; } }; MainThreadMessageService = MainThreadMessageService_1 = __decorate( [extHostNamedCustomer(MainContext.MainThreadMessageService), ( __param(1, INotificationService)), ( __param(2, ICommandService)), ( __param(3, IDialogService)), ( __param(4, IExtensionService))], MainThreadMessageService ); export { MainThreadMessageService };