From c6fb9884a09e953e220b9e3413db5426ee15eb94 Mon Sep 17 00:00:00 2001 From: Hugo Kiyodi Oshiro Date: Thu, 5 Sep 2024 15:04:37 +0200 Subject: [PATCH] Plugins: Add sync update all plugins in cloud (#92742) --- .../admin/components/UpdateAllModal.tsx | 20 ++++++++++++++----- .../features/plugins/admin/pages/Browse.tsx | 6 ++---- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/public/app/features/plugins/admin/components/UpdateAllModal.tsx b/public/app/features/plugins/admin/components/UpdateAllModal.tsx index 8ef7d3a3d6a..6c247fa6da6 100644 --- a/public/app/features/plugins/admin/components/UpdateAllModal.tsx +++ b/public/app/features/plugins/admin/components/UpdateAllModal.tsx @@ -218,14 +218,24 @@ export const UpdateAllModal = ({ isOpen, onDismiss, plugins }: Props) => { } }, [error, errorMap, inProgress, selectedPlugins]); - const onConfirm = () => { + const onConfirm = async () => { if (!inProgress) { setInProgress(true); - plugins.forEach((plugin) => { - if (selectedPlugins?.has(plugin.id)) { - install(plugin.id, plugin.latestVersion, true); + + // in cloud the requests need to be sync + if (config.pluginAdminExternalManageEnabled && config.featureToggles.managedPluginsInstall) { + for (let plugin of plugins) { + if (selectedPlugins?.has(plugin.id)) { + await install(plugin.id, plugin.latestVersion, true); + } } - }); + } else { + plugins.forEach((plugin) => { + if (selectedPlugins?.has(plugin.id)) { + install(plugin.id, plugin.latestVersion, true); + } + }); + } } }; diff --git a/public/app/features/plugins/admin/pages/Browse.tsx b/public/app/features/plugins/admin/pages/Browse.tsx index 7327730c1df..8a724d79784 100644 --- a/public/app/features/plugins/admin/pages/Browse.tsx +++ b/public/app/features/plugins/admin/pages/Browse.tsx @@ -3,7 +3,7 @@ import { ReactElement, useState } from 'react'; import { useLocation } from 'react-router-dom-v5-compat'; import { SelectableValue, GrafanaTheme2, PluginType } from '@grafana/data'; -import { config, locationSearchToObject } from '@grafana/runtime'; +import { locationSearchToObject } from '@grafana/runtime'; import { Select, RadioButtonGroup, useStyles2, Tooltip, Field, Button } from '@grafana/ui'; import { Page } from 'app/core/components/Page/Page'; import { Trans } from 'app/core/internationalization'; @@ -94,10 +94,8 @@ export default function Browse({ route }: GrafanaRouteComponentProps): ReactElem ); - const hideUpdateAllButton = config.pluginAdminExternalManageEnabled && config.featureToggles.managedPluginsInstall; - return ( - +