feat: use selector object instead of str

This commit is contained in:
karishmas6
2024-08-03 21:33:33 +05:30
parent e044f92406
commit a6047d917f

View File

@@ -1,15 +1,22 @@
import React, { createContext, useContext, useState } from 'react'; import React, { createContext, useContext, useState } from 'react';
interface SelectorObject {
selector: string;
tag?: string;
// todo: allow for additional properties like what did user select for a, img, etc.
[key: string]: any;
}
interface BrowserStep { interface BrowserStep {
id: number; id: number;
label: string; label: string;
data: string; data: string;
selector: string; selectorObj: SelectorObject;
} }
interface BrowserStepsContextType { interface BrowserStepsContextType {
browserSteps: BrowserStep[]; browserSteps: BrowserStep[];
addBrowserStep: (label: string, data: string, selector: string) => void; addBrowserStep: (label: string, data: string, selectorObj: SelectorObject) => void;
deleteBrowserStep: (id: number) => void; deleteBrowserStep: (id: number) => void;
updateBrowserStepLabel: (id: number, newLabel: string) => void; updateBrowserStepLabel: (id: number, newLabel: string) => void;
} }
@@ -19,10 +26,10 @@ const BrowserStepsContext = createContext<BrowserStepsContextType | undefined>(u
export const BrowserStepsProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => { export const BrowserStepsProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {
const [browserSteps, setBrowserSteps] = useState<BrowserStep[]>([]); const [browserSteps, setBrowserSteps] = useState<BrowserStep[]>([]);
const addBrowserStep = (label: string, data: string, selector: string) => { const addBrowserStep = (label: string, data: string, selectorObj: SelectorObject) => {
setBrowserSteps(prevSteps => [ setBrowserSteps(prevSteps => [
...prevSteps, ...prevSteps,
{ id: Date.now(), label, data, selector } { id: Date.now(), label, data, selectorObj }
]); ]);
}; };
@@ -38,8 +45,14 @@ export const BrowserStepsProvider: React.FC<{ children: React.ReactNode }> = ({
); );
}; };
return ( return (
<BrowserStepsContext.Provider value={{ browserSteps, addBrowserStep, deleteBrowserStep, updateBrowserStepLabel }}> <BrowserStepsContext.Provider value={{
browserSteps,
addBrowserStep,
deleteBrowserStep,
updateBrowserStepLabel,
}}>
{children} {children}
</BrowserStepsContext.Provider> </BrowserStepsContext.Provider>
); );