From 12479612cc729bc5ae00efc877c3a423a00f214b Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Mon, 2 Jul 2018 17:37:41 +0200 Subject: [PATCH] cleanup more async/await related to #53442 --- src/vs/base/common/async.ts | 4 ++-- src/vs/platform/url/common/urlService.ts | 14 ++++---------- .../workbench/parts/debug/browser/debugViewlet.ts | 8 ++++---- .../files/electron-browser/explorerViewlet.ts | 8 ++++---- .../update/electron-browser/releaseNotesEditor.ts | 2 +- .../parts/url/electron-browser/url.contribution.ts | 10 +++++----- 6 files changed, 20 insertions(+), 26 deletions(-) diff --git a/src/vs/base/common/async.ts b/src/vs/base/common/async.ts index 53a7e38ee3c..88d57b4307e 100644 --- a/src/vs/base/common/async.ts +++ b/src/vs/base/common/async.ts @@ -442,13 +442,13 @@ export function sequence(promiseFactories: ITask>[]): TPromise(promiseFactories: ITask>[], shouldStop: (t: T) => boolean = t => !!t): TPromise { +export function first(promiseFactories: ITask>[], shouldStop: (t: T) => boolean = t => !!t, defaultValue: T = null): TPromise { let index = 0; const len = promiseFactories.length; const loop: () => TPromise = () => { if (index >= len) { - return TPromise.as(null); + return TPromise.as(defaultValue); } const factory = promiseFactories[index++]; diff --git a/src/vs/platform/url/common/urlService.ts b/src/vs/platform/url/common/urlService.ts index f4fbab19d7d..2d7fda8b99f 100644 --- a/src/vs/platform/url/common/urlService.ts +++ b/src/vs/platform/url/common/urlService.ts @@ -9,6 +9,7 @@ import { IURLService, IURLHandler } from 'vs/platform/url/common/url'; import URI from 'vs/base/common/uri'; import { IDisposable, toDisposable } from 'vs/base/common/lifecycle'; import { TPromise } from 'vs/base/common/winjs.base'; +import { first } from 'vs/base/common/async'; declare module Array { function from(set: Set): T[]; @@ -20,16 +21,9 @@ export class URLService implements IURLService { private handlers = new Set(); - async open(uri: URI): TPromise { + open(uri: URI): TPromise { const handlers = Array.from(this.handlers); - - for (const handler of handlers) { - if (await handler.handleURL(uri)) { - return true; - } - } - - return false; + return first(handlers.map(h => () => h.handleURL(uri)), undefined, false); } registerHandler(handler: IURLHandler): IDisposable { @@ -44,7 +38,7 @@ export class RelayURLService extends URLService implements IURLHandler { super(); } - async open(uri: URI): TPromise { + open(uri: URI): TPromise { return this.urlService.open(uri); } diff --git a/src/vs/workbench/parts/debug/browser/debugViewlet.ts b/src/vs/workbench/parts/debug/browser/debugViewlet.ts index 2cc3d77ddf9..30ffc30d939 100644 --- a/src/vs/workbench/parts/debug/browser/debugViewlet.ts +++ b/src/vs/workbench/parts/debug/browser/debugViewlet.ts @@ -66,10 +66,10 @@ export class DebugViewlet extends ViewContainerViewlet { })); } - async create(parent: HTMLElement): TPromise { - await super.create(parent); - - DOM.addClass(parent, 'debug-viewlet'); + create(parent: HTMLElement): TPromise { + return super.create(parent).then(() => { + DOM.addClass(parent, 'debug-viewlet'); + }); } public focus(): void { diff --git a/src/vs/workbench/parts/files/electron-browser/explorerViewlet.ts b/src/vs/workbench/parts/files/electron-browser/explorerViewlet.ts index 57326f16477..257e5d35082 100644 --- a/src/vs/workbench/parts/files/electron-browser/explorerViewlet.ts +++ b/src/vs/workbench/parts/files/electron-browser/explorerViewlet.ts @@ -173,10 +173,10 @@ export class ExplorerViewlet extends ViewContainerViewlet implements IExplorerVi this._register(this.contextService.onDidChangeWorkspaceName(e => this.updateTitleArea())); } - async create(parent: HTMLElement): TPromise { - await super.create(parent); - - DOM.addClass(parent, 'explorer-viewlet'); + create(parent: HTMLElement): TPromise { + return super.create(parent).then(() => { + DOM.addClass(parent, 'explorer-viewlet'); + }); } protected createView(viewDescriptor: IViewDescriptor, options: IViewletViewOptions): ViewletPanel { diff --git a/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.ts b/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.ts index f1dcc32c086..c32bfc0d3c4 100644 --- a/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.ts +++ b/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.ts @@ -160,7 +160,7 @@ export class ReleaseNotesManager { return body; } - private async renderContent(text: string): TPromise { + private async renderContent(text: string): Promise { const renderer = await this.getRenderer(text); return marked(text, { renderer }); } diff --git a/src/vs/workbench/parts/url/electron-browser/url.contribution.ts b/src/vs/workbench/parts/url/electron-browser/url.contribution.ts index bc6c1f8faa3..375cfdad0a4 100644 --- a/src/vs/workbench/parts/url/electron-browser/url.contribution.ts +++ b/src/vs/workbench/parts/url/electron-browser/url.contribution.ts @@ -27,11 +27,11 @@ export class OpenUrlAction extends Action { super(id, label); } - async run(): TPromise { - const input = await this.quickInputService.input({ prompt: 'URL to open' }); - const uri = URI.parse(input); - - this.urlService.open(uri); + run(): TPromise { + return this.quickInputService.input({ prompt: 'URL to open' }).then(input => { + const uri = URI.parse(input); + this.urlService.open(uri); + }); } } -- GitLab