From f8d3be391124d350e96f9fcec55e4bf53ad88a17 Mon Sep 17 00:00:00 2001 From: schroda <50052685+schroda@users.noreply.github.com> Date: Mon, 30 Dec 2024 21:21:09 +0100 Subject: [PATCH] Do not check for state change before set state call Due to not including the states in the dependency array (to improve render performance), they do not include updated data and might cause an incorrect early exit. E.g. in case a load error happened for a page whose loaded flag was already set to true, the pages load state never got updated again --- src/modules/reader/utils/Reader.utils.ts | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/modules/reader/utils/Reader.utils.ts b/src/modules/reader/utils/Reader.utils.ts index 9781d5c7..7ad7f012 100644 --- a/src/modules/reader/utils/Reader.utils.ts +++ b/src/modules/reader/utils/Reader.utils.ts @@ -148,13 +148,14 @@ export const createUpdateReaderPageLoadState = const img = new Image(); img.onload = () => { const isSpreadPageFlag = isSpreadPage(img); - const pageSpreadState = pagesToSpreadState[index]; - if (!isSpreadPageFlag || pageSpreadState.isSpread === isSpreadPageFlag) { + if (!isSpreadPageFlag) { return; } setPagesToSpreadState((prevState) => { - const isOfOutdatedSpreadState = prevState[index] === undefined || prevState[index].url !== url; + const pageSpreadState = prevState[index]; + + const isOfOutdatedSpreadState = pageSpreadState === undefined || pageSpreadState.url !== url; if (isOfOutdatedSpreadState) { return prevState; } @@ -169,10 +170,6 @@ export const createUpdateReaderPageLoadState = img.src = url; } - if (pageLoadStates[index].loaded) { - return; - } - setPageLoadStates((statePageLoadStates) => { const pageLoadState = statePageLoadStates[index];