From ad7ee4b3bd11ecbf50f2c3fc9fcf2c9247aa7d5c Mon Sep 17 00:00:00 2001 From: Felix Becker Date: Mon, 7 Aug 2017 16:51:40 -0700 Subject: [PATCH] Make ExtensionTipsService multi-root aware --- .../electron-browser/extensionTipsService.ts | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.ts b/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.ts index 98c38557ed182..4784e13f067ce 100644 --- a/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.ts +++ b/src/vs/workbench/parts/extensions/electron-browser/extensionTipsService.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import { localize } from 'vs/nls'; -import * as paths from 'vs/base/common/paths'; +import { flatten } from 'vs/base/common/arrays'; import { TPromise } from 'vs/base/common/winjs.base'; import { forEach } from 'vs/base/common/collections'; import { IDisposable, dispose } from 'vs/base/common/lifecycle'; @@ -68,16 +68,20 @@ export class ExtensionTipsService implements IExtensionTipsService { if (!this.contextService.hasWorkspace()) { return TPromise.as([]); } - return this.fileService.resolveContent(this.contextService.toResource(paths.join('.vscode', 'extensions.json'))).then(content => { //TODO@Sandeep (https://github.com/Microsoft/vscode/issues/29242) - const extensionsContent = json.parse(content.value, []); - if (extensionsContent.recommendations) { - const regEx = new RegExp(EXTENSION_IDENTIFIER_PATTERN); - return extensionsContent.recommendations.filter((element, position) => { - return extensionsContent.recommendations.indexOf(element) === position && regEx.test(element); - }); - } - return []; - }, err => []); + return TPromise.join( + this.contextService.getWorkspace().roots.map(root => + this.fileService.resolveContent(root.with({ path: root.path + '/.vscode/extensions.json' })).then(content => { + const extensionsContent = json.parse(content.value, []); + if (extensionsContent.recommendations) { + const regEx = new RegExp(EXTENSION_IDENTIFIER_PATTERN); + return extensionsContent.recommendations.filter((element, position) => { + return extensionsContent.recommendations.indexOf(element) === position && regEx.test(element); + }); + } + return []; + }).then(null, err => []) + ) + ).then(flatten); } getRecommendations(): string[] {