From 6b690cfd8dba417b21620b240494fb582a27e635 Mon Sep 17 00:00:00 2001 From: schroda <50052685+schroda@users.noreply.github.com> Date: Sat, 11 May 2024 01:10:55 +0200 Subject: [PATCH] Handle error during manga refresh The error of the refresh mutation was never catched and shown --- src/components/manga/useRefreshManga.ts | 8 ++++++-- src/screens/Manga.tsx | 6 ++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/components/manga/useRefreshManga.ts b/src/components/manga/useRefreshManga.ts index 4f622e26..36eb03f5 100644 --- a/src/components/manga/useRefreshManga.ts +++ b/src/components/manga/useRefreshManga.ts @@ -11,14 +11,18 @@ import { requestManager } from '@/lib/requests/RequestManager.ts'; export const useRefreshManga = (mangaId: string) => { const [fetchingOnline, setFetchingOnline] = useState(false); + const [error, setError] = useState(null); const handleRefresh = useCallback(async () => { setFetchingOnline(true); + setError(null); await Promise.all([ requestManager.getMangaFetch(mangaId, { awaitRefetchQueries: true }).response, requestManager.getMangaChaptersFetch(mangaId, { awaitRefetchQueries: true }).response, - ]).finally(() => setFetchingOnline(false)); + ]) + .catch((e) => setError(e)) + .finally(() => setFetchingOnline(false)); }, [mangaId]); - return [handleRefresh, { loading: fetchingOnline }] as const; + return [handleRefresh, { loading: fetchingOnline, error }] as const; }; diff --git a/src/screens/Manga.tsx b/src/screens/Manga.tsx index 8ced60c3..c7af8f56 100644 --- a/src/screens/Manga.tsx +++ b/src/screens/Manga.tsx @@ -32,13 +32,15 @@ export const Manga: React.FC = () => { const { id } = useParams<{ id: string }>(); const autofetchedRef = useRef(false); - const { data, error, loading: isLoading, networkStatus, refetch } = requestManager.useGetManga(id); + const { data, error: mangaError, loading: isLoading, networkStatus, refetch } = requestManager.useGetManga(id); const isValidating = isNetworkRequestInFlight(networkStatus); const manga = data?.manga; - const [refresh, { loading: refreshing }] = useRefreshManga(id); + const [refresh, { loading: refreshing, error: refreshError }] = useRefreshManga(id); useSetDefaultBackTo('library'); + const error = mangaError ?? refreshError; + useEffect(() => { if (manga == null) return;