diff --git a/packages/zapp/console/src/components/Executions/ExecutionDetails/ExecutionDetailsActions.tsx b/packages/zapp/console/src/components/Executions/ExecutionDetails/ExecutionDetailsActions.tsx index e5251378f..0a62435a0 100644 --- a/packages/zapp/console/src/components/Executions/ExecutionDetails/ExecutionDetailsActions.tsx +++ b/packages/zapp/console/src/components/Executions/ExecutionDetails/ExecutionDetailsActions.tsx @@ -1,6 +1,6 @@ import { Button } from '@material-ui/core'; import * as React from 'react'; -import { ResourceIdentifier, Identifier, Variable } from 'models/Common/types'; +import { ResourceIdentifier, Identifier } from 'models/Common/types'; import { getTask } from 'models/Task/api'; import { LaunchFormDialog } from 'components/Launch/LaunchForm/LaunchFormDialog'; import { NodeExecutionIdentifier } from 'models/Execution/types'; @@ -20,32 +20,37 @@ export const ExecutionDetailsActions = (props: ExecutionDetailsActionsProps): JS const { className, details, nodeExecutionId } = props; const [showLaunchForm, setShowLaunchForm] = React.useState(false); - const [taskInputsTypes, setTaskInputsTypes] = React.useState< - Record | undefined - >(); - const executionData = useNodeExecutionData(nodeExecutionId); + const [initialParameters, setInitialParameters] = React.useState< + TaskInitialLaunchParameters | undefined + >(undefined); - const id = details.taskTemplate?.id as ResourceIdentifier | undefined; + const executionData = useNodeExecutionData(nodeExecutionId); + const id = details.taskTemplate?.id; React.useEffect(() => { - const fetchTask = async () => { - const task = await getTask(id as Identifier); - setTaskInputsTypes(task.closure.compiledTask.template?.interface?.inputs?.variables); - }; - if (id) fetchTask(); - }, [id]); + if (!id) { + return; + } - if (!id) { - return <>; - } + (async () => { + const task = await getTask(id!); - const literals = executionData.value.fullInputs?.literals; + const literals = executionData.value.fullInputs?.literals; + const taskInputsTypes = task.closure.compiledTask.template?.interface?.inputs?.variables; - const initialParameters: TaskInitialLaunchParameters = { - values: literals && taskInputsTypes && literalsToLiteralValueMap(literals, taskInputsTypes), - taskId: id as Identifier | undefined, - }; + const tempInitialParameters: TaskInitialLaunchParameters = { + values: literals && taskInputsTypes && literalsToLiteralValueMap(literals, taskInputsTypes), + taskId: id as Identifier | undefined, + }; + + setInitialParameters(tempInitialParameters); + })(); + }, [details]); + + if (!id || !initialParameters) { + return <>; + } const rerunOnClick = (e: React.MouseEvent) => { e.stopPropagation(); @@ -60,7 +65,7 @@ export const ExecutionDetailsActions = (props: ExecutionDetailsActionsProps): JS