mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-16 10:58:30 -05:00
Show all available extensions in Extension Manager (#1273)
* Show all available extensions in Extension Manager * Change name of functions * Minor cleanup
This commit is contained in:
@@ -435,7 +435,9 @@ export class ExtensionGalleryService implements IExtensionGalleryService {
|
||||
|
||||
return this.queryGallery(query).then(({ galleryExtensions, total }) => {
|
||||
const extensions = galleryExtensions.map((e, index) => toExtension(e, this.extensionsGalleryUrl, index, query, options.source));
|
||||
const pageSize = query.pageSize;
|
||||
|
||||
// {{SQL CARBON EDIT}}
|
||||
const pageSize = extensions.length;
|
||||
const getPage = (pageIndex: number) => {
|
||||
const nextPageQuery = query.withPage(pageIndex + 1);
|
||||
return this.queryGallery(nextPageQuery)
|
||||
|
||||
@@ -177,7 +177,8 @@ export class ExtensionsViewlet extends PersistentViewsViewlet implements IExtens
|
||||
private createDefaultRecommendedExtensionsListViewDescriptor(): IViewDescriptor {
|
||||
return {
|
||||
id: 'extensions.recommendedList',
|
||||
name: localize('recommendedExtensions', "Recommended"),
|
||||
// {{ SQL CARBON EDIT}}
|
||||
name: localize('recommendedExtensions', "Marketplace"),
|
||||
location: ViewLocation.Extensions,
|
||||
ctor: RecommendedExtensionsView,
|
||||
when: ContextKeyExpr.and(ContextKeyExpr.not('searchExtensions'), ContextKeyExpr.has('defaultRecommendedExtensions')),
|
||||
|
||||
@@ -234,6 +234,9 @@ export class ExtensionsListView extends ViewsViewletPanel {
|
||||
return this.getAllRecommendationsModel(query, options);
|
||||
} else if (ExtensionsListView.isRecommendedExtensionsQuery(query.value)) {
|
||||
return this.getRecommendationsModel(query, options);
|
||||
// {{SQL CARBON EDIT}}
|
||||
} else if (ExtensionsListView.isAllMarketplaceExtensionsQuery(query.value)) {
|
||||
return this.getAllMarketplaceModel(query, options);
|
||||
}
|
||||
|
||||
let text = query.value;
|
||||
@@ -363,6 +366,42 @@ export class ExtensionsListView extends ViewsViewletPanel {
|
||||
});
|
||||
}
|
||||
|
||||
// {{SQL CARBON EDIT}}
|
||||
private getAllMarketplaceModel(query: Query, options: IQueryOptions): TPromise<IPagedModel<IExtension>> {
|
||||
const value = query.value.trim().toLowerCase();
|
||||
return this.extensionsWorkbenchService.queryLocal()
|
||||
.then(result => result.filter(e => e.type === LocalExtensionType.User))
|
||||
.then(local => {
|
||||
return this.tipsService.getOtherRecommendations().then((recommmended) => {
|
||||
const installedExtensions = local.map(x => `${x.publisher}.${x.name}`);
|
||||
options = assign(options, { text: value, source: 'searchText' });
|
||||
return TPromise.as(this.extensionsWorkbenchService.queryGallery(options).then((pager) => {
|
||||
// filter out installed extensions
|
||||
pager.firstPage = pager.firstPage.filter((p) => {
|
||||
return installedExtensions.indexOf(`${p.publisher}.${p.name}`) === -1;
|
||||
});
|
||||
|
||||
// sort the marketplace extensions
|
||||
pager.firstPage.sort((a, b) => {
|
||||
let isRecommendedA: boolean = recommmended.indexOf(`${a.publisher}.${a.name}`) > -1;
|
||||
let isRecommendedB: boolean = recommmended.indexOf(`${b.publisher}.${b.name}`) > -1;
|
||||
|
||||
// sort recommeded extensions before other extensions
|
||||
if (isRecommendedA !== isRecommendedB) {
|
||||
return (isRecommendedA && !isRecommendedB) ? -1 : 1;
|
||||
}
|
||||
|
||||
// otherwise sort by name
|
||||
return a.displayName.toLowerCase() < b.displayName.toLowerCase() ? -1 : 1;
|
||||
});
|
||||
pager.total = pager.firstPage.length;
|
||||
pager.pageSize = pager.firstPage.length;
|
||||
return new PagedModel(pager || []);
|
||||
}));
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
// Given all recommendations, trims and returns recommendations in the relevant order after filtering out installed extensions
|
||||
private getTrimmedRecommendations(installedExtensions: string[], value: string, fileBasedRecommendations: string[], otherRecommendations: string[], workpsaceRecommendations: string[], ) {
|
||||
const totalCount = 8;
|
||||
@@ -524,6 +563,11 @@ export class ExtensionsListView extends ViewsViewletPanel {
|
||||
static isKeymapsRecommendedExtensionsQuery(query: string): boolean {
|
||||
return /@recommended:keymaps/i.test(query);
|
||||
}
|
||||
|
||||
// {{SQL CARBON EDIT}}
|
||||
static isAllMarketplaceExtensionsQuery(query: string): boolean {
|
||||
return /@allmarketplace/i.test(query);
|
||||
}
|
||||
}
|
||||
|
||||
export class InstalledExtensionsView extends ExtensionsListView {
|
||||
@@ -560,7 +604,8 @@ export class BuiltInExtensionsView extends ExtensionsListView {
|
||||
export class RecommendedExtensionsView extends ExtensionsListView {
|
||||
|
||||
async show(query: string): TPromise<IPagedModel<IExtension>> {
|
||||
return super.show(!query.trim() ? '@recommended:all' : '@recommended');
|
||||
// {{SQL CARBON EDIT}}
|
||||
return super.show('@allmarketplace');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user