803 timebox improve the ux when creating a new step (#12599)
This commit is contained in:
@ -10,12 +10,14 @@ import { workflowSelectedNodeComponentState } from '@/workflow/workflow-diagram/
|
|||||||
import { useCreateWorkflowVersionStep } from '@/workflow/workflow-steps/hooks/useCreateWorkflowVersionStep';
|
import { useCreateWorkflowVersionStep } from '@/workflow/workflow-steps/hooks/useCreateWorkflowVersionStep';
|
||||||
import { workflowInsertStepIdsComponentState } from '@/workflow/workflow-steps/states/workflowInsertStepIdsComponentState';
|
import { workflowInsertStepIdsComponentState } from '@/workflow/workflow-steps/states/workflowInsertStepIdsComponentState';
|
||||||
import { isDefined } from 'twenty-shared/utils';
|
import { isDefined } from 'twenty-shared/utils';
|
||||||
|
import { useState } from 'react';
|
||||||
|
|
||||||
export const useCreateStep = ({
|
export const useCreateStep = ({
|
||||||
workflow,
|
workflow,
|
||||||
}: {
|
}: {
|
||||||
workflow: WorkflowWithCurrentVersion;
|
workflow: WorkflowWithCurrentVersion;
|
||||||
}) => {
|
}) => {
|
||||||
|
const [isLoading, setIsLoading] = useState(false);
|
||||||
const { createWorkflowVersionStep } = useCreateWorkflowVersionStep();
|
const { createWorkflowVersionStep } = useCreateWorkflowVersionStep();
|
||||||
const setWorkflowSelectedNode = useSetRecoilComponentStateV2(
|
const setWorkflowSelectedNode = useSetRecoilComponentStateV2(
|
||||||
workflowSelectedNodeComponentState,
|
workflowSelectedNodeComponentState,
|
||||||
@ -31,29 +33,42 @@ export const useCreateStep = ({
|
|||||||
const { getUpdatableWorkflowVersion } = useGetUpdatableWorkflowVersion();
|
const { getUpdatableWorkflowVersion } = useGetUpdatableWorkflowVersion();
|
||||||
|
|
||||||
const createStep = async (newStepType: WorkflowStepType) => {
|
const createStep = async (newStepType: WorkflowStepType) => {
|
||||||
if (!isDefined(workflowInsertStepIds.parentStepId)) {
|
if (isLoading === true) {
|
||||||
throw new Error(
|
|
||||||
'No parentStepId. Please select a parent step to create from.',
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
const workflowVersionId = await getUpdatableWorkflowVersion(workflow);
|
|
||||||
|
|
||||||
const createdStep = (
|
|
||||||
await createWorkflowVersionStep({
|
|
||||||
workflowVersionId,
|
|
||||||
stepType: newStepType,
|
|
||||||
parentStepId: workflowInsertStepIds.parentStepId,
|
|
||||||
nextStepId: workflowInsertStepIds.nextStepId,
|
|
||||||
})
|
|
||||||
)?.data?.createWorkflowVersionStep;
|
|
||||||
|
|
||||||
if (!createdStep) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
setWorkflowSelectedNode(createdStep.id);
|
setIsLoading(true);
|
||||||
setWorkflowLastCreatedStepId(createdStep.id);
|
|
||||||
|
try {
|
||||||
|
if (!isDefined(workflowInsertStepIds.parentStepId)) {
|
||||||
|
throw new Error(
|
||||||
|
'No parentStepId. Please select a parent step to create from.',
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
const workflowVersionId = await getUpdatableWorkflowVersion(workflow);
|
||||||
|
|
||||||
|
const createdStep = (
|
||||||
|
await createWorkflowVersionStep({
|
||||||
|
workflowVersionId,
|
||||||
|
stepType: newStepType,
|
||||||
|
parentStepId: workflowInsertStepIds.parentStepId,
|
||||||
|
nextStepId: workflowInsertStepIds.nextStepId,
|
||||||
|
})
|
||||||
|
)?.data?.createWorkflowVersionStep;
|
||||||
|
|
||||||
|
if (!createdStep) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
setWorkflowSelectedNode(createdStep.id);
|
||||||
|
setWorkflowLastCreatedStepId(createdStep.id);
|
||||||
|
} catch (error) {
|
||||||
|
setIsLoading(false);
|
||||||
|
throw error;
|
||||||
|
} finally {
|
||||||
|
setIsLoading(false);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|||||||
@ -224,7 +224,8 @@ export class ServerlessFunctionService {
|
|||||||
await this.serverlessFunctionRepository.softDelete({ id });
|
await this.serverlessFunctionRepository.softDelete({ id });
|
||||||
} else {
|
} else {
|
||||||
await this.serverlessFunctionRepository.delete({ id });
|
await this.serverlessFunctionRepository.delete({ id });
|
||||||
await this.fileStorageService.delete({
|
// We don't need to await this
|
||||||
|
this.fileStorageService.delete({
|
||||||
folderPath: getServerlessFolder({
|
folderPath: getServerlessFolder({
|
||||||
serverlessFunction: existingServerlessFunction,
|
serverlessFunction: existingServerlessFunction,
|
||||||
}),
|
}),
|
||||||
|
|||||||
Reference in New Issue
Block a user