diff --git a/packages/twenty-front/src/modules/settings/serverless-functions/hooks/useServerlessFunctionUpdateFormState.ts b/packages/twenty-front/src/modules/settings/serverless-functions/hooks/useServerlessFunctionUpdateFormState.ts index dc84a7ec1..7ce048665 100644 --- a/packages/twenty-front/src/modules/settings/serverless-functions/hooks/useServerlessFunctionUpdateFormState.ts +++ b/packages/twenty-front/src/modules/settings/serverless-functions/hooks/useServerlessFunctionUpdateFormState.ts @@ -3,7 +3,7 @@ import { useGetOneServerlessFunctionSourceCode } from '@/settings/serverless-fun import { Dispatch, SetStateAction, useState } from 'react'; import { FindOneServerlessFunctionSourceCodeQuery } from '~/generated-metadata/graphql'; import { serverlessFunctionTestDataFamilyState } from '@/workflow/states/serverlessFunctionTestDataFamilyState'; -import { useSetRecoilState } from 'recoil'; +import { useRecoilState } from 'recoil'; import { getFunctionInputFromSourceCode } from '@/serverless-functions/utils/getFunctionInputFromSourceCode'; import { INDEX_FILE_PATH } from '@/serverless-functions/constants/IndexFilePath'; @@ -37,9 +37,8 @@ export const useServerlessFunctionUpdateFormState = ({ code: undefined, }); - const setServerlessFunctionTestData = useSetRecoilState( - serverlessFunctionTestDataFamilyState(serverlessFunctionId), - ); + const [serverlessFunctionTestData, setServerlessFunctionTestData] = + useRecoilState(serverlessFunctionTestDataFamilyState(serverlessFunctionId)); const { serverlessFunction } = useGetOneServerlessFunction({ id: serverlessFunctionId, @@ -54,16 +53,22 @@ export const useServerlessFunctionUpdateFormState = ({ name: serverlessFunction?.name || '', description: serverlessFunction?.description || '', }; + setFormValues((prevState) => ({ ...prevState, ...newState, })); - const sourceCode = - data?.getServerlessFunctionSourceCode?.[INDEX_FILE_PATH]; - setServerlessFunctionTestData((prev) => ({ - ...prev, - input: getFunctionInputFromSourceCode(sourceCode), - })); + + if (serverlessFunctionTestData.shouldInitInput) { + const sourceCode = + data?.getServerlessFunctionSourceCode?.[INDEX_FILE_PATH]; + + setServerlessFunctionTestData((prev) => ({ + ...prev, + input: getFunctionInputFromSourceCode(sourceCode), + shouldInitInput: false, + })); + } }, }); diff --git a/packages/twenty-front/src/modules/workflow/states/serverlessFunctionTestDataFamilyState.ts b/packages/twenty-front/src/modules/workflow/states/serverlessFunctionTestDataFamilyState.ts index a59accd0d..3ce8742bf 100644 --- a/packages/twenty-front/src/modules/workflow/states/serverlessFunctionTestDataFamilyState.ts +++ b/packages/twenty-front/src/modules/workflow/states/serverlessFunctionTestDataFamilyState.ts @@ -3,6 +3,7 @@ import { ServerlessFunctionExecutionStatus } from '~/generated-metadata/graphql' export type ServerlessFunctionTestData = { input: { [field: string]: any }; + shouldInitInput: boolean; output: { data?: string; logs: string; @@ -29,6 +30,7 @@ export const serverlessFunctionTestDataFamilyState = createFamilyState< language: 'plaintext', height: 64, input: {}, + shouldInitInput: true, output: DEFAULT_OUTPUT_VALUE, }, }); diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/components/WorkflowEditActionServerlessFunction.tsx b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/components/WorkflowEditActionServerlessFunction.tsx index 4e2a67c70..63fda868f 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/components/WorkflowEditActionServerlessFunction.tsx +++ b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/components/WorkflowEditActionServerlessFunction.tsx @@ -337,16 +337,18 @@ export const WorkflowEditActionServerlessFunction = ({ isTesting={isTesting} /> - - Logs -