File size: 1,238 Bytes
3d700dd | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | import { useMutation, useQueryClient } from "@tanstack/react-query";
import { useTranslation } from "react-i18next";
import PluginsManagementService from "#/api/plugins-management-service";
import { PLUGINS_QUERY_KEYS } from "#/hooks/query/query-keys";
import { I18nKey } from "#/i18n/declaration";
import { displayErrorToast } from "#/utils/custom-toast-handlers";
import { retrieveAxiosErrorMessage } from "#/utils/retrieve-axios-error-message";
/**
* Enable or disable an installed plugin. Enabled installed plugins auto-load
* into new conversations (via the SDK auto-load wiring), so the enabled flag is
* the enforced source of truth — invalidate the installed list on success.
*/
export function useSetPluginEnabled() {
const queryClient = useQueryClient();
const { t } = useTranslation("openhands");
return useMutation({
mutationFn: ({ name, enabled }: { name: string; enabled: boolean }) =>
PluginsManagementService.setPluginEnabled(name, enabled),
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: PLUGINS_QUERY_KEYS.installed });
},
onError: (error) => {
displayErrorToast(
retrieveAxiosErrorMessage(error) || t(I18nKey.ERROR$GENERIC),
);
},
});
}
|