From 395a4cc5b94d34c6c80ec42a4783bf984f5b13ff Mon Sep 17 00:00:00 2001 From: schroda <50052685+schroda@users.noreply.github.com> Date: Sun, 5 May 2024 00:41:02 +0200 Subject: [PATCH] Properly handle requests in TrackingSettings --- src/screens/settings/TrackingSettings.tsx | 33 +++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/src/screens/settings/TrackingSettings.tsx b/src/screens/settings/TrackingSettings.tsx index fba43d6d..0a3d5e25 100644 --- a/src/screens/settings/TrackingSettings.tsx +++ b/src/screens/settings/TrackingSettings.tsx @@ -25,6 +25,7 @@ import { } from '@/lib/metadata/metadataServerSettings.ts'; import { MetadataTrackingSettings } from '@/typings.ts'; import { makeToast } from '@/components/util/Toast.tsx'; +import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.ts'; export const TrackingSettings = () => { const { t } = useTranslation(); @@ -36,16 +37,44 @@ export const TrackingSettings = () => { const { settings: { updateProgressAfterReading, updateProgressManualMarkRead }, + loading: areMetadataServerSettingsLoading, + request: { error: metadataServerSettingsError, refetch: refetchServerMetadataSettings }, } = useMetadataServerSettings(); const updateTrackingSettings = createUpdateMetadataServerSettings(() => makeToast(t('global.error.label.failed_to_save_changes'), 'error'), ); - const { data, loading, error } = requestManager.useGetTrackerList(); + const { + data, + loading: areTrackersLoading, + error: trackersError, + refetch: refetchTrackersList, + } = requestManager.useGetTrackerList({ notifyOnNetworkStatusChange: true }); const trackers = data?.trackers.nodes ?? []; + const loading = areMetadataServerSettingsLoading || areTrackersLoading; + const error = metadataServerSettingsError ?? trackersError; + if (error) { - return ; + return ( + { + if (metadataServerSettingsError) { + refetchServerMetadataSettings().catch( + defaultPromiseErrorHandler('TrackingSettings::refetchMetadataServerSettings'), + ); + } + + if (trackersError) { + refetchTrackersList().catch( + defaultPromiseErrorHandler('TrackingSettings::refetchTrackersList'), + ); + } + }} + /> + ); } if (loading) {