2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-06-12 18:15:40 +00:00

Plugin loading improvements (#6056)

* Add API endpoint to reload plugin registry

* Tweak debug

* Add elements for CUI

* Update API version

* Reload plugins from PUI
This commit is contained in:
Oliver
2023-12-11 07:46:41 +11:00
committed by GitHub
parent 256f44b44e
commit 8d46521cab
10 changed files with 129 additions and 7 deletions

View File

@ -11,7 +11,7 @@ import {
Tooltip
} from '@mantine/core';
import { modals } from '@mantine/modals';
import { notifications } from '@mantine/notifications';
import { notifications, showNotification } from '@mantine/notifications';
import {
IconCircleCheck,
IconCircleX,
@ -30,6 +30,7 @@ import { useCreateApiFormModal } from '../../../hooks/UseForm';
import { useInstance } from '../../../hooks/UseInstance';
import { useTable } from '../../../hooks/UseTable';
import { apiUrl, useServerApiState } from '../../../states/ApiState';
import { useUserState } from '../../../states/UserState';
import { ActionButton } from '../../buttons/ActionButton';
import { ActionDropdown, EditItemAction } from '../../items/ActionDropdown';
import { InfoItem } from '../../items/InfoItem';
@ -423,11 +424,39 @@ export function PluginListTable({ props }: { props: InvenTreeTableProps }) {
}
});
const user = useUserState();
const reloadPlugins = useCallback(() => {
api
.post(apiUrl(ApiPaths.plugin_reload), {
full_reload: true,
force_reload: true,
collect_plugins: true
})
.then(() => {
showNotification({
title: t`Plugins reloaded`,
message: t`Plugins were reloaded successfully`,
color: 'green'
});
table.refreshTable();
});
}, []);
// Custom table actions
const tableActions = useMemo(() => {
let actions = [];
if (pluginsEnabled) {
if (user.user?.is_superuser && pluginsEnabled) {
actions.push(
<ActionButton
color="green"
icon={<IconRefresh />}
tooltip={t`Reload Plugins`}
onClick={reloadPlugins}
/>
);
actions.push(
<ActionButton
color="green"
@ -439,7 +468,7 @@ export function PluginListTable({ props }: { props: InvenTreeTableProps }) {
}
return actions;
}, []);
}, [user, pluginsEnabled]);
return (
<>

View File

@ -86,6 +86,7 @@ export enum ApiPaths {
plugin_list = 'api-plugin-list',
plugin_setting_list = 'api-plugin-settings',
plugin_install = 'api-plugin-install',
plugin_reload = 'api-plugin-reload',
plugin_registry_status = 'api-plugin-registry-status',
project_code_list = 'api-project-code-list',

View File

@ -187,6 +187,8 @@ export function apiEndpoint(path: ApiPaths): string {
return 'plugins/status/';
case ApiPaths.plugin_install:
return 'plugins/install/';
case ApiPaths.plugin_reload:
return 'plugins/reload/';
case ApiPaths.project_code_list:
return 'project-code/';
case ApiPaths.custom_unit_list: