From 64adf991d187961dc82ccd847074ba8f6c8e966f Mon Sep 17 00:00:00 2001 From: schroda <50052685+schroda@users.noreply.github.com> Date: Sun, 5 May 2024 01:17:18 +0200 Subject: [PATCH] Handle request error in SearchAll --- src/screens/SearchAll.tsx | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/screens/SearchAll.tsx b/src/screens/SearchAll.tsx index 7b386310..d8ec0679 100644 --- a/src/screens/SearchAll.tsx +++ b/src/screens/SearchAll.tsx @@ -26,6 +26,8 @@ import { NavBarContext, useSetDefaultBackTo } from '@/components/context/NavbarC import { MangaCardProps } from '@/components/manga/MangaCard.types.tsx'; import { EmptyView } from '@/components/util/EmptyView'; import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.ts'; +import { LoadingPlaceholder } from '@/components/util/LoadingPlaceholder.tsx'; +import { EmptyViewAbsoluteCentered } from '@/components/util/EmptyViewAbsoluteCentered.tsx'; type SourceLoadingState = { isLoading: boolean; hasResults: boolean; emptySearch: boolean }; type SourceToLoadingStateMap = Map; @@ -198,7 +200,7 @@ export const SearchAll: React.FC = () => { const [shownLangs, setShownLangs] = useLocalStorage('shownSourceLangs', sourceDefualtLangs()); const [showNsfw] = useLocalStorage('showNsfw', true); - const { data } = requestManager.useGetSourceList(); + const { data, loading, error, refetch } = requestManager.useGetSourceList({ notifyOnNetworkStatusChange: true }); const sources = data?.sources.nodes ?? []; const [sourceToLoadingStateMap, setSourceToLoadingStateMap] = useState(new Map()); const debouncedSourceToLoadingStateMap = useDebounce(sourceToLoadingStateMap, 500); @@ -259,6 +261,20 @@ export const SearchAll: React.FC = () => { setShownLangs([...shownLangs, ...missingDefaultLangs]); }, []); + if (loading) { + return ; + } + + if (error) { + return ( + refetch().catch(defaultPromiseErrorHandler('SearchAll::refetch'))} + /> + ); + } + return ( <> {sourcesSortedByResult.map((source) => (