Notify workspace recommendations
This commit is contained in:
parent
6e76999ad1
commit
07bb653f20
|
@ -17,7 +17,7 @@ import {IStorageService, StorageScope} from 'vs/platform/storage/common/storage'
|
|||
import product from 'vs/platform/product';
|
||||
import { IMessageService, CloseAction } from 'vs/platform/message/common/message';
|
||||
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
||||
import { ShowRecommendedExtensionsAction } from './extensionsActions';
|
||||
import { ShowRecommendedExtensionsAction, ShowWorkspaceRecommendedExtensionsAction } from './extensionsActions';
|
||||
import Severity from 'vs/base/common/severity';
|
||||
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
|
||||
|
||||
|
@ -44,17 +44,29 @@ export class ExtensionTipsService implements IExtensionTipsService {
|
|||
return;
|
||||
}
|
||||
|
||||
const extensionTips = product.extensionTips;
|
||||
this._suggestTips();
|
||||
this._suggestWorkspaceRecommendations();
|
||||
}
|
||||
|
||||
getWorkspaceRecommendations(): string[] {
|
||||
let configuration = this.configurationService.getConfiguration<IExtensionsConfiguration>(EXTENSIONS_CONFIGURAION_NAME);
|
||||
return configuration.recommendations ? configuration.recommendations : [];
|
||||
}
|
||||
|
||||
getRecommendations(): string[] {
|
||||
return Object.keys(this._recommendations);
|
||||
}
|
||||
|
||||
private _suggestTips() {
|
||||
const extensionTips = product.extensionTips;
|
||||
if (!extensionTips) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.importantRecommendations = product.extensionImportantTips || Object.create(null);
|
||||
this.importantRecommendationsIgnoreList = <string[]>JSON.parse(storageService.get('extensionsAssistant/importantRecommendationsIgnore', StorageScope.GLOBAL, '[]'));
|
||||
this.importantRecommendationsIgnoreList = <string[]>JSON.parse(this.storageService.get('extensionsAssistant/importantRecommendationsIgnore', StorageScope.GLOBAL, '[]'));
|
||||
|
||||
// retrieve ids of previous recommendations
|
||||
const storedRecommendations = <string[]>JSON.parse(storageService.get('extensionsAssistant/recommendations', StorageScope.GLOBAL, '[]'));
|
||||
const storedRecommendations = <string[]>JSON.parse(this.storageService.get('extensionsAssistant/recommendations', StorageScope.GLOBAL, '[]'));
|
||||
for (let id of storedRecommendations) {
|
||||
this._recommendations[id] = true;
|
||||
}
|
||||
|
@ -75,15 +87,6 @@ export class ExtensionTipsService implements IExtensionTipsService {
|
|||
this._modelService.getModels().forEach(model => this._suggest(model.uri));
|
||||
}
|
||||
|
||||
getWorkspaceRecommendations(): string[] {
|
||||
let configuration = this.configurationService.getConfiguration<IExtensionsConfiguration>(EXTENSIONS_CONFIGURAION_NAME);
|
||||
return configuration.recommendations ? configuration.recommendations : [];
|
||||
}
|
||||
|
||||
getRecommendations(): string[] {
|
||||
return Object.keys(this._recommendations);
|
||||
}
|
||||
|
||||
private _suggest(uri: URI): Promise<any> {
|
||||
if (!uri) {
|
||||
return;
|
||||
|
@ -140,6 +143,31 @@ export class ExtensionTipsService implements IExtensionTipsService {
|
|||
});
|
||||
}
|
||||
|
||||
private _suggestWorkspaceRecommendations() {
|
||||
const storageKey = 'extensionsAssistant/workspaceRecommendationsIgnore';
|
||||
if (this.storageService.getBoolean(storageKey, StorageScope.WORKSPACE, false)) {
|
||||
return;
|
||||
}
|
||||
let workspaceRecommendations = this.getWorkspaceRecommendations();
|
||||
if (!workspaceRecommendations.length) {
|
||||
return;
|
||||
}
|
||||
this.extensionsService.getInstalled().done(local => {
|
||||
if (workspaceRecommendations.filter(id => local.every(local => `${local.manifest.publisher}.${local.manifest.name}` !== id)).length) {
|
||||
const message = localize('workspaceRecommended', "This workspace has some extensions recommended to install.");
|
||||
const neverAgainAction = new Action('neverShowAgain', localize('neverShowAgain', "Don't show again"), null, true, () => {
|
||||
this.storageService.store(storageKey, true, StorageScope.WORKSPACE);
|
||||
return Promise.as(true);
|
||||
});
|
||||
const recommendationsAction = this.instantiationService.createInstance(ShowWorkspaceRecommendedExtensionsAction, ShowWorkspaceRecommendedExtensionsAction.ID, localize('showRecommendations', "Show Recommendations"));
|
||||
this.messageService.show(Severity.Info, {
|
||||
message,
|
||||
actions: [recommendationsAction, neverAgainAction, CloseAction]
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
dispose() {
|
||||
this._disposables = dispose(this._disposables);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue