From 6d548ff089831ca189c4873a3838cedbc265c69a Mon Sep 17 00:00:00 2001 From: Philippe Perrin Date: Fri, 4 Sep 2020 16:06:16 +0200 Subject: [PATCH] SONAR-13643 Update calls to plugins api --- server/sonar-web/src/main/js/api/plugins.ts | 32 ++++++++++++------- .../js/apps/documentation/components/App.tsx | 3 +- server/sonar-web/src/main/js/types/plugins.ts | 5 +++ 3 files changed, 28 insertions(+), 12 deletions(-) diff --git a/server/sonar-web/src/main/js/api/plugins.ts b/server/sonar-web/src/main/js/api/plugins.ts index 4e898155f52..8c2b175125c 100644 --- a/server/sonar-web/src/main/js/api/plugins.ts +++ b/server/sonar-web/src/main/js/api/plugins.ts @@ -21,7 +21,13 @@ import { findLastIndex } from 'lodash'; import { getJSON, post } from 'sonar-ui-common/helpers/request'; import { isDefined } from 'sonar-ui-common/helpers/types'; import throwGlobalError from '../app/utils/throwGlobalError'; -import { AvailablePlugin, InstalledPlugin, PendingPluginResult, Update } from '../types/plugins'; +import { + AvailablePlugin, + InstalledPlugin, + PendingPluginResult, + PluginType, + Update +} from '../types/plugins'; export function getAvailablePlugins(): Promise<{ plugins: AvailablePlugin[]; @@ -56,18 +62,22 @@ function addChangelog(update: Update, updates?: Update[]) { return { ...update, previousUpdates }; } -export function getInstalledPlugins(): Promise { - return getJSON('/api/plugins/installed', { f: 'category' }).then( - ({ plugins }) => plugins, - throwGlobalError - ); +function getInstalledPluginApi(type = PluginType.External) { + return getJSON('/api/plugins/installed', { f: 'category', type }); +} + +function getUpdatesPluginApi() { + return getJSON('/api/plugins/updates'); +} + +export function getInstalledPlugins( + type: PluginType = PluginType.External +): Promise { + return getInstalledPluginApi(type).then(({ plugins }) => plugins, throwGlobalError); } export function getInstalledPluginsWithUpdates(): Promise { - return Promise.all([ - getJSON('/api/plugins/installed', { f: 'category' }), - getJSON('/api/plugins/updates') - ]) + return Promise.all([getInstalledPluginApi(), getUpdatesPluginApi()]) .then(([installed, updates]) => installed.plugins.map((plugin: InstalledPlugin) => { const updatePlugin: InstalledPlugin = updates.plugins.find( @@ -89,7 +99,7 @@ export function getInstalledPluginsWithUpdates(): Promise { } export function getPluginUpdates(): Promise { - return Promise.all([getJSON('/api/plugins/updates'), getJSON('/api/plugins/installed')]) + return Promise.all([getUpdatesPluginApi(), getInstalledPluginApi()]) .then(([updates, installed]) => updates.plugins.map((updatePlugin: InstalledPlugin) => { const updates = getLastUpdates(updatePlugin.updates).map(update => diff --git a/server/sonar-web/src/main/js/apps/documentation/components/App.tsx b/server/sonar-web/src/main/js/apps/documentation/components/App.tsx index e745735be8d..3ad204c15a2 100644 --- a/server/sonar-web/src/main/js/apps/documentation/components/App.tsx +++ b/server/sonar-web/src/main/js/apps/documentation/components/App.tsx @@ -35,6 +35,7 @@ import ScreenPositionHelper from '../../../components/common/ScreenPositionHelpe import DocMarkdownBlock from '../../../components/docs/DocMarkdownBlock'; import { ParsedContent, separateFrontMatter } from '../../../helpers/markdown'; import { isSonarCloud } from '../../../helpers/system'; +import { PluginType } from '../../../types/plugins'; import { getUrlsList } from '../navTreeUtils'; import getPages from '../pages'; import '../styles.css'; @@ -97,7 +98,7 @@ export default class App extends React.PureComponent { } getLanguagePluginsDocumentation = (tree: DocNavigationItem[]) => { - return getInstalledPlugins() + return getInstalledPlugins(PluginType.Bundled) .then(plugins => Promise.all( plugins.map(plugin => { diff --git a/server/sonar-web/src/main/js/types/plugins.ts b/server/sonar-web/src/main/js/types/plugins.ts index bea645264d1..27a5ce4d37c 100644 --- a/server/sonar-web/src/main/js/types/plugins.ts +++ b/server/sonar-web/src/main/js/types/plugins.ts @@ -71,6 +71,11 @@ export interface Update { previousUpdates?: Update[]; } +export enum PluginType { + Bundled = 'BUNDLED', + External = 'EXTERNAL' +} + export function isAvailablePlugin(plugin: Plugin): plugin is AvailablePlugin { return (plugin as any).release !== undefined; } -- 2.39.5