mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-04-01 01:20:31 -04:00
Merge from vscode 817eb6b0c720a4ecbc13c020afbbebfed667aa09 (#7356)
This commit is contained in:
@@ -47,6 +47,7 @@ import { CancelablePromise, createCancelablePromise } from 'vs/base/common/async
|
||||
import { IProductService } from 'vs/platform/product/common/productService';
|
||||
import { SeverityIcon } from 'vs/platform/severityIcon/common/severityIcon';
|
||||
import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
|
||||
import { IUserDataSyncService } from 'vs/platform/userDataSync/common/userDataSync';
|
||||
|
||||
|
||||
class ExtensionsViewState extends Disposable implements IExtensionsViewState {
|
||||
@@ -104,6 +105,7 @@ export class ExtensionsListView extends ViewletPanel {
|
||||
@IExtensionManagementServerService protected readonly extensionManagementServerService: IExtensionManagementServerService,
|
||||
@IProductService protected readonly productService: IProductService,
|
||||
@IContextKeyService contextKeyService: IContextKeyService,
|
||||
@IUserDataSyncService private readonly userDataSyncService: IUserDataSyncService,
|
||||
) {
|
||||
super({ ...(options as IViewletPanelOptions), ariaHeaderLabel: options.title, showActionsAlways: true }, keybindingService, contextMenuService, configurationService, contextKeyService);
|
||||
this.server = options.server;
|
||||
@@ -456,8 +458,10 @@ export class ExtensionsListView extends ViewletPanel {
|
||||
} else if (ExtensionsListView.isRecommendedExtensionsQuery(query.value)) {
|
||||
return this.getRecommendationsModel(query, options, token);
|
||||
// {{SQL CARBON EDIT}}
|
||||
} else if (ExtensionsListView.isAllMarketplaceExtensionsQuery(query.value)) {
|
||||
} else if (ExtensionsListView.isAllMarketplaceExtensionsQuery(query.value)) { // {{SQL CARBON EDIT}} add if
|
||||
return this.getAllMarketplaceModel(query, options, token);
|
||||
} else if (ExtensionsListView.isSyncedExtensionsQuery(query.value)) {
|
||||
return this.getSyncedExtensionsModel(query, options, token);
|
||||
}
|
||||
|
||||
if (/\bcurated:([^\s]+)\b/.test(query.value)) {
|
||||
@@ -765,6 +769,23 @@ export class ExtensionsListView extends ViewletPanel {
|
||||
.then(result => this.getPagedModel(result));
|
||||
}
|
||||
|
||||
private async getSyncedExtensionsModel(query: Query, options: IQueryOptions, token: CancellationToken): Promise<IPagedModel<IExtension>> {
|
||||
const syncedExtensions = await this.userDataSyncService.getRemoteExtensions();
|
||||
if (!syncedExtensions.length) {
|
||||
return this.showEmptyModel();
|
||||
}
|
||||
const ids: string[] = [], names: string[] = [];
|
||||
for (const installed of syncedExtensions) {
|
||||
if (installed.identifier.uuid) {
|
||||
ids.push(installed.identifier.uuid);
|
||||
} else {
|
||||
names.push(installed.identifier.id);
|
||||
}
|
||||
}
|
||||
const pager = await this.extensionsWorkbenchService.queryGallery({ ids, names, pageSize: ids.length }, token);
|
||||
return this.getPagedModel(pager || []);
|
||||
}
|
||||
|
||||
// Sorts the firstPage of the pager in the same order as given array of extension ids
|
||||
private sortFirstPage(pager: IPager<IExtension>, ids: string[]) {
|
||||
ids = ids.map(x => x.toLowerCase());
|
||||
@@ -904,6 +925,10 @@ export class ExtensionsListView extends ViewletPanel {
|
||||
return /@recommended:keymaps/i.test(query);
|
||||
}
|
||||
|
||||
static isSyncedExtensionsQuery(query: string): boolean {
|
||||
return /@myaccount/i.test(query);
|
||||
}
|
||||
|
||||
focus(): void {
|
||||
super.focus();
|
||||
if (!this.list) {
|
||||
@@ -944,10 +969,11 @@ export class ServerExtensionsView extends ExtensionsListView {
|
||||
@IExtensionsWorkbenchService extensionsWorkbenchService: IExtensionsWorkbenchService,
|
||||
@IExtensionManagementServerService extensionManagementServerService: IExtensionManagementServerService,
|
||||
@IProductService productService: IProductService,
|
||||
@IContextKeyService contextKeyService: IContextKeyService
|
||||
@IContextKeyService contextKeyService: IContextKeyService,
|
||||
@IUserDataSyncService userDataSyncService: IUserDataSyncService
|
||||
) {
|
||||
options.server = server;
|
||||
super(options, notificationService, keybindingService, contextMenuService, instantiationService, themeService, extensionService, extensionsWorkbenchService, editorService, tipsService, telemetryService, configurationService, contextService, experimentService, workbenchThemeService, extensionManagementServerService, productService, contextKeyService);
|
||||
super(options, notificationService, keybindingService, contextMenuService, instantiationService, themeService, extensionService, extensionsWorkbenchService, editorService, tipsService, telemetryService, configurationService, contextService, experimentService, workbenchThemeService, extensionManagementServerService, productService, contextKeyService, userDataSyncService);
|
||||
this._register(onDidChangeTitle(title => this.updateTitle(title)));
|
||||
}
|
||||
|
||||
@@ -1003,6 +1029,14 @@ export class BuiltInBasicsExtensionsView extends ExtensionsListView {
|
||||
}
|
||||
}
|
||||
|
||||
export class SyncedExtensionsView extends ExtensionsListView {
|
||||
|
||||
async show(query: string): Promise<IPagedModel<IExtension>> {
|
||||
query = query || '@myaccount';
|
||||
return ExtensionsListView.isSyncedExtensionsQuery(query) ? super.show(query) : this.showEmptyModel();
|
||||
}
|
||||
}
|
||||
|
||||
export class DefaultRecommendedExtensionsView extends ExtensionsListView {
|
||||
// {{SQL CARBON EDIT}}
|
||||
private readonly recommendedExtensionsQuery = '@allmarketplace';
|
||||
|
||||
Reference in New Issue
Block a user