diff --git a/src/vs/platform/extensionManagement/node/extensionGalleryService.ts b/src/vs/platform/extensionManagement/node/extensionGalleryService.ts index 50527f7ab70126575441c8978cebed55a241346c..e287ed2068b36d9ad753620d23467c1ad832157c 100644 --- a/src/vs/platform/extensionManagement/node/extensionGalleryService.ts +++ b/src/vs/platform/extensionManagement/node/extensionGalleryService.ts @@ -150,15 +150,18 @@ class Query { return new Query(assign({}, this.state, { pageNumber, pageSize })); } - withFilter(filterType: FilterType, value?: string): Query { - const criterium: ICriterium = { filterType }; + withFilter(filterType: FilterType, values?: string | string[]): Query { + const criteria = this.state.criteria.slice(); - if (!isUndefined(value)) { - criterium.value = value; + if (!isUndefined(values)) { + values = Array.isArray(values) ? values : [values]; + for (const value of values) { + criteria.push({ filterType, value }); + } + } else { + criteria.push({ filterType }); } - const criteria = this.state.criteria.slice(); - criteria.push(criterium); return new Query(assign({}, this.state, { criteria })); } @@ -321,9 +324,9 @@ export class ExtensionGalleryService implements IExtensionGalleryService { if (text) { query = query.withFilter(FilterType.SearchText, text).withSortBy(SortBy.NoneOrRelevance); } else if (options.ids) { - query = options.ids.reduce((query, id) => query.withFilter(FilterType.ExtensionId, id), query); + query = query.withFilter(FilterType.ExtensionId, options.ids); } else if (options.names) { - query = options.names.reduce((query, name) => query.withFilter(FilterType.ExtensionName, name), query); + query = query.withFilter(FilterType.ExtensionName, options.names); } else { query = query.withSortBy(SortBy.InstallCount); } @@ -437,7 +440,7 @@ export class ExtensionGalleryService implements IExtensionGalleryService { .withPage(1, extensionNames.length) .withFilter(FilterType.Target, 'Microsoft.VisualStudio.Code') .withAssetTypes(AssetType.Icon, AssetType.License, AssetType.Details, AssetType.Manifest, AssetType.VSIX); - query = extensionNames.reduce((query, name) => query.withFilter(FilterType.ExtensionName, name), query); + query = query.withFilter(FilterType.ExtensionName, extensionNames); return this.queryGallery(query).then(result => { const dependencies = []; diff --git a/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.ts b/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.ts index 46a9ed27a8151f62a2c393504de3a7fa4487cdbb..561cab25b82c4b8b257c24b5a75e6a6f6e1d2312 100644 --- a/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.ts +++ b/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.ts @@ -271,7 +271,7 @@ export class ExtensionsViewlet extends Viewlet implements IExtensionsViewlet { if (!names.length) { return TPromise.as(new PagedModel([])); } - return this.extensionsWorkbenchService.queryGallery({ names, pageSize: names.length }) + return this.extensionsWorkbenchService.queryGallery({ names }) .then(result => new PagedModel(result)); }