mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Plugins: Disable plugin uninstall while plugin is installing (#95070)
This commit is contained in:
parent
830600dab0
commit
2d27703955
@ -230,12 +230,40 @@ describe('InstallControlsButton', () => {
|
||||
expect(button).toBeDisabled();
|
||||
});
|
||||
|
||||
it('should be disabled when isInstalling=false but isUpdatingFromInstance=true', () => {
|
||||
store.dispatch({ type: 'plugins/uninstall/fulfilled', payload: { id: '', changes: {} } });
|
||||
render(
|
||||
<TestProvider store={store}>
|
||||
<InstallControlsButton
|
||||
plugin={{ ...plugin, isUpdatingFromInstance: true }}
|
||||
pluginStatus={PluginStatus.UNINSTALL}
|
||||
/>
|
||||
</TestProvider>
|
||||
);
|
||||
const button = screen.getByText('Uninstall').closest('button');
|
||||
expect(button).toBeDisabled();
|
||||
});
|
||||
|
||||
it('should be disabled when isInstalling=false but isFullyInstalled=false', () => {
|
||||
store.dispatch({ type: 'plugins/uninstall/fulfilled', payload: { id: '', changes: {} } });
|
||||
render(
|
||||
<TestProvider store={store}>
|
||||
<InstallControlsButton
|
||||
plugin={{ ...plugin, isFullyInstalled: false }}
|
||||
pluginStatus={PluginStatus.UNINSTALL}
|
||||
/>
|
||||
</TestProvider>
|
||||
);
|
||||
const button = screen.getByText('Uninstall').closest('button');
|
||||
expect(button).toBeDisabled();
|
||||
});
|
||||
|
||||
it('should be enabled when isInstalling=false and isUninstallingFromInstance=false', () => {
|
||||
store.dispatch({ type: 'plugins/uninstall/fulfilled', payload: { id: '', changes: {} } });
|
||||
render(
|
||||
<TestProvider store={store}>
|
||||
<InstallControlsButton
|
||||
plugin={{ ...plugin, isUninstallingFromInstance: false }}
|
||||
plugin={{ ...plugin, isUninstallingFromInstance: false, isFullyInstalled: true }}
|
||||
pluginStatus={PluginStatus.UNINSTALL}
|
||||
/>
|
||||
</TestProvider>
|
||||
|
@ -117,10 +117,8 @@ export function InstallControlsButton({
|
||||
}
|
||||
};
|
||||
|
||||
let disableUninstall =
|
||||
config.pluginAdminExternalManageEnabled && configCore.featureToggles.managedPluginsInstall
|
||||
? plugin.isUninstallingFromInstance
|
||||
: isUninstalling;
|
||||
let disableUninstall = shouldDisableUninstall(isUninstalling, plugin);
|
||||
|
||||
let uninstallTitle = '';
|
||||
if (plugin.isPreinstalled.found) {
|
||||
disableUninstall = true;
|
||||
@ -179,3 +177,11 @@ export function InstallControlsButton({
|
||||
</Button>
|
||||
);
|
||||
}
|
||||
|
||||
function shouldDisableUninstall(isUninstalling: boolean, plugin: CatalogPlugin) {
|
||||
if (config.pluginAdminExternalManageEnabled && config.featureToggles.managedPluginsInstall) {
|
||||
return plugin.isUninstallingFromInstance || !plugin.isFullyInstalled || plugin.isUpdatingFromInstance;
|
||||
}
|
||||
|
||||
return isUninstalling;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user