From 883db4e368cb95933f5ec60fb79bc2bcfa23435b Mon Sep 17 00:00:00 2001
From: Sjoerd <svink@graphpolaris.com>
Date: Tue, 5 Nov 2024 08:41:49 +0000
Subject: [PATCH] fix(qb): duplicate node attribute in query builder error

---
 .../pills/customFlowPills/entitypill/QueryEntityPill.tsx | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/libs/shared/lib/querybuilder/pills/customFlowPills/entitypill/QueryEntityPill.tsx b/libs/shared/lib/querybuilder/pills/customFlowPills/entitypill/QueryEntityPill.tsx
index 84be53b8d..5fd9ea36d 100644
--- a/libs/shared/lib/querybuilder/pills/customFlowPills/entitypill/QueryEntityPill.tsx
+++ b/libs/shared/lib/querybuilder/pills/customFlowPills/entitypill/QueryEntityPill.tsx
@@ -19,11 +19,7 @@ import { EntityPill } from '@graphpolaris/shared/lib/components/pills';
 import { Handle, Position, useUpdateNodeInternals } from 'reactflow';
 import { NodeAttribute, SchemaReactflowEntityNode, toHandleId } from '../../../model';
 import { PillAttributes } from '../../pillattributes/PillAttributes';
-import { DropdownTrigger, DropdownContainer, DropdownItemContainer, DropdownItem } from '@graphpolaris/shared/lib/components/dropdowns';
-import { PopoverContext } from '@graphpolaris/shared/lib/components/layout/Popover';
-import { useDispatch } from 'react-redux';
-import { isEqual } from 'lodash-es';
-import { getDataTypeIcon } from '@graphpolaris/shared/lib/components/DataTypeIcon';
+import { uniqBy } from 'lodash-es';
 
 /**
  * Component to render an entity flow element
@@ -43,6 +39,7 @@ export const QueryEntityPill = React.memo((node: SchemaReactflowEntityNode) => {
     [graph],
   );
 
+  const uniqueAttributes = useMemo(() => uniqBy(data.attributes, (attr) => attr.handleData.attributeName), [data.attributes]);
   const unionType = useQuerybuilderUnionTypes()[node.id];
 
   return (
@@ -75,7 +72,7 @@ export const QueryEntityPill = React.memo((node: SchemaReactflowEntityNode) => {
         {data?.attributes && (
           <PillAttributes
             node={node}
-            attributes={data.attributes}
+            attributes={uniqueAttributes}
             attributeEdges={attributeEdges.map((edge) => edge?.attributes)}
             unionType={unionType}
           />
-- 
GitLab