feat: add update dom mode

This commit is contained in:
Rohit
2025-07-06 21:43:28 +05:30
parent 82152c5acd
commit a677cb91af

View File

@@ -153,8 +153,6 @@ export const BrowserWindow = () => {
const [selectedElement, setSelectedElement] = useState<{ selector: string, info: ElementInfo | null } | null>(null); const [selectedElement, setSelectedElement] = useState<{ selector: string, info: ElementInfo | null } | null>(null);
const [currentListId, setCurrentListId] = useState<number | null>(null); const [currentListId, setCurrentListId] = useState<number | null>(null);
const [viewportInfo, setViewportInfo] = useState<ViewportInfo>({ width: browserWidth, height: browserHeight }); const [viewportInfo, setViewportInfo] = useState<ViewportInfo>({ width: browserWidth, height: browserHeight });
const [isDOMMode, setIsDOMMode] = useState(false);
const [currentSnapshot, setCurrentSnapshot] = useState<ProcessedSnapshot | null>(null);
const [isLoading, setIsLoading] = useState(false); const [isLoading, setIsLoading] = useState(false);
const [cachedChildSelectors, setCachedChildSelectors] = useState<string[]>([]); const [cachedChildSelectors, setCachedChildSelectors] = useState<string[]>([]);
@@ -165,7 +163,7 @@ export const BrowserWindow = () => {
const highlighterUpdateRef = useRef<number>(0); const highlighterUpdateRef = useRef<number>(0);
const { socket } = useSocketStore(); const { socket } = useSocketStore();
const { notify, currentTextActionId, currentListActionId } = useGlobalInfoStore(); const { notify, currentTextActionId, currentListActionId, updateDOMMode, isDOMMode, currentSnapshot } = useGlobalInfoStore();
const { getText, getList, paginationMode, paginationType, limitMode, captureStage } = useActionContext(); const { getText, getList, paginationMode, paginationType, limitMode, captureStage } = useActionContext();
const { addTextStep, addListStep, updateListStepData } = useBrowserSteps(); const { addTextStep, addListStep, updateListStepData } = useBrowserSteps();
@@ -250,51 +248,47 @@ export const BrowserWindow = () => {
(data: RRWebDOMCastData) => { (data: RRWebDOMCastData) => {
if (!data.userId || data.userId === user?.id) { if (!data.userId || data.userId === user?.id) {
if (data.snapshotData && data.snapshotData.snapshot) { if (data.snapshotData && data.snapshotData.snapshot) {
setCurrentSnapshot(data.snapshotData); updateDOMMode(true, data.snapshotData);
setIsDOMMode(true);
socket?.emit("dom-mode-enabled"); socket?.emit("dom-mode-enabled");
setIsLoading(false); setIsLoading(false);
} else { } else {
setIsLoading(false); setIsLoading(false);
} }
} }
}, },
[user?.id, socket] [user?.id, socket, updateDOMMode]
); );
const domModeHandler = useCallback( const domModeHandler = useCallback(
(data: any) => { (data: any) => {
if (!data.userId || data.userId === user?.id) { if (!data.userId || data.userId === user?.id) {
setIsDOMMode(true); updateDOMMode(true);
socket?.emit("dom-mode-enabled"); socket?.emit("dom-mode-enabled");
setIsLoading(false); setIsLoading(false);
} }
}, },
[user?.id, socket] [user?.id, socket, updateDOMMode]
); );
const screenshotModeHandler = useCallback( const screenshotModeHandler = useCallback(
(data: any) => { (data: any) => {
if (!data.userId || data.userId === user?.id) { if (!data.userId || data.userId === user?.id) {
setIsDOMMode(false); updateDOMMode(false);
socket?.emit("screenshot-mode-enabled"); socket?.emit("screenshot-mode-enabled");
setCurrentSnapshot(null);
setIsLoading(false); setIsLoading(false);
} }
}, },
[user?.id] [user?.id, updateDOMMode]
); );
const domModeErrorHandler = useCallback( const domModeErrorHandler = useCallback(
(data: any) => { (data: any) => {
if (!data.userId || data.userId === user?.id) { if (!data.userId || data.userId === user?.id) {
setIsDOMMode(false); updateDOMMode(false);
setCurrentSnapshot(null);
setIsLoading(false); setIsLoading(false);
} }
}, },
[user?.id] [user?.id, updateDOMMode]
); );
useEffect(() => { useEffect(() => {
@@ -395,7 +389,7 @@ export const BrowserWindow = () => {
socket.on("screencast", screencastHandler); socket.on("screencast", screencastHandler);
socket.on("domcast", rrwebSnapshotHandler); socket.on("domcast", rrwebSnapshotHandler);
socket.on("dom-mode-enabled", domModeHandler); socket.on("dom-mode-enabled", domModeHandler);
socket.on("screenshot-mode-enabled", screenshotModeHandler); // socket.on("screenshot-mode-enabled", screenshotModeHandler);
socket.on("dom-mode-error", domModeErrorHandler); socket.on("dom-mode-error", domModeErrorHandler);
} }
@@ -409,7 +403,7 @@ export const BrowserWindow = () => {
socket.off("screencast", screencastHandler); socket.off("screencast", screencastHandler);
socket.off("domcast", rrwebSnapshotHandler); socket.off("domcast", rrwebSnapshotHandler);
socket.off("dom-mode-enabled", domModeHandler); socket.off("dom-mode-enabled", domModeHandler);
socket.off("screenshot-mode-enabled", screenshotModeHandler); // socket.off("screenshot-mode-enabled", screenshotModeHandler);
socket.off("dom-mode-error", domModeErrorHandler); socket.off("dom-mode-error", domModeErrorHandler);
} }
}; };
@@ -421,7 +415,7 @@ export const BrowserWindow = () => {
screencastHandler, screencastHandler,
rrwebSnapshotHandler, rrwebSnapshotHandler,
domModeHandler, domModeHandler,
screenshotModeHandler, // screenshotModeHandler,
domModeErrorHandler, domModeErrorHandler,
]); ]);