Reset state on unmount

Prevent TypeErrors due to invalid previous state
This commit is contained in:
schroda
2024-12-09 04:38:33 +01:00
parent 0e3b629287
commit 107bbfddbb
2 changed files with 21 additions and 1 deletions

View File

@@ -18,7 +18,7 @@ export const ReaderStatePagesContextProvider = ({ children }: { children: ReactN
const [currentPageIndex, setCurrentPageIndex] = useState<TContext['currentPageIndex']>(0);
const [pageToScrollToIndex, setPageToScrollToIndex] = useState<TContext['pageToScrollToIndex']>(0);
const [pageUrls, setPageUrls] = useState<TContext['pageUrls']>([]);
const [pageLoadStates, setPageLoadStates] = useState<TContext['pageLoadStates']>([]);
const [pageLoadStates, setPageLoadStates] = useState<TContext['pageLoadStates']>([{ loaded: false }]);
const [pages, setPages] = useState<TContext['pages']>([createPageData('', 0)]);
const [transitionPageMode, setTransitionPageMode] = useState<TContext['transitionPageMode']>(
ReaderTransitionPageMode.NONE,

View File

@@ -131,6 +131,25 @@ export const Reader = () => {
setManga(mangaResponse.data?.manga);
}, [mangaResponse.data?.manga]);
// reset states
useEffect(
() => () => {
setManga(undefined);
setReaderStateChapters({
mangaChapters: [],
chapters: [],
});
setCurrentPageIndex(0);
setPageToScrollToIndex(0);
setTotalPages(0);
setPages([createPageData('', 0)]);
setPageUrls([]);
setPageLoadStates([{ loaded: false }]);
},
[],
);
// set pages state
useEffect(() => {
const pagesPayload = pagesResponse.data?.fetchChapterPages;
@@ -151,6 +170,7 @@ export const Reader = () => {
setCurrentPageIndex(initialReaderPageIndex);
setPageToScrollToIndex(initialReaderPageIndex);
} else {
setArePagesFetched(false);
setCurrentPageIndex(0);
setPageToScrollToIndex(0);
setTotalPages(0);