Files
portainer/app/react/docker/stacks/CreateView/CreateStackForm/useValidationSchema.ts
T

39 lines
1.3 KiB
TypeScript

import { useMemo } from 'react';
import _ from 'lodash';
import { EnvironmentId } from '@/react/portainer/environments/types';
import { useStacks } from '@/react/common/stacks/queries/useStacks';
import { useContainers } from '@/react/docker/containers/queries/useContainers';
import { useGitCredentials } from '@/react/portainer/account/git-credentials/git-credentials.service';
import { useCurrentUser, useIsEdgeAdmin } from '@/react/hooks/useUser';
import { getValidationSchema } from './validation';
export function useValidationSchema(environmentId: EnvironmentId) {
const { user } = useCurrentUser();
const { isAdmin } = useIsEdgeAdmin();
const stacksQuery = useStacks();
const containersQuery = useContainers(environmentId, {
select: (containers) =>
containers.flatMap((c) => c.Names).map((name) => _.trimStart(name, '/')),
});
const gitCredentialsQuery = useGitCredentials(user.Id);
const containerNames = containersQuery.data;
const stacks = stacksQuery.data;
const gitCredentials = gitCredentialsQuery.data;
return useMemo(
() =>
getValidationSchema({
isAdmin,
environmentId,
stacks,
containerNames,
gitCredentials,
}),
[isAdmin, environmentId, stacks, containerNames, gitCredentials]
);
}