diff --git a/src/modules/reader/constants/ReaderContext.constants.ts b/src/modules/reader/constants/ReaderContext.constants.ts new file mode 100644 index 00000000..7075c57f --- /dev/null +++ b/src/modules/reader/constants/ReaderContext.constants.ts @@ -0,0 +1,30 @@ +/* + * Copyright (C) Contributors to the Suwayomi project + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + */ + +import { ReaderStatePages } from '@/modules/reader/types/ReaderProgressBar.types.ts'; +import { ReaderTransitionPageMode } from '@/modules/reader/types/Reader.types.ts'; +import { createPageData } from '@/modules/reader/utils/ReaderPager.utils.tsx'; + +export const READER_STATE_PAGES_DEFAULTS: ReaderStatePages = { + totalPages: 0, + setTotalPages: () => undefined, + currentPageIndex: 0, + setCurrentPageIndex: () => undefined, + pageToScrollToIndex: null, + setPageToScrollToIndex: () => undefined, + pageUrls: [], + setPageUrls: () => undefined, + pageLoadStates: [{ url: '', loaded: false }], + setPageLoadStates: () => undefined, + pages: [createPageData('', 0)], + setPages: () => undefined, + transitionPageMode: ReaderTransitionPageMode.NONE, + setTransitionPageMode: () => undefined, + retryFailedPagesKeyPrefix: '', + setRetryFailedPagesKeyPrefix: () => undefined, +}; diff --git a/src/modules/reader/contexts/state/ReaderStatePagesContextProvider.tsx b/src/modules/reader/contexts/state/ReaderStatePagesContextProvider.tsx index 2e901919..2393d087 100644 --- a/src/modules/reader/contexts/state/ReaderStatePagesContextProvider.tsx +++ b/src/modules/reader/contexts/state/ReaderStatePagesContextProvider.tsx @@ -8,24 +8,30 @@ import { ReactNode, useMemo, useState } from 'react'; import { ReaderStatePagesContext } from '@/modules/reader/contexts/state/ReaderStatePagesContext.tsx'; -import { createPageData } from '@/modules/reader/utils/ReaderPager.utils.tsx'; -import { ReaderTransitionPageMode } from '@/modules/reader/types/Reader.types.ts'; import { ReaderStatePages } from '@/modules/reader/types/ReaderProgressBar.types.ts'; +import { READER_STATE_PAGES_DEFAULTS } from '@/modules/reader/constants/ReaderContext.constants.ts'; export const ReaderStatePagesContextProvider = ({ children }: { children: ReactNode }) => { - const [totalPages, setTotalPages] = useState(0); - const [currentPageIndex, setCurrentPageIndex] = useState(0); - const [pageToScrollToIndex, setPageToScrollToIndex] = useState(null); - const [pageUrls, setPageUrls] = useState([]); - const [pageLoadStates, setPageLoadStates] = useState([ - { url: '', loaded: false }, - ]); - const [pages, setPages] = useState([createPageData('', 0)]); - const [transitionPageMode, setTransitionPageMode] = useState( - ReaderTransitionPageMode.NONE, + const [totalPages, setTotalPages] = useState( + READER_STATE_PAGES_DEFAULTS.totalPages, ); - const [retryFailedPagesKeyPrefix, setRetryFailedPagesKeyPrefix] = - useState(''); + const [currentPageIndex, setCurrentPageIndex] = useState( + READER_STATE_PAGES_DEFAULTS.currentPageIndex, + ); + const [pageToScrollToIndex, setPageToScrollToIndex] = useState( + READER_STATE_PAGES_DEFAULTS.pageToScrollToIndex, + ); + const [pageUrls, setPageUrls] = useState(READER_STATE_PAGES_DEFAULTS.pageUrls); + const [pageLoadStates, setPageLoadStates] = useState( + READER_STATE_PAGES_DEFAULTS.pageLoadStates, + ); + const [pages, setPages] = useState(READER_STATE_PAGES_DEFAULTS.pages); + const [transitionPageMode, setTransitionPageMode] = useState( + READER_STATE_PAGES_DEFAULTS.transitionPageMode, + ); + const [retryFailedPagesKeyPrefix, setRetryFailedPagesKeyPrefix] = useState< + ReaderStatePages['retryFailedPagesKeyPrefix'] + >(READER_STATE_PAGES_DEFAULTS.retryFailedPagesKeyPrefix); const value = useMemo( () => ({ diff --git a/src/modules/reader/hooks/useReaderSetPagesState.ts b/src/modules/reader/hooks/useReaderSetPagesState.ts index 991f13ed..6e5dce7a 100644 --- a/src/modules/reader/hooks/useReaderSetPagesState.ts +++ b/src/modules/reader/hooks/useReaderSetPagesState.ts @@ -8,7 +8,7 @@ import { useEffect } from 'react'; import { getInitialReaderPageIndex } from '@/modules/reader/utils/Reader.utils.ts'; -import { createPageData, createPagesData } from '@/modules/reader/utils/ReaderPager.utils.tsx'; +import { createPagesData } from '@/modules/reader/utils/ReaderPager.utils.tsx'; import { ReaderResumeMode, ReaderStateChapters, @@ -16,6 +16,7 @@ import { } from '@/modules/reader/types/Reader.types.ts'; import { requestManager } from '@/lib/requests/RequestManager.ts'; import { ReaderStatePages } from '@/modules/reader/types/ReaderProgressBar.types.ts'; +import { READER_STATE_PAGES_DEFAULTS } from '@/modules/reader/constants/ReaderContext.constants.ts'; export const useReaderSetPagesState = ( pagesResponse: ReturnType[1], @@ -52,12 +53,12 @@ export const useReaderSetPagesState = ( setPageToScrollToIndex(initialReaderPageIndex); } else { setArePagesFetched(false); - setCurrentPageIndex(0); - setPageToScrollToIndex(null); - setTotalPages(0); - setPages([createPageData('', 0)]); - setPageUrls([]); - setPageLoadStates([{ url: '', loaded: false }]); + setCurrentPageIndex(READER_STATE_PAGES_DEFAULTS.currentPageIndex); + setPageToScrollToIndex(READER_STATE_PAGES_DEFAULTS.pageToScrollToIndex); + setTotalPages(READER_STATE_PAGES_DEFAULTS.totalPages); + setPages(READER_STATE_PAGES_DEFAULTS.pages); + setPageUrls(READER_STATE_PAGES_DEFAULTS.pageUrls); + setPageLoadStates(READER_STATE_PAGES_DEFAULTS.pageLoadStates); } setTransitionPageMode(ReaderTransitionPageMode.NONE);