mirror of
https://github.com/Microsoft/vscode
synced 2024-10-12 22:37:41 +00:00
clean up - remove unused source prop
This commit is contained in:
parent
f57ac767b7
commit
c0ae73464a
|
@ -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")
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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!))
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
||||
|
|
|
@ -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<IExtensionRecommendation[]> {
|
||||
async getOtherRecommendations(): Promise<string[]> {
|
||||
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 (<IExtensionRecommendation>{ extensionId, sources });
|
||||
});
|
||||
return extensionIds;
|
||||
}
|
||||
|
||||
async getImportantRecommendations(): Promise<IExtensionRecommendation[]> {
|
||||
async getImportantRecommendations(): Promise<string[]> {
|
||||
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 (<IExtensionRecommendation>{ extensionId, sources });
|
||||
});
|
||||
return extensionIds;
|
||||
}
|
||||
|
||||
getKeymapRecommendations(): IExtensionRecommendation[] {
|
||||
getKeymapRecommendations(): string[] {
|
||||
return this.toExtensionRecommendations(this.keymapRecommendations.recommendations);
|
||||
}
|
||||
|
||||
async getWorkspaceRecommendations(): Promise<IExtensionRecommendation[]> {
|
||||
async getWorkspaceRecommendations(): Promise<string[]> {
|
||||
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<ExtensionRecommendation>): IExtensionRecommendation[] {
|
||||
private toExtensionRecommendations(recommendations: ReadonlyArray<ExtensionRecommendation>): 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 (<IExtensionRecommendation>{ extensionId, sources });
|
||||
});
|
||||
return extensionIds;
|
||||
}
|
||||
|
||||
private isExtensionAllowedToBeRecommended(id: string): boolean {
|
||||
|
|
|
@ -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<IExtension[]> {
|
||||
protected async getInstallableRecommendations(recommendations: string[], options: IQueryOptions, token: CancellationToken): Promise<IExtension[]> {
|
||||
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<IExtensionRecommendation[]> {
|
||||
protected async getWorkspaceRecommendations(): Promise<string[]> {
|
||||
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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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<string, string[]>();
|
||||
private readonly fileBasedRecommendationsByLanguage = new Map<string, string[]>();
|
||||
private readonly fileBasedRecommendations = new Map<string, { recommendedTime: number, sources: ExtensionRecommendationSource[] }>();
|
||||
private readonly fileBasedRecommendations = new Map<string, { recommendedTime: number }>();
|
||||
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.")
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
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);
|
||||
}
|
||||
|
||||
|
|
|
@ -23,7 +23,6 @@ export class KeymapRecommendations extends ExtensionRecommendations {
|
|||
if (this.productService.keymapExtensionTips) {
|
||||
this._recommendations = this.productService.keymapExtensionTips.map(extensionId => (<ExtensionRecommendation>{
|
||||
extensionId: extensionId.toLowerCase(),
|
||||
source: 'application',
|
||||
reason: {
|
||||
reasonId: ExtensionRecommendationReason.Application,
|
||||
reasonText: ''
|
||||
|
|
|
@ -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.")
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
|
|
@ -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
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
@ -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, <Partial<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<IExtensionRecommendation[]> {
|
||||
getImportantRecommendations(): Promise<string[]> {
|
||||
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() {
|
||||
|
|
|
@ -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<IExtensionRecommendation[]> { return []; }
|
||||
async getWorkspaceRecommendations(): Promise<IExtensionRecommendation[]> { return []; }
|
||||
getKeymapRecommendations(): IExtensionRecommendation[] { return []; }
|
||||
toggleIgnoredRecommendation(extensionId: string, shouldIgnore: boolean): void { }
|
||||
getAllIgnoredRecommendations(): { global: string[]; workspace: string[]; } { return Object.create(null); }
|
||||
async getConfigBasedTips(folder: URI): Promise<IConfigBasedExtensionTip[]> { return []; }
|
||||
async getImportantExecutableBasedTips(): Promise<IExecutableBasedExtensionTip[]> { return []; }
|
||||
async getOtherExecutableBasedTips(): Promise<IExecutableBasedExtensionTip[]> { return []; }
|
||||
|
|
|
@ -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<IExtensionRecommendationReson>;
|
||||
getImportantRecommendations(): Promise<IExtensionRecommendation[]>;
|
||||
getOtherRecommendations(): Promise<IExtensionRecommendation[]>;
|
||||
getFileBasedRecommendations(): IExtensionRecommendation[];
|
||||
getExeBasedRecommendations(exe?: string): Promise<{ important: IExtensionRecommendation[], others: IExtensionRecommendation[] }>;
|
||||
getConfigBasedRecommendations(): Promise<{ important: IExtensionRecommendation[], others: IExtensionRecommendation[] }>;
|
||||
getWorkspaceRecommendations(): Promise<IExtensionRecommendation[]>;
|
||||
getKeymapRecommendations(): IExtensionRecommendation[];
|
||||
getImportantRecommendations(): Promise<string[]>;
|
||||
getOtherRecommendations(): Promise<string[]>;
|
||||
getFileBasedRecommendations(): string[];
|
||||
getExeBasedRecommendations(exe?: string): Promise<{ important: string[], others: string[] }>;
|
||||
getConfigBasedRecommendations(): Promise<{ important: string[], others: string[] }>;
|
||||
getWorkspaceRecommendations(): Promise<string[]>;
|
||||
getKeymapRecommendations(): string[];
|
||||
|
||||
toggleIgnoredRecommendation(extensionId: string, shouldIgnore: boolean): void;
|
||||
getIgnoredRecommendations(): ReadonlyArray<string>;
|
||||
|
|
Loading…
Reference in a new issue