From df5175f7466bbab9e5b35a38498d8f7926d75f68 Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Tue, 21 Nov 2023 16:09:13 -0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20fix(parameterComponent/index.tsx?= =?UTF-8?q?):=20add=20error=20handling=20when=20updating=20custom=20compon?= =?UTF-8?q?ent=20values=20=E2=9C=A8=20feat(parameterComponent/index.tsx):?= =?UTF-8?q?=20add=20refresh=20button=20to=20update=20custom=20component=20?= =?UTF-8?q?values?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/parameterComponent/index.tsx | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/frontend/src/CustomNodes/GenericNode/components/parameterComponent/index.tsx b/src/frontend/src/CustomNodes/GenericNode/components/parameterComponent/index.tsx index dfb1613e9..76bf46fad 100644 --- a/src/frontend/src/CustomNodes/GenericNode/components/parameterComponent/index.tsx +++ b/src/frontend/src/CustomNodes/GenericNode/components/parameterComponent/index.tsx @@ -23,9 +23,12 @@ import TextAreaComponent from "../../../../components/textAreaComponent"; import ToggleShadComponent from "../../../../components/toggleShadComponent"; import { Button } from "../../../../components/ui/button"; import { TOOLTIP_EMPTY } from "../../../../constants/constants"; +import { alertContext } from "../../../../contexts/alertContext"; import { FlowsContext } from "../../../../contexts/flowsContext"; import { typesContext } from "../../../../contexts/typesContext"; +import { postCustomComponentUpdate } from "../../../../controllers/API"; import { ParameterComponentType } from "../../../../types/components"; +import { NodeDataType } from "../../../../types/flow"; import { convertObjToArray, convertValuesToNumbers, @@ -60,6 +63,7 @@ export default function ParameterComponent({ const ref = useRef(null); const refHtml = useRef(null); const infoHtml = useRef(null); + const { setErrorData } = useContext(alertContext); const updateNodeInternals = useUpdateNodeInternals(); const [position, setPosition] = useState(0); const { setTabsState, tabId, flows } = useContext(FlowsContext); @@ -88,6 +92,25 @@ export default function ParameterComponent({ const { data: myData } = useContext(typesContext); + const handleUpdateValues = async (name: string, data: NodeDataType) => { + const code = data.node?.template["code"]?.value; + if (!code) { + console.error("Code not found in the template"); + return; + } + + try { + const res = await postCustomComponentUpdate(code, name); + if (res.status === 200 && data.node?.template) { + let clone = cloneDeep(data); + clone.node!.template[name] = res.data.template[name]; + setData(clone); + } + } catch (err) { + setErrorData(err as { title: string; list?: Array }); + } + }; + const handleOnNewValue = ( newValue: string | string[] | boolean | Object[] ): void => { @@ -411,6 +434,14 @@ export default function ParameterComponent({ onSelect={handleOnNewValue} value={data.node.template[name].value ?? "Choose an option"} > + ) : left === true && type === "code" ? (