diff --git a/src/frontend/src/contexts/tabsContext.tsx b/src/frontend/src/contexts/tabsContext.tsx index 1d7ad43d5..acc7011bc 100644 --- a/src/frontend/src/contexts/tabsContext.tsx +++ b/src/frontend/src/contexts/tabsContext.tsx @@ -47,7 +47,7 @@ export const TabsContext = createContext( ); export function TabsProvider({ children }: { children: ReactNode }) { - const { setNoticeData } = useContext(alertContext); + const { setErrorData, setNoticeData } = useContext(alertContext); const [tabIndex, setTabIndex] = useState(0); const [flows, setFlows] = useState>([]); const [id, setId] = useState(uuidv4()); @@ -95,25 +95,25 @@ export function TabsProvider({ children }: { children: ReactNode }) { edge.style = { stroke: "#555555" }; }); flow.data.nodes.forEach((node) => { - if (Object.keys(templates[node.data.type]["template"]).length > 0) { - node.data.node.base_classes = - templates[node.data.type]["base_classes"]; + const template = templates[node.data.type]; + if (!template) { + setErrorData({ title: `Unknown node type: ${node.data.type}` }); + return; + } + if (Object.keys(template["template"]).length > 0) { + node.data.node.base_classes = template["base_classes"]; flow.data.edges.forEach((edge) => { if (edge.source === node.id) { edge.sourceHandle = edge.sourceHandle .split("|") .slice(0, 2) - .concat(templates[node.data.type]["base_classes"]) + .concat(template["base_classes"]) .join("|"); } }); - node.data.node.description = - templates[node.data.type]["description"]; + node.data.node.description = template["description"]; node.data.node.template = updateTemplate( - templates[node.data.type][ - "template" - ] as unknown as APITemplateType, - + template["template"] as unknown as APITemplateType, node.data.node.template as APITemplateType ); } @@ -316,21 +316,25 @@ export function TabsProvider({ children }: { children: ReactNode }) { edge.animated = edge.targetHandle.split("|")[0] === "Text"; }); data.nodes.forEach((node) => { - if (Object.keys(templates[node.data.type]["template"]).length > 0) { - node.data.node.base_classes = - templates[node.data.type]["base_classes"]; + const template = templates[node.data.type]; + if (!template) { + setErrorData({ title: `Unknown node type: ${node.data.type}` }); + return; + } + if (Object.keys(template["template"]).length > 0) { + node.data.node.base_classes = template["base_classes"]; flow.data.edges.forEach((edge) => { if (edge.source === node.id) { edge.sourceHandle = edge.sourceHandle .split("|") .slice(0, 2) - .concat(templates[node.data.type]["base_classes"]) + .concat(template["base_classes"]) .join("|"); } }); - node.data.node.description = templates[node.data.type]["description"]; + node.data.node.description = template["description"]; node.data.node.template = updateTemplate( - templates[node.data.type]["template"] as unknown as APITemplateType, + template["template"] as unknown as APITemplateType, node.data.node.template as APITemplateType ); }