From a22bfabaf92fc391dd7736a0af11a4d43e07cc69 Mon Sep 17 00:00:00 2001 From: karishmas6 Date: Sat, 21 Sep 2024 15:08:41 +0530 Subject: [PATCH 1/7] feat: use updatedFields --- src/components/organisms/BrowserWindow.tsx | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/components/organisms/BrowserWindow.tsx b/src/components/organisms/BrowserWindow.tsx index 11ae4320..8212a9ab 100644 --- a/src/components/organisms/BrowserWindow.tsx +++ b/src/components/organisms/BrowserWindow.tsx @@ -230,12 +230,11 @@ export const BrowserWindow = () => { ...prevFields, [newField.label]: newField }; - return updatedFields; - }); - if (listSelector) { - addListStep(listSelector, { ...fields, [newField.label]: newField }, currentListId, { type: '', selector: paginationSelector }); + addListStep(listSelector, updatedFields, currentListId, { type: '', selector: paginationSelector }); } + return updatedFields; + }); } else { setAttributeOptions(options); @@ -289,12 +288,11 @@ export const BrowserWindow = () => { ...prevFields, [newField.label]: newField }; - return updatedFields; - }); - if (listSelector) { - addListStep(listSelector, { ...fields, [newField.label]: newField }, currentListId, { type: '', selector: paginationSelector }); + addListStep(listSelector, updatedFields, currentListId, { type: '', selector: paginationSelector }); } + return updatedFields; + }); } } } From c4b7f99f06fb8cb6b98c32516864b03288bfaeef Mon Sep 17 00:00:00 2001 From: karishmas6 Date: Sat, 21 Sep 2024 15:09:03 +0530 Subject: [PATCH 2/7] chore: lint --- src/components/organisms/BrowserWindow.tsx | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/components/organisms/BrowserWindow.tsx b/src/components/organisms/BrowserWindow.tsx index 8212a9ab..fea437bc 100644 --- a/src/components/organisms/BrowserWindow.tsx +++ b/src/components/organisms/BrowserWindow.tsx @@ -230,11 +230,11 @@ export const BrowserWindow = () => { ...prevFields, [newField.label]: newField }; - if (listSelector) { - addListStep(listSelector, updatedFields, currentListId, { type: '', selector: paginationSelector }); - } - return updatedFields; - }); + if (listSelector) { + addListStep(listSelector, updatedFields, currentListId, { type: '', selector: paginationSelector }); + } + return updatedFields; + }); } else { setAttributeOptions(options); @@ -288,11 +288,11 @@ export const BrowserWindow = () => { ...prevFields, [newField.label]: newField }; - if (listSelector) { - addListStep(listSelector, updatedFields, currentListId, { type: '', selector: paginationSelector }); - } - return updatedFields; - }); + if (listSelector) { + addListStep(listSelector, updatedFields, currentListId, { type: '', selector: paginationSelector }); + } + return updatedFields; + }); } } } From cc92d8fb4c187e3437b4274189d418d95f9d50f4 Mon Sep 17 00:00:00 2001 From: karishmas6 Date: Sat, 21 Sep 2024 15:41:29 +0530 Subject: [PATCH 3/7] feat: ensure deep copy --- src/context/browserSteps.tsx | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/context/browserSteps.tsx b/src/context/browserSteps.tsx index 4af37df0..38e9da80 100644 --- a/src/context/browserSteps.tsx +++ b/src/context/browserSteps.tsx @@ -115,21 +115,25 @@ export const BrowserStepsProvider: React.FC<{ children: React.ReactNode }> = ({ setBrowserSteps(prevSteps => prevSteps.map(step => { if (step.type === 'list' && step.id === listId) { - return { - ...step, - fields: { - ...step.fields, - [fieldKey]: { - ...step.fields[fieldKey], - label: newLabel - } + // Ensure deep copy of the fields object + const updatedFields = { + ...step.fields, + [fieldKey]: { + ...step.fields[fieldKey], + label: newLabel } }; + + return { + ...step, + fields: updatedFields + }; } return step; }) ); }; + const removeListTextField = (listId: number, fieldKey: string) => { setBrowserSteps(prevSteps => From fe1015981f139a75d1d4fa6233af01c0da264ead Mon Sep 17 00:00:00 2001 From: karishmas6 Date: Sat, 21 Sep 2024 15:41:47 +0530 Subject: [PATCH 4/7] chore: lint --- src/context/browserSteps.tsx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/context/browserSteps.tsx b/src/context/browserSteps.tsx index 38e9da80..9759ea75 100644 --- a/src/context/browserSteps.tsx +++ b/src/context/browserSteps.tsx @@ -91,7 +91,7 @@ export const BrowserStepsProvider: React.FC<{ children: React.ReactNode }> = ({ } }); }; - + const addScreenshotStep = (fullPage: boolean) => { setBrowserSteps(prevSteps => [ ...prevSteps, @@ -123,17 +123,17 @@ export const BrowserStepsProvider: React.FC<{ children: React.ReactNode }> = ({ label: newLabel } }; - + return { - ...step, - fields: updatedFields + ...step, + fields: updatedFields }; } return step; }) ); }; - + const removeListTextField = (listId: number, fieldKey: string) => { setBrowserSteps(prevSteps => From 5e73fb6aa5199d51d647ab91635ef4af9addc9a5 Mon Sep 17 00:00:00 2001 From: karishmas6 Date: Sat, 21 Sep 2024 15:56:26 +0530 Subject: [PATCH 5/7] feat: use id instead of field label --- src/components/organisms/RightSidePanel.tsx | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/src/components/organisms/RightSidePanel.tsx b/src/components/organisms/RightSidePanel.tsx index 0cf0cb90..6938e090 100644 --- a/src/components/organisms/RightSidePanel.tsx +++ b/src/components/organisms/RightSidePanel.tsx @@ -132,42 +132,40 @@ export const RightSidePanel: React.FC = ({ onFinishCapture onFinishCapture(); }, [stopGetText, getTextSettingsObject, socket, browserSteps, confirmedTextSteps]); - const getListSettingsObject = useCallback(() => { let settings: { listSelector?: string; - fields?: Record; + fields?: Record; pagination?: { type: string; selector?: string }; limit?: number; } = {}; - + browserSteps.forEach(step => { if (step.type === 'list' && step.listSelector && Object.keys(step.fields).length > 0) { - const fields: Record = {}; - Object.entries(step.fields).forEach(([label, field]) => { + const fields: Record = {}; + + Object.entries(step.fields).forEach(([id, field]) => { if (field.selectorObj?.selector) { - fields[label] = { + fields[field.label] = { selector: field.selectorObj.selector, tag: field.selectorObj.tag, attribute: field.selectorObj.attribute, }; } }); - + settings = { listSelector: step.listSelector, fields: fields, pagination: { type: paginationType, selector: step.pagination?.selector }, limit: parseInt(limitType === 'custom' ? customLimit : limitType), }; - } }); - + return settings; }, [browserSteps, paginationType, limitType, customLimit]); - - + const resetListState = useCallback(() => { setShowPaginationOptions(false); updatePaginationType(''); From 7d5a43be3a5553be0257d060e9da9a4e34fbf654 Mon Sep 17 00:00:00 2001 From: karishmas6 Date: Sat, 21 Sep 2024 15:56:51 +0530 Subject: [PATCH 6/7] feat: use id instead of label --- src/components/organisms/BrowserWindow.tsx | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/components/organisms/BrowserWindow.tsx b/src/components/organisms/BrowserWindow.tsx index fea437bc..f848f28a 100644 --- a/src/components/organisms/BrowserWindow.tsx +++ b/src/components/organisms/BrowserWindow.tsx @@ -228,14 +228,15 @@ export const BrowserWindow = () => { setFields(prevFields => { const updatedFields = { ...prevFields, - [newField.label]: newField + [newField.id]: newField }; - if (listSelector) { - addListStep(listSelector, updatedFields, currentListId, { type: '', selector: paginationSelector }); - } return updatedFields; }); + if (listSelector) { + addListStep(listSelector, { ...fields, [newField.id]: newField }, currentListId, { type: '', selector: paginationSelector }); + } + } else { setAttributeOptions(options); setSelectedElement({ @@ -286,13 +287,14 @@ export const BrowserWindow = () => { setFields(prevFields => { const updatedFields = { ...prevFields, - [newField.label]: newField + [newField.id]: newField }; - if (listSelector) { - addListStep(listSelector, updatedFields, currentListId, { type: '', selector: paginationSelector }); - } return updatedFields; }); + + if (listSelector) { + addListStep(listSelector, { ...fields, [newField.id]: newField }, currentListId, { type: '', selector: paginationSelector }); + } } } } From 918c79d71ccae5825014fbaa2b1b4c76541da953 Mon Sep 17 00:00:00 2001 From: karishmas6 Date: Sat, 21 Sep 2024 15:57:44 +0530 Subject: [PATCH 7/7] feat: ensure list ids and labels are updated --- src/context/browserSteps.tsx | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/context/browserSteps.tsx b/src/context/browserSteps.tsx index 9759ea75..7630f559 100644 --- a/src/context/browserSteps.tsx +++ b/src/context/browserSteps.tsx @@ -61,13 +61,11 @@ export const BrowserStepsProvider: React.FC<{ children: React.ReactNode }> = ({ const addListStep = (listSelector: string, newFields: { [key: string]: TextStep }, listId: number, pagination?: { type: string; selector: string }, limit?: number) => { setBrowserSteps(prevSteps => { - const existingListStepIndex = prevSteps.findIndex( - step => step.type === 'list' && step.id === listId - ); + const existingListStepIndex = prevSteps.findIndex(step => step.type === 'list' && step.id === listId); if (existingListStepIndex !== -1) { - // Update the existing ListStep with new fields, excluding discarded ones const updatedSteps = [...prevSteps]; const existingListStep = updatedSteps[existingListStepIndex] as ListStep; + const filteredNewFields = Object.entries(newFields).reduce((acc, [key, value]) => { if (!discardedFields.has(`${listId}-${key}`)) { acc[key] = value; @@ -134,7 +132,6 @@ export const BrowserStepsProvider: React.FC<{ children: React.ReactNode }> = ({ ); }; - const removeListTextField = (listId: number, fieldKey: string) => { setBrowserSteps(prevSteps => prevSteps.map(step => {