Skip to content

Commit 67c2833

Browse files
authored
report when search is finished (microsoft#153464)
1 parent 42584f1 commit 67c2833

File tree

2 files changed

+21
-3
lines changed

2 files changed

+21
-3
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import { InstallLocalExtensionsInRemoteAction, InstallRemoteExtensionsInLocalAct
2121
import { IExtensionManagementService } from 'vs/platform/extensionManagement/common/extensionManagement';
2222
import { IWorkbenchExtensionEnablementService, IExtensionManagementServerService, IExtensionManagementServer } from 'vs/workbench/services/extensionManagement/common/extensionManagement';
2323
import { ExtensionsInput } from 'vs/workbench/contrib/extensions/common/extensionsInput';
24-
import { ExtensionsListView, EnabledExtensionsView, DisabledExtensionsView, RecommendedExtensionsView, WorkspaceRecommendedExtensionsView, BuiltInFeatureExtensionsView, BuiltInThemesExtensionsView, BuiltInProgrammingLanguageExtensionsView, ServerInstalledExtensionsView, DefaultRecommendedExtensionsView, UntrustedWorkspaceUnsupportedExtensionsView, UntrustedWorkspacePartiallySupportedExtensionsView, VirtualWorkspaceUnsupportedExtensionsView, VirtualWorkspacePartiallySupportedExtensionsView, DefaultPopularExtensionsView, DeprecatedExtensionsView } from 'vs/workbench/contrib/extensions/browser/extensionsViews';
24+
import { ExtensionsListView, EnabledExtensionsView, DisabledExtensionsView, RecommendedExtensionsView, WorkspaceRecommendedExtensionsView, BuiltInFeatureExtensionsView, BuiltInThemesExtensionsView, BuiltInProgrammingLanguageExtensionsView, ServerInstalledExtensionsView, DefaultRecommendedExtensionsView, UntrustedWorkspaceUnsupportedExtensionsView, UntrustedWorkspacePartiallySupportedExtensionsView, VirtualWorkspaceUnsupportedExtensionsView, VirtualWorkspacePartiallySupportedExtensionsView, DefaultPopularExtensionsView, DeprecatedExtensionsView, SearchMarketplaceExtensionsView } from 'vs/workbench/contrib/extensions/browser/extensionsViews';
2525
import { IProgressService, ProgressLocation } from 'vs/platform/progress/common/progress';
2626
import { IEditorGroupsService } from 'vs/workbench/services/editor/common/editorGroupsService';
2727
import Severity from 'vs/base/common/severity';
@@ -268,7 +268,7 @@ export class ExtensionsViewletViewsContribution implements IWorkbenchContributio
268268
viewDescriptors.push({
269269
id: 'workbench.views.extensions.marketplace',
270270
name: localize('marketPlace', "Marketplace"),
271-
ctorDescriptor: new SyncDescriptor(ExtensionsListView, [{}]),
271+
ctorDescriptor: new SyncDescriptor(SearchMarketplaceExtensionsView, [{}]),
272272
when: ContextKeyExpr.and(ContextKeyExpr.has('searchMarketplaceExtensions')),
273273
});
274274

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

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ import { IListContextMenuEvent } from 'vs/base/browser/ui/list/list';
3939
import { CancellationToken } from 'vs/base/common/cancellation';
4040
import { IAction, Action, Separator, ActionRunner } from 'vs/base/common/actions';
4141
import { ExtensionIdentifier, ExtensionUntrustedWorkspaceSupportType, ExtensionVirtualWorkspaceSupportType, IExtensionDescription, isLanguagePackExtension } from 'vs/platform/extensions/common/extensions';
42-
import { CancelablePromise, createCancelablePromise } from 'vs/base/common/async';
42+
import { CancelablePromise, createCancelablePromise, ThrottledDelayer } from 'vs/base/common/async';
4343
import { IProductService } from 'vs/platform/product/common/productService';
4444
import { SeverityIcon } from 'vs/platform/severityIcon/common/severityIcon';
4545
import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
@@ -1202,6 +1202,24 @@ export class DeprecatedExtensionsView extends ExtensionsListView {
12021202
}
12031203
}
12041204

1205+
export class SearchMarketplaceExtensionsView extends ExtensionsListView {
1206+
1207+
private readonly reportSearchFinishedDelayer = this._register(new ThrottledDelayer(2000));
1208+
private searchWaitPromise: Promise<void> = Promise.resolve();
1209+
1210+
override async show(query: string): Promise<IPagedModel<IExtension>> {
1211+
const queryPromise = super.show(query);
1212+
this.reportSearchFinishedDelayer.trigger(() => this.reportSearchFinished());
1213+
this.searchWaitPromise = queryPromise.then(null, null);
1214+
return queryPromise;
1215+
}
1216+
1217+
private async reportSearchFinished(): Promise<void> {
1218+
await this.searchWaitPromise;
1219+
this.telemetryService.publicLog2('extensionsView:MarketplaceSearchFinished');
1220+
}
1221+
}
1222+
12051223
export class DefaultRecommendedExtensionsView extends ExtensionsListView {
12061224
private readonly recommendedExtensionsQuery = '@recommended:all';
12071225

0 commit comments

Comments
 (0)