diff --git a/src/context/browserSteps.tsx b/src/context/browserSteps.tsx index 04ebbc28..79113b38 100644 --- a/src/context/browserSteps.tsx +++ b/src/context/browserSteps.tsx @@ -1,5 +1,22 @@ import React, { createContext, useContext, useState } from 'react'; +interface TextStep { + id: number; + type: 'text'; + label: string; + data: string; + selectorObj: SelectorObject; +} + +interface ScreenshotStep { + id: number; + type: 'screenshot'; + fullPage: boolean; +} + + +type BrowserStep = TextStep | ScreenshotStep; + interface SelectorObject { selector: string; tag?: string; @@ -7,18 +24,12 @@ interface SelectorObject { [key: string]: any; } -interface BrowserStep { - id: number; - label: string; - data: string; - selectorObj: SelectorObject; -} - interface BrowserStepsContextType { browserSteps: BrowserStep[]; - addBrowserStep: (label: string, data: string, selectorObj: SelectorObject) => void; + addTextStep: (label: string, data: string, selectorObj: SelectorObject) => void; + addScreenshotStep: (label: string, fullPage: boolean) => void; deleteBrowserStep: (id: number) => void; - updateBrowserStepLabel: (id: number, newLabel: string) => void; + updateBrowserTextStepLabel: (id: number, newLabel: string) => void; } const BrowserStepsContext = createContext(undefined); @@ -26,10 +37,17 @@ const BrowserStepsContext = createContext(u export const BrowserStepsProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => { const [browserSteps, setBrowserSteps] = useState([]); - const addBrowserStep = (label: string, data: string, selectorObj: SelectorObject) => { + const addTextStep = (label: string, data: string, selectorObj: SelectorObject) => { setBrowserSteps(prevSteps => [ ...prevSteps, - { id: Date.now(), label, data, selectorObj } + { id: Date.now(), type: 'text', label, data, selectorObj } + ]); + }; + + const addScreenshotStep = (label: string, fullPage: boolean) => { + setBrowserSteps(prevSteps => [ + ...prevSteps, + { id: Date.now(), type: 'screenshot', label, fullPage } ]); }; @@ -37,7 +55,7 @@ export const BrowserStepsProvider: React.FC<{ children: React.ReactNode }> = ({ setBrowserSteps(prevSteps => prevSteps.filter(step => step.id !== id)); }; - const updateBrowserStepLabel = (id: number, newLabel: string) => { + const updateBrowserTextStepLabel = (id: number, newLabel: string) => { setBrowserSteps(prevSteps => prevSteps.map(step => step.id === id ? { ...step, label: newLabel } : step @@ -48,9 +66,10 @@ export const BrowserStepsProvider: React.FC<{ children: React.ReactNode }> = ({ return ( {children} @@ -63,4 +82,4 @@ export const useBrowserSteps = () => { throw new Error('useBrowserSteps must be used within a BrowserStepsProvider'); } return context; -}; \ No newline at end of file +};