From e213eb0a78cdc8611b64ee5b0c44fd26210a546d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Losada=20Hern=C3=A1ndez?= Date: Sun, 15 Sep 2024 18:37:27 +0200 Subject: [PATCH] "Refactor BrewRenderer: removed iframe load event listener, simplified page scrolling logic, and inlined getPageContainingElement functionality" --- client/homebrew/brewRenderer/brewRenderer.jsx | 62 ++++++------------- 1 file changed, 19 insertions(+), 43 deletions(-) diff --git a/client/homebrew/brewRenderer/brewRenderer.jsx b/client/homebrew/brewRenderer/brewRenderer.jsx index 416337a61..ad628651e 100644 --- a/client/homebrew/brewRenderer/brewRenderer.jsx +++ b/client/homebrew/brewRenderer/brewRenderer.jsx @@ -79,44 +79,38 @@ const BrewRenderer = (props)=>{ useEffect(() => { const locationHash = window.location.hash; - const iframe = document.getElementById('BrewRenderer'); - const pageIdRegex = /^#p\d+$/; - const handleIframeLoad = () => { - setTimeout(() => { + console.log(state); + + if (locationHash) { + if (state.isMounted) { if (pageIdRegex.test(locationHash)) { const pageNumber = parseInt(locationHash.slice(2)); scrollToPage(pageNumber - 1); } else { const elementId = locationHash.slice(1); if (elementId) { - getPageContainingElement(elementId) - .then((pageNumber) => { - if (pageNumber !== -1) { - scrollToPage(pageNumber); - } - }) - .catch((error) => { - console.error('Error:', error); - }); + const element = document.getElementById(elementId); + console.log(element); + if (element) { + + const page = element.closest(".page"); + // Ensure `page` exists before proceeding + if (page) { + console.log(page.getAttribute("Id").slice(1)); + scrollToPage(page.getAttribute("Id").slice(1)); + } + } } } - }, 100); - }; - - if (locationHash) { - iframe.addEventListener('load', handleIframeLoad); - } - - return () => { - if (locationHash) { - iframe.removeEventListener('load', handleIframeLoad); } + } + + return () => { window.removeEventListener('resize', updateSize); }; - }, []); - + }, [state.isMounted]); const scrollToPage = (pageNumber) => { const iframe = document.getElementById('BrewRenderer'); @@ -133,24 +127,6 @@ const BrewRenderer = (props)=>{ } } }; - - const getPageContainingElement = (elementId) => { - const iframe = document.getElementById('BrewRenderer'); - return new Promise((resolve) => { - const brewRenderer = - iframe.contentWindow.document.querySelector('.brewRenderer'); - const pages = brewRenderer.querySelectorAll('.page'); - for (let i = 0; i < pages.length; i++) { - if (pages[i].querySelector(`#${elementId}`)) { - resolve(i); - return; - } - } - - console.log('Element with ID not found in any page.'); - resolve(-1); - }); - }; const updateSize = ()=>{ setState((prevState)=>({