mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-24 02:28:34 +01:00
resolve promise when message is being dismissed via ESC, fixes #5797
This commit is contained in:
@@ -51,36 +51,37 @@ export class MainThreadMessageService {
|
||||
this._messageService = messageService;
|
||||
}
|
||||
|
||||
$showMessage(severity: Severity, message: string, commands: { title: string; isCloseAffordance: boolean; handle: number;}[]): Thenable<number> {
|
||||
$showMessage(severity: Severity, message: string, commands: { title: string; isCloseAffordance: boolean; handle: number; }[]): Thenable<number> {
|
||||
|
||||
let hide: (handle?: number) => void;
|
||||
let actions: Action[] = [];
|
||||
let hasCloseAffordance = false;
|
||||
return new Promise<number>(resolve => {
|
||||
|
||||
commands.forEach(command => {
|
||||
if (command.isCloseAffordance === true) {
|
||||
hasCloseAffordance = true;
|
||||
}
|
||||
actions.push(new Action('_extension_message_handle_' + command.handle, command.title, undefined, true, () => {
|
||||
hide(command.handle);
|
||||
return Promise.as(undefined);
|
||||
}));
|
||||
});
|
||||
|
||||
if (!hasCloseAffordance) {
|
||||
actions.unshift(new Action('__close', nls.localize('close', "Close"), undefined, true, () => {
|
||||
hide();
|
||||
return Promise.as(undefined);
|
||||
}));
|
||||
}
|
||||
|
||||
return new Promise<number>((c) => {
|
||||
let messageHide: Function;
|
||||
let actions: MessageItemAction[] = [];
|
||||
let hasCloseAffordance = false;
|
||||
|
||||
hide = (handle?: number) => {
|
||||
messageHide();
|
||||
c(handle);
|
||||
};
|
||||
class MessageItemAction extends Action {
|
||||
constructor(id: string, label: string, handle: number) {
|
||||
super(id, label, undefined, true, () => {
|
||||
resolve(handle);
|
||||
messageHide(); // triggers dispose! make sure promise is already resolved
|
||||
return undefined;
|
||||
});
|
||||
}
|
||||
dispose(): void {
|
||||
resolve(undefined);
|
||||
}
|
||||
}
|
||||
|
||||
commands.forEach(command => {
|
||||
if (command.isCloseAffordance === true) {
|
||||
hasCloseAffordance = true;
|
||||
}
|
||||
actions.push(new MessageItemAction('_extension_message_handle_' + command.handle, command.title, command.handle));
|
||||
});
|
||||
|
||||
if (!hasCloseAffordance) {
|
||||
actions.unshift(new MessageItemAction('__close', nls.localize('close', "Close"), undefined));
|
||||
}
|
||||
|
||||
messageHide = this._messageService.show(severity, {
|
||||
message,
|
||||
|
||||
Reference in New Issue
Block a user