Skip to content

Commit ef75b80

Browse files
committed
always fetch impotant exe recommendations and report when not installed
1 parent 26f0496 commit ef75b80

1 file changed

Lines changed: 22 additions & 3 deletions

File tree

src/vs/workbench/contrib/extensions/browser/extensionTipsService.ts

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ export class ExtensionTipsService extends Disposable implements IExtensionTipsSe
131131
this.fetchCachedDynamicWorkspaceRecommendations();
132132
this.fetchFileBasedRecommendations();
133133
this.fetchExperimentalRecommendations();
134+
this.fetchImportantExeBasedRecommendation();
134135
if (!this.configurationService.getValue<boolean>(ShowRecommendationsOnlyOnDemandKey)) {
135136
this.fetchProactiveRecommendations(true);
136137
}
@@ -505,6 +506,14 @@ export class ExtensionTipsService extends Disposable implements IExtensionTipsSe
505506

506507
//#region important exe based extension
507508

509+
private async fetchImportantExeBasedRecommendation(): Promise<void> {
510+
// Executable based recommendations carry out a lot of file stats, delay the resolution so that the startup is not affected
511+
// 3 secs for important
512+
await timeout(3000);
513+
await this.fetchExecutableRecommendations(true);
514+
await this.promptForImportantExeBasedExtension();
515+
}
516+
508517
private async promptForImportantExeBasedExtension(): Promise<boolean> {
509518

510519
let recommendationsToSuggest = Object.keys(this._importantExeBasedRecommendations);
@@ -527,6 +536,19 @@ export class ExtensionTipsService extends Disposable implements IExtensionTipsSe
527536
return false;
528537
}
529538

539+
for (const extensionId of recommendationsToSuggest) {
540+
const tip = this._importantExeBasedRecommendations[extensionId];
541+
542+
/* __GDPR__
543+
"exeExtensionRecommendations:notInstalled" : {
544+
"extensionId": { "classification": "PublicNonPersonalData", "purpose": "FeatureInsight" },
545+
"exeName": { "classification": "PublicNonPersonalData", "purpose": "FeatureInsight" }
546+
}
547+
*/
548+
this.telemetryService.publicLog('exeExtensionRecommendations:notInstalled', { extensionId, exeName: basename(tip.windowsPath!) });
549+
}
550+
551+
530552
const storageKey = 'extensionsAssistant/workspaceRecommendationsIgnore';
531553
const config = this.configurationService.getValue<IExtensionsConfiguration>(ConfigurationKey);
532554

@@ -1008,9 +1030,6 @@ export class ExtensionTipsService extends Disposable implements IExtensionTipsSe
10081030
// 10 sec for regular extensions
10091031
// 3 secs for important
10101032

1011-
const importantExeBasedRecommendations = timeout(calledDuringStartup ? 3000 : 0).then(_ => this.fetchExecutableRecommendations(true));
1012-
importantExeBasedRecommendations.then(_ => this.promptForImportantExeBasedExtension());
1013-
10141033
fetchPromise = timeout(calledDuringStartup ? 10000 : 0).then(_ => Promise.all([this.fetchDynamicWorkspaceRecommendations(), this.fetchExecutableRecommendations(false), importantExeBasedRecommendations]));
10151034

10161035
}

0 commit comments

Comments
 (0)