]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-13643 Update calls to plugins api
authorPhilippe Perrin <philippe.perrin@sonarsource.com>
Fri, 4 Sep 2020 14:06:16 +0000 (16:06 +0200)
committersonartech <sonartech@sonarsource.com>
Fri, 18 Sep 2020 20:07:14 +0000 (20:07 +0000)
server/sonar-web/src/main/js/api/plugins.ts
server/sonar-web/src/main/js/apps/documentation/components/App.tsx
server/sonar-web/src/main/js/types/plugins.ts

index 4e898155f52df484c3f67b7d82d136a5ae7c2c99..8c2b175125c17e6b1ff89a5c1f4d3415b66b75de 100644 (file)
@@ -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<InstalledPlugin[]> {
-  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<InstalledPlugin[]> {
+  return getInstalledPluginApi(type).then(({ plugins }) => plugins, throwGlobalError);
 }
 
 export function getInstalledPluginsWithUpdates(): Promise<InstalledPlugin[]> {
-  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<InstalledPlugin[]> {
 }
 
 export function getPluginUpdates(): Promise<InstalledPlugin[]> {
-  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 =>
index e745735be8d9339aed7b8955d57d2b6deed04d30..3ad204c15a20174eb2227beefd63823d085a95f2 100644 (file)
@@ -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<Props, State> {
   }
 
   getLanguagePluginsDocumentation = (tree: DocNavigationItem[]) => {
-    return getInstalledPlugins()
+    return getInstalledPlugins(PluginType.Bundled)
       .then(plugins =>
         Promise.all(
           plugins.map(plugin => {
index bea645264d1c701a9fbb42754937df3b29042be9..27a5ce4d37cd18c81afd2c223a77c5585846e010 100644 (file)
@@ -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;
 }