From c0ae73464a9722419a7461eca6fdf2280f9126d2 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Fri, 25 Sep 2020 10:24:40 +0200 Subject: [PATCH] clean up - remove unused source prop --- .../browser/configBasedRecommendations.ts | 1 - .../dynamicWorkspaceRecommendations.ts | 1 - .../browser/exeBasedRecommendations.ts | 1 - .../browser/experimentalRecommendations.ts | 1 - .../browser/extensionRecommendations.ts | 3 +- .../extensionRecommendationsService.ts | 33 +++++++------------ .../extensions/browser/extensionsViews.ts | 29 ++++++++-------- .../browser/fileBasedRecommendations.ts | 26 ++++++--------- .../browser/keymapRecommendations.ts | 1 - .../browser/workspaceRecommendations.ts | 1 - .../extensions/common/extensionsUtils.ts | 2 +- .../extensionRecommendationsService.test.ts | 14 ++++---- .../electron-browser/extensionsViews.test.ts | 20 +++++------ .../sandbox.simpleservices.ts | 8 ----- .../common/extensionRecommendations.ts | 22 ++++--------- 15 files changed, 62 insertions(+), 101 deletions(-) diff --git a/src/vs/workbench/contrib/extensions/browser/configBasedRecommendations.ts b/src/vs/workbench/contrib/extensions/browser/configBasedRecommendations.ts index e08baf5c4f5..e159ddea7a5 100644 --- a/src/vs/workbench/contrib/extensions/browser/configBasedRecommendations.ts +++ b/src/vs/workbench/contrib/extensions/browser/configBasedRecommendations.ts @@ -73,7 +73,6 @@ export class ConfigBasedRecommendations extends ExtensionRecommendations { private toExtensionRecommendation(tip: IConfigBasedExtensionTip): ExtensionRecommendation { return { extensionId: tip.extensionId, - source: 'config', reason: { reasonId: ExtensionRecommendationReason.WorkspaceConfig, reasonText: localize('exeBasedRecommendation', "This extension is recommended because of the current workspace configuration") diff --git a/src/vs/workbench/contrib/extensions/browser/dynamicWorkspaceRecommendations.ts b/src/vs/workbench/contrib/extensions/browser/dynamicWorkspaceRecommendations.ts index 7c48c79d3ae..7a3c0c2f784 100644 --- a/src/vs/workbench/contrib/extensions/browser/dynamicWorkspaceRecommendations.ts +++ b/src/vs/workbench/contrib/extensions/browser/dynamicWorkspaceRecommendations.ts @@ -107,7 +107,6 @@ export class DynamicWorkspaceRecommendations extends ExtensionRecommendations { private toExtensionRecommendation(extensionId: string, folder: IWorkspaceFolder): ExtensionRecommendation { return { extensionId: extensionId.toLowerCase(), - source: 'dynamic', reason: { reasonId: ExtensionRecommendationReason.DynamicWorkspace, reasonText: localize('dynamicWorkspaceRecommendation', "This extension may interest you because it's popular among users of the {0} repository.", folder.name) diff --git a/src/vs/workbench/contrib/extensions/browser/exeBasedRecommendations.ts b/src/vs/workbench/contrib/extensions/browser/exeBasedRecommendations.ts index c62466be53f..220d24318aa 100644 --- a/src/vs/workbench/contrib/extensions/browser/exeBasedRecommendations.ts +++ b/src/vs/workbench/contrib/extensions/browser/exeBasedRecommendations.ts @@ -151,7 +151,6 @@ export class ExeBasedRecommendations extends ExtensionRecommendations { private toExtensionRecommendation(tip: IExecutableBasedExtensionTip): ExtensionRecommendation { return { extensionId: tip.extensionId.toLowerCase(), - source: 'executable', reason: { reasonId: ExtensionRecommendationReason.Executable, reasonText: localize('exeBasedRecommendation', "This extension is recommended because you have {0} installed.", tip.exeFriendlyName || basename(tip.windowsPath!)) diff --git a/src/vs/workbench/contrib/extensions/browser/experimentalRecommendations.ts b/src/vs/workbench/contrib/extensions/browser/experimentalRecommendations.ts index 97c717ab21d..16dd2fa4e81 100644 --- a/src/vs/workbench/contrib/extensions/browser/experimentalRecommendations.ts +++ b/src/vs/workbench/contrib/extensions/browser/experimentalRecommendations.ts @@ -29,7 +29,6 @@ export class ExperimentalRecommendations extends ExtensionRecommendations { if (state === ExperimentState.Run && isNonEmptyArray(action?.properties?.recommendations) && action?.properties?.recommendationReason) { action.properties.recommendations.forEach((extensionId: string) => this._recommendations.push({ extensionId: extensionId.toLowerCase(), - source: 'experimental', reason: { reasonId: ExtensionRecommendationReason.Experimental, reasonText: action.properties.recommendationReason diff --git a/src/vs/workbench/contrib/extensions/browser/extensionRecommendations.ts b/src/vs/workbench/contrib/extensions/browser/extensionRecommendations.ts index 4677ab5d4af..d8f649fdf7c 100644 --- a/src/vs/workbench/contrib/extensions/browser/extensionRecommendations.ts +++ b/src/vs/workbench/contrib/extensions/browser/extensionRecommendations.ts @@ -10,7 +10,7 @@ import { IInstantiationService } from 'vs/platform/instantiation/common/instanti import { localize } from 'vs/nls'; import { SearchExtensionsAction } from 'vs/workbench/contrib/extensions/browser/extensionsActions'; import { EnablementState, IWorkbenchExtensionEnablementService } from 'vs/workbench/services/extensionManagement/common/extensionManagement'; -import { ExtensionRecommendationSource, IExtensionRecommendationReson } from 'vs/workbench/services/extensionRecommendations/common/extensionRecommendations'; +import { IExtensionRecommendationReson } from 'vs/workbench/services/extensionRecommendations/common/extensionRecommendations'; import { IExtensionsConfiguration, ConfigurationKey, IExtension, IExtensionsWorkbenchService } from 'vs/workbench/contrib/extensions/common/extensions'; import { IConfigurationService, ConfigurationTarget } from 'vs/platform/configuration/common/configuration'; import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage'; @@ -35,7 +35,6 @@ const choiceNever = localize('neverShowAgain', "Don't Show Again"); export type ExtensionRecommendation = { readonly extensionId: string, - readonly source: ExtensionRecommendationSource; readonly reason: IExtensionRecommendationReson; }; diff --git a/src/vs/workbench/contrib/extensions/browser/extensionRecommendationsService.ts b/src/vs/workbench/contrib/extensions/browser/extensionRecommendationsService.ts index 6a791f2db94..d49c86b3cf2 100644 --- a/src/vs/workbench/contrib/extensions/browser/extensionRecommendationsService.ts +++ b/src/vs/workbench/contrib/extensions/browser/extensionRecommendationsService.ts @@ -5,7 +5,7 @@ import { Disposable } from 'vs/base/common/lifecycle'; import { IExtensionManagementService, IExtensionGalleryService, InstallOperation, DidInstallExtensionEvent } from 'vs/platform/extensionManagement/common/extensionManagement'; -import { IExtensionRecommendationsService, ExtensionRecommendationReason, RecommendationChangeNotification, IExtensionRecommendation, ExtensionRecommendationSource } from 'vs/workbench/services/extensionRecommendations/common/extensionRecommendations'; +import { IExtensionRecommendationsService, ExtensionRecommendationReason, RecommendationChangeNotification } from 'vs/workbench/services/extensionRecommendations/common/extensionRecommendations'; import { IStorageService, StorageScope, IWorkspaceStorageChangeEvent } from 'vs/platform/storage/common/storage'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { ShowRecommendationsOnlyOnDemandKey } from 'vs/workbench/contrib/extensions/common/extensions'; @@ -151,7 +151,7 @@ export class ExtensionRecommendationsService extends Disposable implements IExte return output; } - async getConfigBasedRecommendations(): Promise<{ important: IExtensionRecommendation[], others: IExtensionRecommendation[] }> { + async getConfigBasedRecommendations(): Promise<{ important: string[], others: string[] }> { await this.configBasedRecommendations.activate(); return { important: this.toExtensionRecommendations(this.configBasedRecommendations.importantRecommendations), @@ -159,7 +159,7 @@ export class ExtensionRecommendationsService extends Disposable implements IExte }; } - async getOtherRecommendations(): Promise { + async getOtherRecommendations(): Promise { await this.activateProactiveRecommendations(); const recommendations = [ @@ -174,13 +174,10 @@ export class ExtensionRecommendationsService extends Disposable implements IExte shuffle(extensionIds, this.sessionSeed); - return extensionIds.map(extensionId => { - const sources: ExtensionRecommendationSource[] = distinct(recommendations.filter(r => r.extensionId === extensionId).map(r => r.source)); - return ({ extensionId, sources }); - }); + return extensionIds; } - async getImportantRecommendations(): Promise { + async getImportantRecommendations(): Promise { await this.activateProactiveRecommendations(); const recommendations = [ @@ -194,17 +191,14 @@ export class ExtensionRecommendationsService extends Disposable implements IExte shuffle(extensionIds, this.sessionSeed); - return extensionIds.map(extensionId => { - const sources: ExtensionRecommendationSource[] = distinct(recommendations.filter(r => r.extensionId === extensionId).map(r => r.source)); - return ({ extensionId, sources }); - }); + return extensionIds; } - getKeymapRecommendations(): IExtensionRecommendation[] { + getKeymapRecommendations(): string[] { return this.toExtensionRecommendations(this.keymapRecommendations.recommendations); } - async getWorkspaceRecommendations(): Promise { + async getWorkspaceRecommendations(): Promise { if (!this.isEnabled()) { return []; } @@ -212,14 +206,14 @@ export class ExtensionRecommendationsService extends Disposable implements IExte return this.toExtensionRecommendations(this.workspaceRecommendations.recommendations); } - async getExeBasedRecommendations(exe?: string): Promise<{ important: IExtensionRecommendation[], others: IExtensionRecommendation[] }> { + async getExeBasedRecommendations(exe?: string): Promise<{ important: string[], others: string[] }> { await this.exeBasedRecommendations.activate(); const { important, others } = exe ? this.exeBasedRecommendations.getRecommendations(exe) : { important: this.exeBasedRecommendations.importantRecommendations, others: this.exeBasedRecommendations.otherRecommendations }; return { important: this.toExtensionRecommendations(important), others: this.toExtensionRecommendations(others) }; } - getFileBasedRecommendations(): IExtensionRecommendation[] { + getFileBasedRecommendations(): string[] { return this.toExtensionRecommendations(this.fileBasedRecommendations.recommendations); } @@ -264,14 +258,11 @@ export class ExtensionRecommendationsService extends Disposable implements IExte } } - private toExtensionRecommendations(recommendations: ReadonlyArray): IExtensionRecommendation[] { + private toExtensionRecommendations(recommendations: ReadonlyArray): string[] { const extensionIds = distinct(recommendations.map(e => e.extensionId)) .filter(extensionId => this.isExtensionAllowedToBeRecommended(extensionId)); - return extensionIds.map(extensionId => { - const sources: ExtensionRecommendationSource[] = distinct(recommendations.filter(r => r.extensionId === extensionId).map(r => r.source)); - return ({ extensionId, sources }); - }); + return extensionIds; } private isExtensionAllowedToBeRecommended(id: string): boolean { diff --git a/src/vs/workbench/contrib/extensions/browser/extensionsViews.ts b/src/vs/workbench/contrib/extensions/browser/extensionsViews.ts index 68ca52c7099..936a75ab483 100644 --- a/src/vs/workbench/contrib/extensions/browser/extensionsViews.ts +++ b/src/vs/workbench/contrib/extensions/browser/extensionsViews.ts @@ -10,7 +10,7 @@ import { isPromiseCanceledError, getErrorMessage } from 'vs/base/common/errors'; import { PagedModel, IPagedModel, IPager, DelayedPagedModel } from 'vs/base/common/paging'; import { SortBy, SortOrder, IQueryOptions, IExtensionManagementService } from 'vs/platform/extensionManagement/common/extensionManagement'; import { IExtensionManagementServer, IExtensionManagementServerService, EnablementState } from 'vs/workbench/services/extensionManagement/common/extensionManagement'; -import { IExtensionRecommendationsService, IExtensionRecommendation } from 'vs/workbench/services/extensionRecommendations/common/extensionRecommendations'; +import { IExtensionRecommendationsService } from 'vs/workbench/services/extensionRecommendations/common/extensionRecommendations'; import { areSameExtensions } from 'vs/platform/extensionManagement/common/extensionManagementUtil'; import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; import { IContextMenuService } from 'vs/platform/contextview/browser/contextView'; @@ -593,11 +593,10 @@ export class ExtensionsListView extends ViewPane { return new PagedModel([]); } - protected async getInstallableRecommendations(recommendations: IExtensionRecommendation[], options: IQueryOptions, token: CancellationToken): Promise { + protected async getInstallableRecommendations(recommendations: string[], options: IQueryOptions, token: CancellationToken): Promise { const extensions: IExtension[] = []; if (recommendations.length) { - const names = recommendations.map(({ extensionId }) => extensionId); - const pager = await this.extensionsWorkbenchService.queryGallery({ ...options, names, pageSize: names.length }, token); + const pager = await this.extensionsWorkbenchService.queryGallery({ ...options, names: recommendations, pageSize: recommendations.length }, token); for (const extension of pager.firstPage) { if (extension.gallery && (await this.extensionManagementService.canInstall(extension.gallery))) { extensions.push(extension); @@ -607,11 +606,11 @@ export class ExtensionsListView extends ViewPane { return extensions; } - protected async getWorkspaceRecommendations(): Promise { + protected async getWorkspaceRecommendations(): Promise { const recommendations = await this.extensionRecommendationsService.getWorkspaceRecommendations(); const { important } = await this.extensionRecommendationsService.getConfigBasedRecommendations(); for (const configBasedRecommendation of important) { - if (!recommendations.find(r => r.extensionId === configBasedRecommendation.extensionId)) { + if (!recommendations.find(extensionId => extensionId === configBasedRecommendation)) { recommendations.push(configBasedRecommendation); } } @@ -624,7 +623,7 @@ export class ExtensionsListView extends ViewPane { const installableRecommendations = (await this.getInstallableRecommendations(recommendations, { ...options, source: 'recommendations-workspace' }, token)) .filter(extension => extension.identifier.id.toLowerCase().indexOf(value) > -1); this.telemetryService.publicLog2<{ count: number }, WorkspaceRecommendationsClassification>('extensionWorkspaceRecommendations:open', { count: installableRecommendations.length }); - const result: IExtension[] = coalesce(recommendations.map(({ extensionId: id }) => installableRecommendations.find(i => areSameExtensions(i.identifier, { id })))); + const result: IExtension[] = coalesce(recommendations.map(id => installableRecommendations.find(i => areSameExtensions(i.identifier, { id })))); return new PagedModel(result); } @@ -650,7 +649,7 @@ export class ExtensionsListView extends ViewPane { .filter(e => e.type === ExtensionType.User) .map(e => e.identifier.id.toLowerCase()); const workspaceRecommendations = (await this.getWorkspaceRecommendations()) - .map(r => r.extensionId.toLowerCase()); + .map(extensionId => extensionId.toLowerCase()); const otherRecommendations = distinct( flatten(await Promise.all([ @@ -658,13 +657,13 @@ export class ExtensionsListView extends ViewPane { this.extensionRecommendationsService.getImportantRecommendations(), this.extensionRecommendationsService.getFileBasedRecommendations(), this.extensionRecommendationsService.getOtherRecommendations() - ])).filter(({ extensionId }) => !local.includes(extensionId.toLowerCase()) && !workspaceRecommendations.includes(extensionId.toLowerCase()) - ), r => r.extensionId.toLowerCase()); + ])).filter(extensionId => !local.includes(extensionId.toLowerCase()) && !workspaceRecommendations.includes(extensionId.toLowerCase()) + ), extensionId => extensionId.toLowerCase()); const installableRecommendations = (await this.getInstallableRecommendations(otherRecommendations, { ...options, source: 'recommendations-other', sortBy: undefined }, token)) .filter(extension => extension.identifier.id.toLowerCase().indexOf(value) > -1); - const result: IExtension[] = coalesce(otherRecommendations.map(({ extensionId: id }) => installableRecommendations.find(i => areSameExtensions(i.identifier, { id })))); + const result: IExtension[] = coalesce(otherRecommendations.map(id => installableRecommendations.find(i => areSameExtensions(i.identifier, { id })))); return new PagedModel(result); } @@ -681,11 +680,11 @@ export class ExtensionsListView extends ViewPane { this.extensionRecommendationsService.getImportantRecommendations(), this.extensionRecommendationsService.getFileBasedRecommendations(), this.extensionRecommendationsService.getOtherRecommendations() - ])).filter(({ extensionId }) => !local.includes(extensionId.toLowerCase()) - ), r => r.extensionId.toLowerCase()); + ])).filter(extensionId => !local.includes(extensionId.toLowerCase()) + ), extensionId => extensionId.toLowerCase()); const installableRecommendations = await this.getInstallableRecommendations(allRecommendations, { ...options, source: 'recommendations-all', sortBy: undefined }, token); - const result: IExtension[] = coalesce(allRecommendations.map(({ extensionId: id }) => installableRecommendations.find(i => areSameExtensions(i.identifier, { id })))); + const result: IExtension[] = coalesce(allRecommendations.map(id => installableRecommendations.find(i => areSameExtensions(i.identifier, { id })))); return new PagedModel(result.slice(0, 8)); } @@ -1031,7 +1030,7 @@ export class WorkspaceRecommendedExtensionsView extends ExtensionsListView { const installed = (await this.extensionsWorkbenchService.queryLocal()) .filter(l => l.enablementState !== EnablementState.DisabledByExtensionKind); // Filter extensions disabled by kind const recommendations = (await this.getWorkspaceRecommendations()) - .filter(({ extensionId }) => installed.every(local => !areSameExtensions({ id: extensionId }, local.identifier))); + .filter(extensionId => installed.every(local => !areSameExtensions({ id: extensionId }, local.identifier))); return this.getInstallableRecommendations(recommendations, { source: 'install-all-workspace-recommendations' }, CancellationToken.None); } diff --git a/src/vs/workbench/contrib/extensions/browser/fileBasedRecommendations.ts b/src/vs/workbench/contrib/extensions/browser/fileBasedRecommendations.ts index cf23079b9ac..b66f07f64be 100644 --- a/src/vs/workbench/contrib/extensions/browser/fileBasedRecommendations.ts +++ b/src/vs/workbench/contrib/extensions/browser/fileBasedRecommendations.ts @@ -7,7 +7,7 @@ import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { ExtensionRecommendations, ExtensionRecommendation, PromptedExtensionRecommendations } from 'vs/workbench/contrib/extensions/browser/extensionRecommendations'; import { INotificationService, Severity } from 'vs/platform/notification/common/notification'; import { EnablementState } from 'vs/workbench/services/extensionManagement/common/extensionManagement'; -import { ExtensionRecommendationSource, ExtensionRecommendationReason } from 'vs/workbench/services/extensionRecommendations/common/extensionRecommendations'; +import { ExtensionRecommendationReason } from 'vs/workbench/services/extensionRecommendations/common/extensionRecommendations'; import { IExtensionsViewPaneContainer, IExtensionsWorkbenchService, IExtension } from 'vs/workbench/contrib/extensions/common/extensions'; import { CancellationToken } from 'vs/base/common/cancellation'; import { localize } from 'vs/nls'; @@ -42,7 +42,7 @@ export class FileBasedRecommendations extends ExtensionRecommendations { private readonly fileBasedRecommendationsByPattern = new Map(); private readonly fileBasedRecommendationsByLanguage = new Map(); - private readonly fileBasedRecommendations = new Map(); + private readonly fileBasedRecommendations = new Map(); private readonly processedFileExtensions: string[] = []; private readonly processedLanguages: string[] = []; @@ -61,16 +61,13 @@ export class FileBasedRecommendations extends ExtensionRecommendations { return this.fileBasedRecommendations.get(a)!.recommendedTime > this.fileBasedRecommendations.get(b)!.recommendedTime ? -1 : 1; }) .forEach(extensionId => { - for (const source of this.fileBasedRecommendations.get(extensionId)!.sources) { - recommendations.push({ - extensionId, - source, - reason: { - reasonId: ExtensionRecommendationReason.File, - reasonText: localize('fileBasedRecommendation', "This extension is recommended based on the files you recently opened.") - } - }); - } + recommendations.push({ + extensionId, + reason: { + reasonId: ExtensionRecommendationReason.File, + reasonText: localize('fileBasedRecommendation', "This extension is recommended based on the files you recently opened.") + } + }); }); return recommendations; } @@ -139,7 +136,7 @@ export class FileBasedRecommendations extends ExtensionRecommendations { forEach(cachedRecommendations, ({ key, value }) => { const diff = (now - value) / milliSecondsInADay; if (diff <= 7 && allRecommendations.indexOf(key) > -1) { - this.fileBasedRecommendations.set(key.toLowerCase(), { recommendedTime: value, sources: ['cached'] }); + this.fileBasedRecommendations.set(key.toLowerCase(), { recommendedTime: value }); } }); @@ -202,9 +199,6 @@ export class FileBasedRecommendations extends ExtensionRecommendations { for (const recommendation of fileBasedRecommendations) { const filedBasedRecommendation = this.fileBasedRecommendations.get(recommendation) || { recommendedTime: Date.now(), sources: [] }; filedBasedRecommendation.recommendedTime = Date.now(); - if (!filedBasedRecommendation.sources.some(s => s instanceof URI && s.toString() === uri.toString())) { - filedBasedRecommendation.sources.push(uri); - } this.fileBasedRecommendations.set(recommendation, filedBasedRecommendation); } diff --git a/src/vs/workbench/contrib/extensions/browser/keymapRecommendations.ts b/src/vs/workbench/contrib/extensions/browser/keymapRecommendations.ts index 64b573051ad..d40178620d3 100644 --- a/src/vs/workbench/contrib/extensions/browser/keymapRecommendations.ts +++ b/src/vs/workbench/contrib/extensions/browser/keymapRecommendations.ts @@ -23,7 +23,6 @@ export class KeymapRecommendations extends ExtensionRecommendations { if (this.productService.keymapExtensionTips) { this._recommendations = this.productService.keymapExtensionTips.map(extensionId => ({ extensionId: extensionId.toLowerCase(), - source: 'application', reason: { reasonId: ExtensionRecommendationReason.Application, reasonText: '' diff --git a/src/vs/workbench/contrib/extensions/browser/workspaceRecommendations.ts b/src/vs/workbench/contrib/extensions/browser/workspaceRecommendations.ts index a0f8b182d33..0a8d055a3ad 100644 --- a/src/vs/workbench/contrib/extensions/browser/workspaceRecommendations.ts +++ b/src/vs/workbench/contrib/extensions/browser/workspaceRecommendations.ts @@ -66,7 +66,6 @@ export class WorkspaceRecommendations extends ExtensionRecommendations { if (invalidRecommendations.indexOf(extensionId) === -1) { this._recommendations.push({ extensionId, - source: this.contextService.getWorkspace(), reason: { reasonId: ExtensionRecommendationReason.Workspace, reasonText: localize('workspaceRecommendation', "This extension is recommended by users of the current workspace.") diff --git a/src/vs/workbench/contrib/extensions/common/extensionsUtils.ts b/src/vs/workbench/contrib/extensions/common/extensionsUtils.ts index 448c7da4d7a..6caca15aa7b 100644 --- a/src/vs/workbench/contrib/extensions/common/extensionsUtils.ts +++ b/src/vs/workbench/contrib/extensions/common/extensionsUtils.ts @@ -124,5 +124,5 @@ export async function getInstalledExtensions(accessor: ServicesAccessor): Promis export function isKeymapExtension(tipsService: IExtensionRecommendationsService, extension: IExtensionStatus): boolean { const cats = extension.local.manifest.categories; - return cats && cats.indexOf('Keymaps') !== -1 || tipsService.getKeymapRecommendations().some(({ extensionId }) => areSameExtensions({ id: extensionId }, extension.local.identifier)); + return cats && cats.indexOf('Keymaps') !== -1 || tipsService.getKeymapRecommendations().some(extensionId => areSameExtensions({ id: extensionId }, extension.local.identifier)); } diff --git a/src/vs/workbench/contrib/extensions/test/electron-browser/extensionRecommendationsService.test.ts b/src/vs/workbench/contrib/extensions/test/electron-browser/extensionRecommendationsService.test.ts index c65d660e802..4f968a8c129 100644 --- a/src/vs/workbench/contrib/extensions/test/electron-browser/extensionRecommendationsService.test.ts +++ b/src/vs/workbench/contrib/extensions/test/electron-browser/extensionRecommendationsService.test.ts @@ -508,9 +508,9 @@ suite('ExtensionRecommendationsService Test', () => { return testObject.activationPromise.then(() => { const recommendations = testObject.getFileBasedRecommendations(); assert.equal(recommendations.length, 2); - assert.ok(recommendations.some(({ extensionId }) => extensionId === 'ms-dotnettools.csharp')); // stored recommendation that exists in product.extensionTips - assert.ok(recommendations.some(({ extensionId }) => extensionId === 'ms-python.python')); // stored recommendation that exists in product.extensionImportantTips - assert.ok(recommendations.every(({ extensionId }) => extensionId !== 'ms-vscode.vscode-typescript-tslint-plugin')); // stored recommendation that is no longer in neither product.extensionTips nor product.extensionImportantTips + assert.ok(recommendations.some(extensionId => extensionId === 'ms-dotnettools.csharp')); // stored recommendation that exists in product.extensionTips + assert.ok(recommendations.some(extensionId => extensionId === 'ms-python.python')); // stored recommendation that exists in product.extensionImportantTips + assert.ok(recommendations.every(extensionId => extensionId !== 'ms-vscode.vscode-typescript-tslint-plugin')); // stored recommendation that is no longer in neither product.extensionTips nor product.extensionImportantTips }); }); }); @@ -527,10 +527,10 @@ suite('ExtensionRecommendationsService Test', () => { return testObject.activationPromise.then(() => { const recommendations = testObject.getFileBasedRecommendations(); assert.equal(recommendations.length, 2); - assert.ok(recommendations.some(({ extensionId }) => extensionId === 'ms-dotnettools.csharp')); // stored recommendation that exists in product.extensionTips - assert.ok(recommendations.some(({ extensionId }) => extensionId === 'ms-python.python')); // stored recommendation that exists in product.extensionImportantTips - assert.ok(recommendations.every(({ extensionId }) => extensionId !== 'ms-vscode.vscode-typescript-tslint-plugin')); // stored recommendation that is no longer in neither product.extensionTips nor product.extensionImportantTips - assert.ok(recommendations.every(({ extensionId }) => extensionId !== 'lukehoban.Go')); //stored recommendation that is older than a week + assert.ok(recommendations.some(extensionId => extensionId === 'ms-dotnettools.csharp')); // stored recommendation that exists in product.extensionTips + assert.ok(recommendations.some(extensionId => extensionId === 'ms-python.python')); // stored recommendation that exists in product.extensionImportantTips + assert.ok(recommendations.every(extensionId => extensionId !== 'ms-vscode.vscode-typescript-tslint-plugin')); // stored recommendation that is no longer in neither product.extensionTips nor product.extensionImportantTips + assert.ok(recommendations.every(extensionId => extensionId !== 'lukehoban.Go')); //stored recommendation that is older than a week }); }); }); diff --git a/src/vs/workbench/contrib/extensions/test/electron-browser/extensionsViews.test.ts b/src/vs/workbench/contrib/extensions/test/electron-browser/extensionsViews.test.ts index 78ae96e3bbd..f3db71a0425 100644 --- a/src/vs/workbench/contrib/extensions/test/electron-browser/extensionsViews.test.ts +++ b/src/vs/workbench/contrib/extensions/test/electron-browser/extensionsViews.test.ts @@ -14,7 +14,7 @@ import { DidInstallExtensionEvent, DidUninstallExtensionEvent, InstallExtensionEvent, IExtensionIdentifier, SortBy } from 'vs/platform/extensionManagement/common/extensionManagement'; import { IWorkbenchExtensionEnablementService, EnablementState, IExtensionManagementServerService, IExtensionManagementServer } from 'vs/workbench/services/extensionManagement/common/extensionManagement'; -import { IExtensionRecommendationsService, ExtensionRecommendationReason, IExtensionRecommendation } from 'vs/workbench/services/extensionRecommendations/common/extensionRecommendations'; +import { IExtensionRecommendationsService, ExtensionRecommendationReason } from 'vs/workbench/services/extensionRecommendations/common/extensionRecommendations'; import { getGalleryExtensionId } from 'vs/platform/extensionManagement/common/extensionManagementUtil'; import { TestExtensionEnablementService } from 'vs/workbench/services/extensionManagement/test/browser/extensionEnablementService.test'; import { ExtensionGalleryService } from 'vs/platform/extensionManagement/common/extensionGalleryService'; @@ -122,28 +122,28 @@ suite('ExtensionsListView Tests', () => { instantiationService.stub(IExtensionRecommendationsService, >{ getWorkspaceRecommendations() { return Promise.resolve([ - { extensionId: workspaceRecommendationA.identifier.id }, - { extensionId: workspaceRecommendationB.identifier.id }]); + workspaceRecommendationA.identifier.id, + workspaceRecommendationB.identifier.id]); }, getConfigBasedRecommendations() { return Promise.resolve({ - important: [{ extensionId: configBasedRecommendationA.identifier.id }], - others: [{ extensionId: configBasedRecommendationB.identifier.id }], + important: [configBasedRecommendationA.identifier.id], + others: [configBasedRecommendationB.identifier.id], }); }, - getImportantRecommendations(): Promise { + getImportantRecommendations(): Promise { return Promise.resolve([]); }, getFileBasedRecommendations() { return [ - { extensionId: fileBasedRecommendationA.identifier.id }, - { extensionId: fileBasedRecommendationB.identifier.id } + fileBasedRecommendationA.identifier.id, + fileBasedRecommendationB.identifier.id ]; }, getOtherRecommendations() { return Promise.resolve([ - { extensionId: configBasedRecommendationB.identifier.id }, - { extensionId: otherRecommendationA.identifier.id } + configBasedRecommendationB.identifier.id, + otherRecommendationA.identifier.id ]); }, getAllRecommendationsWithReason() { diff --git a/src/vs/workbench/electron-sandbox/sandbox.simpleservices.ts b/src/vs/workbench/electron-sandbox/sandbox.simpleservices.ts index 4dfc0b02a9d..ff37f7fb4d6 100644 --- a/src/vs/workbench/electron-sandbox/sandbox.simpleservices.ts +++ b/src/vs/workbench/electron-sandbox/sandbox.simpleservices.ts @@ -39,7 +39,6 @@ import { IWebviewService, WebviewContentOptions, WebviewElement, WebviewExtensio import { ITextFileService } from 'vs/workbench/services/textfile/common/textfiles'; import { AbstractTextFileService } from 'vs/workbench/services/textfile/browser/textFileService'; import { IExtensionManagementServer, IExtensionManagementServerService } from 'vs/workbench/services/extensionManagement/common/extensionManagement'; -import { ExtensionRecommendationReason, IExtensionRecommendation } from 'vs/workbench/services/extensionRecommendations/common/extensionRecommendations'; import { ITunnelProvider, ITunnelService, RemoteTunnel } from 'vs/platform/remote/common/tunnel'; import { Disposable, IDisposable } from 'vs/base/common/lifecycle'; import { IManualSyncTask, IResourcePreview, ISyncResourceHandle, ISyncTask, IUserDataAutoSyncService, IUserDataSyncService, IUserDataSyncStore, IUserDataSyncStoreManagementService, SyncResource, SyncStatus, UserDataSyncStoreType } from 'vs/platform/userDataSync/common/userDataSync'; @@ -766,13 +765,6 @@ class SimpleExtensionTipsService implements IExtensionTipsService { onRecommendationChange = Event.None; - getAllRecommendationsWithReason(): { [id: string]: { reasonId: ExtensionRecommendationReason; reasonText: string; }; } { return Object.create(null); } - getFileBasedRecommendations(): IExtensionRecommendation[] { return []; } - async getOtherRecommendations(): Promise { return []; } - async getWorkspaceRecommendations(): Promise { return []; } - getKeymapRecommendations(): IExtensionRecommendation[] { return []; } - toggleIgnoredRecommendation(extensionId: string, shouldIgnore: boolean): void { } - getAllIgnoredRecommendations(): { global: string[]; workspace: string[]; } { return Object.create(null); } async getConfigBasedTips(folder: URI): Promise { return []; } async getImportantExecutableBasedTips(): Promise { return []; } async getOtherExecutableBasedTips(): Promise { return []; } diff --git a/src/vs/workbench/services/extensionRecommendations/common/extensionRecommendations.ts b/src/vs/workbench/services/extensionRecommendations/common/extensionRecommendations.ts index 9407b050b24..921a9ab8b2f 100644 --- a/src/vs/workbench/services/extensionRecommendations/common/extensionRecommendations.ts +++ b/src/vs/workbench/services/extensionRecommendations/common/extensionRecommendations.ts @@ -5,8 +5,6 @@ import { Event } from 'vs/base/common/event'; import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; -import { URI } from 'vs/base/common/uri'; -import { IWorkspace, IWorkspaceFolder } from 'vs/platform/workspace/common/workspace'; import { IStringDictionary } from 'vs/base/common/collections'; export interface IExtensionsConfigContent { @@ -25,12 +23,6 @@ export type ExecutableRecommendation = 'executable'; export type CachedRecommendation = 'cached'; export type ApplicationRecommendation = 'application'; export type ExperimentalRecommendation = 'experimental'; -export type ExtensionRecommendationSource = IWorkspace | IWorkspaceFolder | URI | DynamicRecommendation | ExecutableRecommendation | CachedRecommendation | ApplicationRecommendation | ExperimentalRecommendation | ConfigRecommendation; - -export interface IExtensionRecommendation { - extensionId: string; - sources: ExtensionRecommendationSource[]; -} export const enum ExtensionRecommendationReason { Workspace, @@ -53,13 +45,13 @@ export interface IExtensionRecommendationsService { readonly _serviceBrand: undefined; getAllRecommendationsWithReason(): IStringDictionary; - getImportantRecommendations(): Promise; - getOtherRecommendations(): Promise; - getFileBasedRecommendations(): IExtensionRecommendation[]; - getExeBasedRecommendations(exe?: string): Promise<{ important: IExtensionRecommendation[], others: IExtensionRecommendation[] }>; - getConfigBasedRecommendations(): Promise<{ important: IExtensionRecommendation[], others: IExtensionRecommendation[] }>; - getWorkspaceRecommendations(): Promise; - getKeymapRecommendations(): IExtensionRecommendation[]; + getImportantRecommendations(): Promise; + getOtherRecommendations(): Promise; + getFileBasedRecommendations(): string[]; + getExeBasedRecommendations(exe?: string): Promise<{ important: string[], others: string[] }>; + getConfigBasedRecommendations(): Promise<{ important: string[], others: string[] }>; + getWorkspaceRecommendations(): Promise; + getKeymapRecommendations(): string[]; toggleIgnoredRecommendation(extensionId: string, shouldIgnore: boolean): void; getIgnoredRecommendations(): ReadonlyArray;