Files
portainer/app/react/kubernetes/more-resources/ServiceAccountsView/queries/useUpdateServiceAccountImagePullSecretsMutation.ts

47 lines
1.3 KiB
TypeScript

import { useMutation, useQueryClient } from '@tanstack/react-query';
import { withError } from '@/react-tools/react-query';
import axios, { parseAxiosError } from '@/portainer/services/axios/axios';
import { EnvironmentId } from '@/react/portainer/environments/types';
import { queryKeys } from './query-keys';
type Payload = {
environmentId: EnvironmentId;
namespace: string;
name: string;
secretNames: string[];
};
export function useUpdateServiceAccountImagePullSecretsMutation(
environmentId: EnvironmentId
) {
const queryClient = useQueryClient();
return useMutation({
mutationFn: updateServiceAccountImagePullSecrets,
onSuccess: (_data, { namespace, name }) => {
queryClient.invalidateQueries(
queryKeys.detail(environmentId, namespace, name)
);
queryClient.invalidateQueries(queryKeys.base(environmentId));
},
...withError('Unable to update image pull secrets'),
});
}
async function updateServiceAccountImagePullSecrets({
environmentId,
namespace,
name,
secretNames,
}: Payload) {
try {
await axios.put(
`kubernetes/${environmentId}/namespaces/${namespace}/service_accounts/${name}/image_pull_secrets`,
{ secretNames }
);
} catch (e) {
throw parseAxiosError(e, 'Unable to update image pull secrets');
}
}