803 timebox improve the ux when creating a new step (#12599)

This commit is contained in:
martmull
2025-06-13 17:22:49 +02:00
committed by GitHub
parent 671a7fbd28
commit dde3ca4549
2 changed files with 37 additions and 21 deletions

View File

@ -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 {

View File

@ -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,
}), }),