From b76a3952575eda6f414f617e19e5779122e28227 Mon Sep 17 00:00:00 2001 From: Carina Ursu Date: Fri, 10 Jun 2022 10:36:21 -0700 Subject: [PATCH] fix: cannot read properties of undefined (#506) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fix: nullref Signed-off-by: Carina Ursu Co-authored-by: Carina Ursu (cherry picked from commit d38b98b2d68700415224ad6c621d79e928fded01) Signed-off-by: Nick Müller --- .../ExecutionDetailsActions.tsx | 47 ++++++++++--------- 1 file changed, 26 insertions(+), 21 deletions(-) diff --git a/packages/zapp/console/src/components/Executions/ExecutionDetails/ExecutionDetailsActions.tsx b/packages/zapp/console/src/components/Executions/ExecutionDetails/ExecutionDetailsActions.tsx index 8177f5066..a4b39da2d 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, Dialog, IconButton } 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 { makeStyles, Theme } from '@material-ui/core/styles'; import { getTask } from 'models/Task/api'; import { LaunchFormDialog } from 'components/Launch/LaunchForm/LaunchFormDialog'; @@ -67,37 +67,42 @@ export const ExecutionDetailsActions = (props: ExecutionDetailsActionsProps): JS const styles = useStyles(); const [showLaunchForm, setShowLaunchForm] = React.useState(false); - const [taskInputsTypes, setTaskInputsTypes] = React.useState< - Record | undefined - >(); + + const [initialParameters, setInitialParameters] = React.useState< + TaskInitialLaunchParameters | undefined + >(undefined); const executionData = useNodeExecutionData(nodeExecutionId); const execution = useNodeExecution(nodeExecutionId); - - const id = details.taskTemplate?.id as ResourceIdentifier | undefined; + 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; + } + + (async () => { + const task = await getTask(id!); + + const literals = executionData.value.fullInputs?.literals; + const taskInputsTypes = task.closure.compiledTask.template?.interface?.inputs?.variables; + + const tempInitialParameters: TaskInitialLaunchParameters = { + values: literals && taskInputsTypes && literalsToLiteralValueMap(literals, taskInputsTypes), + taskId: id as Identifier | undefined, + }; + + setInitialParameters(tempInitialParameters); + })(); + }, [details]); const [showDeck, setShowDeck] = React.useState(false); const onCloseDeck = () => setShowDeck(false); - if (!id) { + if (!id || !initialParameters) { return <>; } - const literals = executionData.value.fullInputs?.literals; - - const initialParameters: TaskInitialLaunchParameters = { - values: literals && taskInputsTypes && literalsToLiteralValueMap(literals, taskInputsTypes), - taskId: id as Identifier | undefined, - }; - const rerunOnClick = (e: React.MouseEvent) => { e.stopPropagation(); setShowLaunchForm(true); @@ -121,7 +126,7 @@ export const ExecutionDetailsActions = (props: ExecutionDetailsActionsProps): JS