Merge pull request #2088 from automatisch/aut-1213

feat: use REST API endpoint to delete step
This commit is contained in:
Ömer Faruk Aydın
2024-09-19 13:15:26 +03:00
committed by GitHub
6 changed files with 20 additions and 66 deletions

View File

@@ -3,7 +3,6 @@ import updateStep from './mutations/update-step.js';
// Converted mutations // Converted mutations
import executeFlow from './mutations/execute-flow.js'; import executeFlow from './mutations/execute-flow.js';
import updateUser from './mutations/update-user.ee.js'; import updateUser from './mutations/update-user.ee.js';
import deleteStep from './mutations/delete-step.js';
import verifyConnection from './mutations/verify-connection.js'; import verifyConnection from './mutations/verify-connection.js';
import updateCurrentUser from './mutations/update-current-user.js'; import updateCurrentUser from './mutations/update-current-user.js';
import generateAuthUrl from './mutations/generate-auth-url.js'; import generateAuthUrl from './mutations/generate-auth-url.js';
@@ -16,7 +15,6 @@ import updateFlowStatus from './mutations/update-flow-status.js';
const mutationResolvers = { const mutationResolvers = {
createConnection, createConnection,
createUser, createUser,
deleteStep,
executeFlow, executeFlow,
generateAuthUrl, generateAuthUrl,
resetConnection, resetConnection,

View File

@@ -1,40 +0,0 @@
import Step from '../../models/step.js';
const deleteStep = async (_parent, params, context) => {
const conditions = context.currentUser.can('update', 'Flow');
const isCreator = conditions.isCreator;
const allSteps = Step.query();
const userSteps = context.currentUser.$relatedQuery('steps');
const baseQuery = isCreator ? userSteps : allSteps;
const step = await baseQuery
.withGraphFetched('flow')
.findOne({
'steps.id': params.input.id,
})
.throwIfNotFound();
await step.$relatedQuery('executionSteps').delete();
await step.$query().delete();
const nextSteps = await step.flow
.$relatedQuery('steps')
.where('position', '>', step.position);
const nextStepQueries = nextSteps.map(async (nextStep) => {
await nextStep.$query().patch({
position: nextStep.position - 1,
});
});
await Promise.all(nextStepQueries);
step.flow = await step.flow
.$query()
.withGraphJoined('steps')
.orderBy('steps.position', 'asc');
return step;
};
export default deleteStep;

View File

@@ -4,7 +4,6 @@ type Query {
type Mutation { type Mutation {
createConnection(input: CreateConnectionInput): Connection createConnection(input: CreateConnectionInput): Connection
createUser(input: CreateUserInput): UserWithAcceptInvitationUrl createUser(input: CreateUserInput): UserWithAcceptInvitationUrl
deleteStep(input: DeleteStepInput): Step
executeFlow(input: ExecuteFlowInput): executeFlowType executeFlow(input: ExecuteFlowInput): executeFlowType
generateAuthUrl(input: GenerateAuthUrlInput): AuthLink generateAuthUrl(input: GenerateAuthUrlInput): AuthLink
resetConnection(input: ResetConnectionInput): Connection resetConnection(input: ResetConnectionInput): Connection
@@ -257,10 +256,6 @@ input UpdateStepInput {
previousStep: PreviousStepInput previousStep: PreviousStepInput
} }
input DeleteStepInput {
id: String!
}
input CreateUserInput { input CreateUserInput {
fullName: String! fullName: String!
email: String! email: String!

View File

@@ -1,11 +1,10 @@
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import * as React from 'react'; import * as React from 'react';
import { useMutation } from '@apollo/client';
import Menu from '@mui/material/Menu'; import Menu from '@mui/material/Menu';
import MenuItem from '@mui/material/MenuItem'; import MenuItem from '@mui/material/MenuItem';
import { DELETE_STEP } from 'graphql/mutations/delete-step'; import useDeleteStep from 'hooks/useDeleteStep';
import useFormatMessage from 'hooks/useFormatMessage'; import useFormatMessage from 'hooks/useFormatMessage';
import { useQueryClient } from '@tanstack/react-query'; import { useQueryClient } from '@tanstack/react-query';
@@ -13,15 +12,17 @@ function FlowStepContextMenu(props) {
const { stepId, onClose, anchorEl, deletable, flowId } = props; const { stepId, onClose, anchorEl, deletable, flowId } = props;
const formatMessage = useFormatMessage(); const formatMessage = useFormatMessage();
const queryClient = useQueryClient(); const queryClient = useQueryClient();
const [deleteStep] = useMutation(DELETE_STEP); const { mutateAsync: deleteStep } = useDeleteStep();
const deleteActionHandler = React.useCallback( const deleteActionHandler = React.useCallback(
async (event) => { async (event) => {
event.stopPropagation(); event.stopPropagation();
await deleteStep({ variables: { input: { id: stepId } } });
await deleteStep(stepId);
await queryClient.invalidateQueries({ queryKey: ['flows', flowId] }); await queryClient.invalidateQueries({ queryKey: ['flows', flowId] });
}, },
[stepId, queryClient], [deleteStep, stepId, queryClient, flowId],
); );
return ( return (

View File

@@ -1,14 +0,0 @@
import { gql } from '@apollo/client';
export const DELETE_STEP = gql`
mutation DeleteStep($input: DeleteStepInput) {
deleteStep(input: $input) {
id
flow {
id
steps {
id
}
}
}
}
`;

View File

@@ -0,0 +1,14 @@
import { useMutation } from '@tanstack/react-query';
import api from 'helpers/api';
export default function useDeleteStep() {
const query = useMutation({
mutationFn: async (stepId) => {
const { data } = await api.delete(`/v1/steps/${stepId}`);
return data;
},
});
return query;
}