mirror of https://github.com/portainer/portainer
47 lines
1.2 KiB
TypeScript
47 lines
1.2 KiB
TypeScript
import { RawAxiosRequestHeaders } from 'axios';
|
|
import { useMutation, useQueryClient } from '@tanstack/react-query';
|
|
|
|
import { withInvalidate } from '@/react-tools/react-query';
|
|
import axios, { parseAxiosError } from '@/portainer/services/axios';
|
|
import { EnvironmentId } from '@/react/portainer/environments/types';
|
|
|
|
import { buildDockerProxyUrl } from '../../proxy/queries/buildDockerProxyUrl';
|
|
|
|
import { queryKeys } from './queryKeys';
|
|
|
|
export function useDeleteImageMutation(envId: EnvironmentId) {
|
|
const queryClient = useQueryClient();
|
|
|
|
return useMutation({
|
|
mutationFn: deleteImage,
|
|
...withInvalidate(queryClient, [queryKeys.base(envId)]),
|
|
});
|
|
}
|
|
|
|
export async function deleteImage({
|
|
environmentId,
|
|
imageId,
|
|
nodeName,
|
|
force,
|
|
}: {
|
|
environmentId: EnvironmentId;
|
|
imageId: string;
|
|
nodeName?: string;
|
|
force?: boolean;
|
|
}) {
|
|
const headers: RawAxiosRequestHeaders = {};
|
|
|
|
if (nodeName) {
|
|
headers['X-PortainerAgent-Target'] = nodeName;
|
|
}
|
|
|
|
try {
|
|
await axios.delete(buildDockerProxyUrl(environmentId, 'images', imageId), {
|
|
headers,
|
|
params: { force },
|
|
});
|
|
} catch (err) {
|
|
throw parseAxiosError(err as Error, 'Unable to pull image');
|
|
}
|
|
}
|