Files
portainer/app/react/docker/stacks/ItemView/StackInfoTab/EditGitSettings/useUpdateGitStack.ts
T
Chaim Lev-Ari d5a3e46791 feat(stacks): update git url and config path [BE-12670] (#2099)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Devon Steenberg <devon.steenberg@portainer.io>
2026-03-24 15:01:46 +13:00

57 lines
1.9 KiB
TypeScript

import { useMutation, useQueryClient } from '@tanstack/react-query';
import { Stack } from '@/react/common/stacks/types';
import { updateGitStack } from '@/react/portainer/gitops/queries/useUpdateGitStack';
import {
GitStackPayload,
updateGitStackSettings,
} from '@/react/portainer/gitops/queries/useUpdateGitStackSettings';
import { queryKeys } from '@/react/common/stacks/queries/query-keys';
interface MutationArgs {
payload: GitStackPayload;
repullImageAndRedeploy?: boolean;
}
export function useUpdateGitStack(stack: Stack) {
const queryClient = useQueryClient();
return useMutation({
mutationFn: async ({ payload, repullImageAndRedeploy }: MutationArgs) => {
await updateGitStackSettings(stack.Id, stack.EndpointId, payload);
if (repullImageAndRedeploy === undefined) {
return { redeployAttempted: false, redeployFailed: false };
}
try {
await updateGitStack(stack.Id, stack.EndpointId, {
Env: payload.env,
Prune: payload.prune,
RepositoryAuthentication: payload.RepositoryAuthentication,
RepositoryAuthorizationType: payload.RepositoryAuthorizationType,
StackName: undefined, // TODO: in kubernetes
RepositoryGitCredentialID: payload.RepositoryGitCredentialID,
RepositoryPassword: payload.RepositoryPassword,
RepositoryReferenceName: payload.RepositoryReferenceName,
RepositoryUsername: payload.RepositoryUsername,
RepullImageAndRedeploy: repullImageAndRedeploy,
});
return { redeployAttempted: true, redeployFailed: false };
} catch (error) {
return {
redeployAttempted: true,
redeployFailed: true,
redeployError: error,
};
}
},
onSuccess: () => {
queryClient.invalidateQueries({
queryKey: queryKeys.stack(stack.Id),
exact: true,
});
},
});
}