Fix missing test input values (#18424)

- refactor
- fix issue
This commit is contained in:
martmull
2026-03-05 14:36:36 +01:00
committed by GitHub
parent 1acbf28316
commit 7293d4c1f8
7 changed files with 129 additions and 75 deletions
@@ -0,0 +1,60 @@
import { useAtomFamilyStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomFamilyStateValue';
import { useSetAtomFamilyState } from '@/ui/utilities/state/jotai/hooks/useSetAtomFamilyState';
import { logicFunctionTestDataFamilyState } from '@/workflow/workflow-steps/workflow-actions/code-action/states/logicFunctionTestDataFamilyState';
import { useEffect } from 'react';
import { type InputJsonSchema } from 'twenty-shared/logic-function';
import { isDefined } from 'twenty-shared/utils';
import { getFunctionInputFromInputSchema } from 'twenty-shared/workflow';
import { useLogicFunctionForm } from '@/logic-functions/hooks/useLogicFunctionForm';
export const LogicFunctionTestInputInitEffect = ({
logicFunctionId,
}: {
logicFunctionId: string;
}) => {
const { logicFunction } = useLogicFunctionForm({ logicFunctionId });
const toolInputSchema = logicFunction?.toolInputSchema;
const logicFunctionTestData = useAtomFamilyStateValue(
logicFunctionTestDataFamilyState,
logicFunctionId,
);
const setLogicFunctionTestData = useSetAtomFamilyState(
logicFunctionTestDataFamilyState,
logicFunctionId,
);
useEffect(() => {
if (!logicFunctionTestData.shouldInitInput) {
return;
}
if (!isDefined(toolInputSchema)) {
return;
}
const schemaArray: InputJsonSchema[] = Array.isArray(toolInputSchema)
? toolInputSchema
: [toolInputSchema];
const defaultInput = getFunctionInputFromInputSchema(schemaArray)[0];
if (!isDefined(defaultInput)) {
return;
}
setLogicFunctionTestData((prev) => ({
...prev,
input: defaultInput as { [field: string]: any },
shouldInitInput: false,
}));
}, [
toolInputSchema,
logicFunctionTestData.shouldInitInput,
setLogicFunctionTestData,
]);
return null;
};
@@ -42,11 +42,19 @@ export const useExecuteLogicFunction = ({
logicFunctionTestDataFamilyState,
logicFunctionId,
);
const setLogicFunctionTestData = useSetAtomFamilyState(
logicFunctionTestDataFamilyState,
logicFunctionId,
);
const updateLogicFunctionInput = (input: object) => {
setLogicFunctionTestData((prev) => ({
...prev,
input,
}));
};
const executeLogicFunction = async () => {
if (isExecuting) {
return;
@@ -94,5 +102,10 @@ export const useExecuteLogicFunction = ({
}
};
return { executeLogicFunction, isExecuting };
return {
executeLogicFunction,
updateLogicFunctionInput,
logicFunctionTestData,
isExecuting,
};
};
@@ -1,4 +1,3 @@
import { useExecuteLogicFunction } from '@/logic-functions/hooks/useExecuteLogicFunction';
import {
type LogicFunctionFormValues,
useLogicFunctionUpdateFormState,
@@ -10,23 +9,16 @@ import {
} from 'twenty-shared/logic-function';
import { useDebouncedCallback } from 'use-debounce';
export const useLogicFunctionEditor = ({
export const useLogicFunctionForm = ({
logicFunctionId,
executeCallback,
}: {
logicFunctionId: string;
executeCallback?: (result: object) => void;
}) => {
const { updateLogicFunction } = usePersistLogicFunction();
const { formValues, setFormValues, logicFunction, loading } =
useLogicFunctionUpdateFormState({ logicFunctionId });
const { executeLogicFunction, isExecuting } = useExecuteLogicFunction({
logicFunctionId,
callback: executeCallback,
});
const handleSave = useDebouncedCallback(async () => {
await updateLogicFunction({
input: {
@@ -74,7 +66,5 @@ export const useLogicFunctionEditor = ({
loading,
handleSave,
onChange,
executeLogicFunction,
isExecuting,
};
};