From b149144fbd63a5988359f8e28991cb32104d3467 Mon Sep 17 00:00:00 2001
From: deep1401 <gandhi0869@gmail.com>
Date: Wed, 26 Feb 2025 09:41:14 -0800
Subject: [PATCH] Remove the onChange useeffect and place it whenever the
 change happens itself

---
 .../Widgets/CustomEvaluationWidget.tsx          | 17 +++++++----------
 1 file changed, 7 insertions(+), 10 deletions(-)

diff --git a/src/renderer/components/Experiment/Widgets/CustomEvaluationWidget.tsx b/src/renderer/components/Experiment/Widgets/CustomEvaluationWidget.tsx
index 80561250..f6e2b9fb 100644
--- a/src/renderer/components/Experiment/Widgets/CustomEvaluationWidget.tsx
+++ b/src/renderer/components/Experiment/Widgets/CustomEvaluationWidget.tsx
@@ -6,6 +6,7 @@ import {
   Select,
   Option,
 } from '@mui/joy';
+import { on } from 'node:events';
 
 type EvaluationField = {
   name: string;
@@ -14,7 +15,6 @@ type EvaluationField = {
 };
 
 
-
 const CustomEvaluationWidget = (props: WidgetProps<any>) => {
   const { id, value, onChange, disabled, readonly } = props;
 
@@ -57,18 +57,13 @@ const CustomEvaluationWidget = (props: WidgetProps<any>) => {
     }
   }, [value]);
 
-
-
-  // Propagate state changes upstream.
-  React.useEffect(() => {
-    onChange(evalMetrics);
-  }, [evalMetrics]);
-
   const handleAddField = () => {
-    setEvalMetrics([
+    const updatedMetrics = [
       ...evalMetrics,
       { name: '', expression: '', return_type: 'boolean' }
-    ]);
+    ];
+    setEvalMetrics(updatedMetrics);
+    onChange(updatedMetrics);
   };
 
   const handleFieldChange = (
@@ -80,11 +75,13 @@ const CustomEvaluationWidget = (props: WidgetProps<any>) => {
       i === index ? { ...evaluation, [field]: newValue } : evaluation
     );
     setEvalMetrics(updated);
+    onChange(updated);
   };
 
   const handleRemoveField = (index: number) => {
     const updated = evalMetrics.filter((_, i) => i !== index);
     setEvalMetrics(updated);
+    onChange(updated);
   };
 
   return (
-- 
GitLab