1
0
Fork 0
mirror of https://github.com/portainer/portainer.git synced 2025-07-20 22:09:41 +02:00
portainer/app/react/edge/edge-stacks/ItemView/EditEdgeStackForm/useUpdateEdgeStackMutation.ts
Chaim Lev-Ari cd5f342da0
Some checks are pending
ci / build_images (map[arch:amd64 platform:linux version:]) (push) Waiting to run
ci / build_images (map[arch:amd64 platform:windows version:1809]) (push) Waiting to run
ci / build_images (map[arch:amd64 platform:windows version:ltsc2022]) (push) Waiting to run
ci / build_images (map[arch:arm platform:linux version:]) (push) Waiting to run
ci / build_images (map[arch:arm64 platform:linux version:]) (push) Waiting to run
ci / build_images (map[arch:ppc64le platform:linux version:]) (push) Waiting to run
ci / build_images (map[arch:s390x platform:linux version:]) (push) Waiting to run
ci / build_manifests (push) Blocked by required conditions
/ triage (push) Waiting to run
Lint / Run linters (push) Waiting to run
Test / test-client (push) Waiting to run
Test / test-server (map[arch:amd64 platform:linux]) (push) Waiting to run
Test / test-server (map[arch:amd64 platform:windows version:1809]) (push) Waiting to run
Test / test-server (map[arch:amd64 platform:windows version:ltsc2022]) (push) Waiting to run
Test / test-server (map[arch:arm64 platform:linux]) (push) Waiting to run
refactor(edge/stacks): migrate edit view to react [EE-2222] (#11648)
2024-05-09 18:02:20 +03:00

56 lines
1.5 KiB
TypeScript

import { useMutation, useQueryClient } from '@tanstack/react-query';
import axios, { parseAxiosError } from '@/portainer/services/axios';
import {
mutationOptions,
withError,
withInvalidate,
} from '@/react-tools/react-query';
import { buildUrl } from '@/react/edge/edge-stacks/queries/buildUrl';
import {
DeploymentType,
EdgeStack,
StaggerConfig,
} from '@/react/edge/edge-stacks/types';
import { EdgeGroup } from '@/react/edge/edge-groups/types';
import { Registry } from '@/react/portainer/registries/types/registry';
import { Pair } from '@/react/portainer/settings/types';
import { queryKeys } from '../../queries/query-keys';
export interface UpdateEdgeStackPayload {
id: EdgeStack['Id'];
stackFileContent: string;
edgeGroups: Array<EdgeGroup['Id']>;
deploymentType: DeploymentType;
registries: Array<Registry['Id']>;
useManifestNamespaces: boolean;
prePullImage?: boolean;
rePullImage?: boolean;
retryDeploy?: boolean;
updateVersion: boolean;
webhook?: string;
envVars: Pair[];
rollbackTo?: number;
staggerConfig?: StaggerConfig;
}
export function useUpdateEdgeStackMutation() {
const queryClient = useQueryClient();
return useMutation(
updateEdgeStack,
mutationOptions(
withError('Failed updating stack'),
withInvalidate(queryClient, [queryKeys.base()])
)
);
}
async function updateEdgeStack({ id, ...payload }: UpdateEdgeStackPayload) {
try {
await axios.put(buildUrl(id), payload);
} catch (err) {
throw parseAxiosError(err as Error, 'Failed updating stack');
}
}