From d56c4846c22a6f9ff61fcb650523bc51957e8c28 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Mon, 8 Jul 2019 13:39:24 +0200 Subject: [PATCH] fix #76715 --- .../electron-browser/extensionTipsService.ts | 65 ++++++++++--------- 1 file changed, 33 insertions(+), 32 deletions(-) diff --git a/src/vs/workbench/contrib/extensions/electron-browser/extensionTipsService.ts b/src/vs/workbench/contrib/extensions/electron-browser/extensionTipsService.ts index efa09426215..06c18df0750 100644 --- a/src/vs/workbench/contrib/extensions/electron-browser/extensionTipsService.ts +++ b/src/vs/workbench/contrib/extensions/electron-browser/extensionTipsService.ts @@ -596,8 +596,39 @@ export class ExtensionTipsService extends Disposable implements IExtensionTipsSe // re-schedule this bit of the operation to be off the critical path - in case glob-match is slow setImmediate(async () => { + + let recommendationsToSuggest: string[] = []; + const now = Date.now(); + forEach(this._availableRecommendations, entry => { + let { key: pattern, value: ids } = entry; + if (match(pattern, model.uri.path)) { + for (let id of ids) { + if (caseInsensitiveGet(product.extensionImportantTips, id)) { + recommendationsToSuggest.push(id); + } + const filedBasedRecommendation = this._fileBasedRecommendations[id.toLowerCase()] || { recommendedTime: now, sources: [] }; + filedBasedRecommendation.recommendedTime = now; + if (!filedBasedRecommendation.sources.some(s => s instanceof URI && s.toString() === model.uri.toString())) { + filedBasedRecommendation.sources.push(model.uri); + } + this._fileBasedRecommendations[id.toLowerCase()] = filedBasedRecommendation; + } + } + }); + + this.storageService.store( + 'extensionsAssistant/recommendations', + JSON.stringify(Object.keys(this._fileBasedRecommendations).reduce((result, key) => { result[key] = this._fileBasedRecommendations[key].recommendedTime; return result; }, {})), + StorageScope.GLOBAL + ); + + const config = this.configurationService.getValue(ConfigurationKey); + if (config.ignoreRecommendations || config.showRecommendationsOnlyOnDemand) { + return; + } + const installed = await this.extensionManagementService.getInstalled(ExtensionType.User); - if (await this.promptRecommendedExtensionForFileType(model, installed)) { + if (await this.promptRecommendedExtensionForFileType(recommendationsToSuggest, installed)) { return; } @@ -618,37 +649,7 @@ export class ExtensionTipsService extends Disposable implements IExtensionTipsSe }); } - private async promptRecommendedExtensionForFileType(model: ITextModel, installed: ILocalExtension[]): Promise { - let recommendationsToSuggest: string[] = []; - const now = Date.now(); - forEach(this._availableRecommendations, entry => { - let { key: pattern, value: ids } = entry; - if (match(pattern, model.uri.path)) { - for (let id of ids) { - if (caseInsensitiveGet(product.extensionImportantTips, id)) { - recommendationsToSuggest.push(id); - } - const filedBasedRecommendation = this._fileBasedRecommendations[id.toLowerCase()] || { recommendedTime: now, sources: [] }; - filedBasedRecommendation.recommendedTime = now; - if (!filedBasedRecommendation.sources.some(s => s instanceof URI && s.toString() === model.uri.toString())) { - filedBasedRecommendation.sources.push(model.uri); - } - this._fileBasedRecommendations[id.toLowerCase()] = filedBasedRecommendation; - } - } - }); - - this.storageService.store( - 'extensionsAssistant/recommendations', - JSON.stringify(Object.keys(this._fileBasedRecommendations).reduce((result, key) => { result[key] = this._fileBasedRecommendations[key].recommendedTime; return result; }, {})), - StorageScope.GLOBAL - ); - - const config = this.configurationService.getValue(ConfigurationKey); - if (config.ignoreRecommendations || config.showRecommendationsOnlyOnDemand) { - return false; - } - + private async promptRecommendedExtensionForFileType(recommendationsToSuggest: string[], installed: ILocalExtension[]): Promise { const importantRecommendationsIgnoreList = JSON.parse(this.storageService.get('extensionsAssistant/importantRecommendationsIgnore', StorageScope.GLOBAL, '[]')); const installedExtensionsIds = installed.reduce((result, i) => { result.add(i.identifier.id.toLowerCase()); return result; }, new Set()); recommendationsToSuggest = recommendationsToSuggest.filter(id => { -- GitLab