feat: screenshot & text steps

This commit is contained in:
karishmas6
2024-08-06 03:10:54 +05:30
parent 265018cada
commit a8b9110260

View File

@@ -1,5 +1,22 @@
import React, { createContext, useContext, useState } from 'react'; 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 { interface SelectorObject {
selector: string; selector: string;
tag?: string; tag?: string;
@@ -7,18 +24,12 @@ interface SelectorObject {
[key: string]: any; [key: string]: any;
} }
interface BrowserStep {
id: number;
label: string;
data: string;
selectorObj: SelectorObject;
}
interface BrowserStepsContextType { interface BrowserStepsContextType {
browserSteps: BrowserStep[]; 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; deleteBrowserStep: (id: number) => void;
updateBrowserStepLabel: (id: number, newLabel: string) => void; updateBrowserTextStepLabel: (id: number, newLabel: string) => void;
} }
const BrowserStepsContext = createContext<BrowserStepsContextType | undefined>(undefined); const BrowserStepsContext = createContext<BrowserStepsContextType | undefined>(undefined);
@@ -26,10 +37,17 @@ 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, selectorObj: SelectorObject) => { const addTextStep = (label: string, data: string, selectorObj: SelectorObject) => {
setBrowserSteps(prevSteps => [ setBrowserSteps(prevSteps => [
...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)); setBrowserSteps(prevSteps => prevSteps.filter(step => step.id !== id));
}; };
const updateBrowserStepLabel = (id: number, newLabel: string) => { const updateBrowserTextStepLabel = (id: number, newLabel: string) => {
setBrowserSteps(prevSteps => setBrowserSteps(prevSteps =>
prevSteps.map(step => prevSteps.map(step =>
step.id === id ? { ...step, label: newLabel } : step step.id === id ? { ...step, label: newLabel } : step
@@ -48,9 +66,10 @@ export const BrowserStepsProvider: React.FC<{ children: React.ReactNode }> = ({
return ( return (
<BrowserStepsContext.Provider value={{ <BrowserStepsContext.Provider value={{
browserSteps, browserSteps,
addBrowserStep, addTextStep,
addScreenshotStep,
deleteBrowserStep, deleteBrowserStep,
updateBrowserStepLabel, updateBrowserTextStepLabel,
}}> }}>
{children} {children}
</BrowserStepsContext.Provider> </BrowserStepsContext.Provider>
@@ -63,4 +82,4 @@ export const useBrowserSteps = () => {
throw new Error('useBrowserSteps must be used within a BrowserStepsProvider'); throw new Error('useBrowserSteps must be used within a BrowserStepsProvider');
} }
return context; return context;
}; };