From 81110f0ea3d754cb7ed42d265d280fd9d954ce7d Mon Sep 17 00:00:00 2001 From: Will Browne Date: Mon, 24 Feb 2025 17:05:01 +0000 Subject: [PATCH] fix dependant plugins setting --- public/app/features/plugins/admin/api.ts | 3 ++- .../InstallControls/InstallControlsButton.tsx | 14 +++++++++---- public/app/features/plugins/admin/helpers.ts | 20 ------------------- 3 files changed, 12 insertions(+), 25 deletions(-) diff --git a/public/app/features/plugins/admin/api.ts b/public/app/features/plugins/admin/api.ts index f79968d47ae..86c8217a402 100644 --- a/public/app/features/plugins/admin/api.ts +++ b/public/app/features/plugins/admin/api.ts @@ -3,7 +3,7 @@ import { getBackendSrv, isFetchError } from '@grafana/runtime'; import { accessControlQueryParam } from 'app/core/utils/accessControl'; import { API_ROOT, GCOM_API_ROOT, INSTANCE_API_ROOT } from './constants'; -import { isLocalPluginVisibleByConfig, isRemotePluginVisibleByConfig } from './helpers'; +import { dependantPlugins, isLocalPluginVisibleByConfig, isRemotePluginVisibleByConfig } from './helpers'; import { LocalPlugin, RemotePlugin, @@ -29,6 +29,7 @@ export async function getPluginDetails(id: string): Promise dep.name); if (dependencyOf?.length) { - disableUninstall = true; - uninstallTitle = `Dependent plugins must be removed first: ${dependencyOf.join(', ')}`; + uninstallConfirmationBody = `This plugin is a dependency of ${dependencyOf.join(', ')}. Are you sure you want to uninstall this plugin?`; + } + + // TODO && dependency plugin is still installed + const hasDependency = plugin.details?.pluginDependencies?.map((dep) => dep.name); + if (hasDependency?.length) { + uninstallConfirmationBody = `This plugin has dependencies on ${hasDependency.join(', ')}. Are you sure you want to uninstall this plugin?`; } if (pluginStatus === PluginStatus.UNINSTALL) { @@ -139,7 +145,7 @@ export function InstallControlsButton({