提交 a47b167a 编写于 作者: J Johannes Rieken

resolve promise when message is being dismissed via ESC, fixes #5797

上级 04098fb2
......@@ -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;
let messageHide: Function;
let actions: MessageItemAction[] = [];
let hasCloseAffordance = false;
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);
}
}
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;
commands.forEach(command => {
if (command.isCloseAffordance === true) {
hasCloseAffordance = true;
}
actions.push(new MessageItemAction('_extension_message_handle_' + command.handle, command.title, command.handle));
});
hide = (handle?: number) => {
messageHide();
c(handle);
};
if (!hasCloseAffordance) {
actions.unshift(new MessageItemAction('__close', nls.localize('close', "Close"), undefined));
}
messageHide = this._messageService.show(severity, {
message,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册