mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-06 17:23:53 -05:00
* Merge from vscode 504f934659740e9d41501cad9f162b54d7745ad9 * delete unused folders * distro * Bump build node version * update chokidar * FIx hygiene errors * distro * Fix extension lint issues * Remove strict-vscode * Add copyright header exemptions * Bump vscode-extension-telemetry to fix webpacking issue with zone.js * distro * Fix failing tests (revert marked.js back to current one until we decide to update) * Skip searchmodel test * Fix mac build * temp debug script loading * Try disabling coverage * log error too * Revert "log error too" This reverts commit af0183e5d4ab458fdf44b88fbfab9908d090526f. * Revert "temp debug script loading" This reverts commit 3d687d541c76db2c5b55626c78ae448d3c25089c. * Add comments explaining coverage disabling * Fix ansi_up loading issue * Merge latest from ads * Use newer option * Fix compile * add debug logging warn * Always log stack * log more * undo debug * Update to use correct base path (+cleanup) * distro * fix compile errors * Remove strict-vscode * Fix sql editors not showing * Show db dropdown input & fix styling * Fix more info in gallery * Fix gallery asset requests * Delete unused workflow * Fix tapable resolutions for smoke test compile error * Fix smoke compile * Disable crash reporting * Disable interactive Co-authored-by: ADS Merger <karlb@microsoft.com>
72 lines
3.3 KiB
TypeScript
72 lines
3.3 KiB
TypeScript
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
|
|
import Severity from 'vs/base/common/severity';
|
|
import type * as vscode from 'vscode';
|
|
import { MainContext, MainThreadMessageServiceShape, MainThreadMessageOptions, IMainContext } from './extHost.protocol';
|
|
import { IExtensionDescription } from 'vs/platform/extensions/common/extensions';
|
|
import { ILogService } from 'vs/platform/log/common/log';
|
|
import { checkProposedApiEnabled } from 'vs/workbench/services/extensions/common/extensions';
|
|
|
|
function isMessageItem(item: any): item is vscode.MessageItem {
|
|
return item && item.title;
|
|
}
|
|
|
|
export class ExtHostMessageService {
|
|
|
|
private _proxy: MainThreadMessageServiceShape;
|
|
|
|
constructor(
|
|
mainContext: IMainContext,
|
|
@ILogService private readonly _logService: ILogService
|
|
) {
|
|
this._proxy = mainContext.getProxy(MainContext.MainThreadMessageService);
|
|
}
|
|
|
|
|
|
showMessage(extension: IExtensionDescription, severity: Severity, message: string, optionsOrFirstItem: vscode.MessageOptions | string | undefined, rest: string[]): Promise<string | undefined>;
|
|
showMessage(extension: IExtensionDescription, severity: Severity, message: string, optionsOrFirstItem: vscode.MessageOptions | vscode.MessageItem | undefined, rest: vscode.MessageItem[]): Promise<vscode.MessageItem | undefined>;
|
|
showMessage(extension: IExtensionDescription, severity: Severity, message: string, optionsOrFirstItem: vscode.MessageOptions | vscode.MessageItem | string | undefined, rest: Array<vscode.MessageItem | string>): Promise<string | vscode.MessageItem | undefined>;
|
|
showMessage(extension: IExtensionDescription, severity: Severity, message: string, optionsOrFirstItem: vscode.MessageOptions | string | vscode.MessageItem | undefined, rest: Array<string | vscode.MessageItem>): Promise<string | vscode.MessageItem | undefined> {
|
|
|
|
const options: MainThreadMessageOptions = { extension };
|
|
let items: (string | vscode.MessageItem)[];
|
|
|
|
if (typeof optionsOrFirstItem === 'string' || isMessageItem(optionsOrFirstItem)) {
|
|
items = [optionsOrFirstItem, ...rest];
|
|
} else {
|
|
options.modal = optionsOrFirstItem?.modal;
|
|
options.useCustom = optionsOrFirstItem?.useCustom;
|
|
options.detail = optionsOrFirstItem?.detail;
|
|
items = rest;
|
|
}
|
|
|
|
if (options.useCustom) {
|
|
checkProposedApiEnabled(extension);
|
|
}
|
|
|
|
const commands: { title: string; isCloseAffordance: boolean; handle: number; }[] = [];
|
|
|
|
for (let handle = 0; handle < items.length; handle++) {
|
|
const command = items[handle];
|
|
if (typeof command === 'string') {
|
|
commands.push({ title: command, handle, isCloseAffordance: false });
|
|
} else if (typeof command === 'object') {
|
|
let { title, isCloseAffordance } = command;
|
|
commands.push({ title, isCloseAffordance: !!isCloseAffordance, handle });
|
|
} else {
|
|
this._logService.warn('Invalid message item:', command);
|
|
}
|
|
}
|
|
|
|
return this._proxy.$showMessage(severity, message, options, commands).then(handle => {
|
|
if (typeof handle === 'number') {
|
|
return items[handle];
|
|
}
|
|
return undefined;
|
|
});
|
|
}
|
|
}
|