From 3360b4e829592e5c2dc3116e2ea430d85584784a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Losada=20Hern=C3=A1ndez?= Date: Sat, 7 Sep 2024 19:12:59 +0200 Subject: [PATCH] refctor logic --- client/homebrew/brewRenderer/brewRenderer.jsx | 70 ++++++++++--------- 1 file changed, 37 insertions(+), 33 deletions(-) diff --git a/client/homebrew/brewRenderer/brewRenderer.jsx b/client/homebrew/brewRenderer/brewRenderer.jsx index 2aa494828..e391e237f 100644 --- a/client/homebrew/brewRenderer/brewRenderer.jsx +++ b/client/homebrew/brewRenderer/brewRenderer.jsx @@ -76,40 +76,44 @@ const BrewRenderer = (props)=>{ } useEffect(() => { - const locationHash = window.location.hash; - const iframe = document.getElementById('BrewRenderer'); + const locationHash = window.location.hash; + const iframe = document.getElementById('BrewRenderer'); + + const pageIdRegex = /^#p\d+$/; + + const handleIframeLoad = () => { + setTimeout(() => { + 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); + }); + } + } + }, 100); + }; + + if (locationHash) { + iframe.addEventListener('load', handleIframeLoad); + } - // Regular expression to match page IDs like '#p1' - const pageIdRegex = /^#p\d+$/; - iframe.addEventListener('load', () => { - setTimeout(() => { - if (pageIdRegex.test(locationHash)) { - // Extract page number from the ID - const pageNumber = parseInt(locationHash.slice(2)); - scrollToPage(pageNumber-1); - } else { - // Treat it as an element ID - const elementId = locationHash.slice(1); // Remove the leading '#' - if (elementId) { - getPageContainingElement(elementId) - .then((pageNumber) => { - if (pageNumber !== -1) { - scrollToPage(pageNumber); - } - }) - .catch((error) => { - console.error('Error:', error); - }); - } - } - }, 100); - }); - - // Cleanup function for removing the resize event listener - return () => { - window.removeEventListener('resize', updateSize); - }; - }, []); + return () => { + if (locationHash) { + iframe.removeEventListener('load', handleIframeLoad); + } + window.removeEventListener('resize', updateSize); + }; + }, []); const scrollToPage = (pageNumber) => {