From 5a97f11703bd76f089a89e434ff9bc09540d25b4 Mon Sep 17 00:00:00 2001 From: schroda <50052685+schroda@users.noreply.github.com> Date: Tue, 30 Apr 2024 20:16:02 +0200 Subject: [PATCH] Add missing requests to loading and error handling of Reader --- src/screens/Reader.tsx | 35 +++++++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/src/screens/Reader.tsx b/src/screens/Reader.tsx index 9894ea69..77f9b481 100644 --- a/src/screens/Reader.tsx +++ b/src/screens/Reader.tsx @@ -89,7 +89,12 @@ export function Reader() { [mangaId], ); - const { data, loading: isMangaLoading } = requestManager.useGetManga(mangaId); + const { + data, + loading: isMangaLoading, + error: mangaError, + refetch: refetchManga, + } = requestManager.useGetManga(mangaId); const loadedChapter = useRef(null); const isChapterLoaded = Number(mangaId) === loadedChapter.current?.manga.id && @@ -151,9 +156,6 @@ export function Reader() { doFetchPages(); }, [chapter.id]); - const isLoading = - isChapterLoading || arePagesLoading || (!arePagesUpdatedRef.current && !chapterError && !pagesError); - const error = chapterError ?? pagesError; const [wasLastPageReadSet, setWasLastPageReadSet] = useState(false); const [curPage, setCurPage] = useState(0); const isLastPage = curPage === chapter.pageCount - 1; @@ -161,9 +163,22 @@ export function Reader() { const [pageToScrollTo, setPageToScrollTo] = useState(undefined); const { setOverride, setTitle } = useContext(NavBarContext); const [retrievingNextChapter, setRetrievingNextChapter] = useState(false); - const { data: mangaChaptersData } = requestManager.useGetMangaChapters(mangaId, { nextFetchPolicy: 'standby' }); + const { + data: mangaChaptersData, + loading: areChaptersLoading, + error: chaptersError, + refetch: refetchChapters, + } = requestManager.useGetMangaChapters(mangaId, { nextFetchPolicy: 'standby' }); const mangaChapters = mangaChaptersData?.chapters.nodes; + const isLoading = + isMangaLoading || + isChapterLoading || + areChaptersLoading || + arePagesLoading || + (!arePagesUpdatedRef.current && !chapterError && !pagesError); + const error = mangaError ?? chapterError ?? chaptersError ?? pagesError; + const { settings: defaultSettings, loading: areDefaultSettingsLoading } = useDefaultReaderSettings(); const [settings, setSettings] = useState(getReaderSettingsFor(manga, defaultSettings)); @@ -282,7 +297,7 @@ export function Reader() { ? manga.id : undefined, }) - .response.catch(); + .response.catch(defaultPromiseErrorHandler('Reader::updateChapter')); }; const setSettingValue = (key: keyof IReaderSettings, value: AllowedMetadataValueTypes, persist: boolean = true) => { @@ -438,10 +453,18 @@ export function Reader() { message={t('global.error.label.failed_to_load_data')} messageExtra={error.message} retry={() => { + if (mangaError) { + refetchManga().catch(defaultPromiseErrorHandler('Reader::refetchManga')); + } + if (chapterError) { fetchChapter().catch(defaultPromiseErrorHandler('Reader::refetchChapter')); } + if (chaptersError) { + refetchChapters().catch(defaultPromiseErrorHandler('Reader::refetchChapters')); + } + if (pagesError) { doFetchPages(); }