portainer/app/react/kubernetes/helm/HelmApplicationView/queries/useUninstallHelmAppMutation.ts

40 lines
1.3 KiB
TypeScript

import { useMutation, useQueryClient } from '@tanstack/react-query';
import axios, { parseAxiosError } from '@/portainer/services/axios';
import { withGlobalError, withInvalidate } from '@/react-tools/react-query';
import { queryKeys as applicationsQueryKeys } from '@/react/kubernetes/applications/queries/query-keys';
import { EnvironmentId } from '@/react/portainer/environments/types';
export function useUninstallHelmAppMutation(environmentId: EnvironmentId) {
const queryClient = useQueryClient();
return useMutation({
mutationFn: ({
releaseName,
namespace,
}: {
releaseName: string;
namespace?: string;
}) => uninstallHelmApplication(environmentId, releaseName, namespace),
...withInvalidate(queryClient, [
applicationsQueryKeys.applications(environmentId),
]),
...withGlobalError('Unable to uninstall helm application'),
});
}
export async function uninstallHelmApplication(
environmentId: EnvironmentId,
releaseName: string,
namespace?: string
) {
try {
await axios.delete(
`/endpoints/${environmentId}/kubernetes/helm/${releaseName}`,
{ params: { namespace } }
);
} catch (error) {
// parseAxiosError, because it's a regular portainer api error
throw parseAxiosError(error, 'Unable to remove application');
}
}