0
0
mirror of https://github.com/naturalcrit/homebrewery.git synced 2026-01-08 18:22:40 +00:00

"Refactor BrewRenderer: removed iframe load event listener, simplified page scrolling logic, and inlined getPageContainingElement functionality"

This commit is contained in:
Víctor Losada Hernández
2024-09-15 18:37:27 +02:00
parent 422829cbd8
commit e213eb0a78

View File

@@ -79,44 +79,38 @@ const BrewRenderer = (props)=>{
useEffect(() => { useEffect(() => {
const locationHash = window.location.hash; const locationHash = window.location.hash;
const iframe = document.getElementById('BrewRenderer');
const pageIdRegex = /^#p\d+$/; const pageIdRegex = /^#p\d+$/;
const handleIframeLoad = () => { console.log(state);
setTimeout(() => {
if (locationHash) {
if (state.isMounted) {
if (pageIdRegex.test(locationHash)) { if (pageIdRegex.test(locationHash)) {
const pageNumber = parseInt(locationHash.slice(2)); const pageNumber = parseInt(locationHash.slice(2));
scrollToPage(pageNumber - 1); scrollToPage(pageNumber - 1);
} else { } else {
const elementId = locationHash.slice(1); const elementId = locationHash.slice(1);
if (elementId) { if (elementId) {
getPageContainingElement(elementId) const element = document.getElementById(elementId);
.then((pageNumber) => { console.log(element);
if (pageNumber !== -1) { if (element) {
scrollToPage(pageNumber);
} const page = element.closest(".page");
}) // Ensure `page` exists before proceeding
.catch((error) => { if (page) {
console.error('Error:', error); console.log(page.getAttribute("Id").slice(1));
}); scrollToPage(page.getAttribute("Id").slice(1));
}
}
} }
} }
}, 100); }
};
if (locationHash) {
iframe.addEventListener('load', handleIframeLoad);
} }
return () => { return () => {
if (locationHash) {
iframe.removeEventListener('load', handleIframeLoad);
}
window.removeEventListener('resize', updateSize); window.removeEventListener('resize', updateSize);
}; };
}, []); }, [state.isMounted]);
const scrollToPage = (pageNumber) => { const scrollToPage = (pageNumber) => {
const iframe = document.getElementById('BrewRenderer'); const iframe = document.getElementById('BrewRenderer');
@@ -134,24 +128,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 = ()=>{ const updateSize = ()=>{
setState((prevState)=>({ setState((prevState)=>({
...prevState, ...prevState,