diff --git a/src/hooks/useDiscover.ts b/src/hooks/useDiscover.ts index b69a9c80..cb085814 100644 --- a/src/hooks/useDiscover.ts +++ b/src/hooks/useDiscover.ts @@ -1,4 +1,8 @@ +import globalMessages from '@app/i18n/globalMessages'; import { MediaStatus } from '@server/constants/media'; +import { useEffect } from 'react'; +import { useIntl } from 'react-intl'; +import { useToasts } from 'react-toast-notifications'; import useSWRInfinite from 'swr/infinite'; import useSettings from './useSettings'; import { Permission, useUser } from './useUser'; @@ -58,6 +62,8 @@ const useDiscover = < ): DiscoverResult => { const settings = useSettings(); const { hasPermission } = useUser(); + const { addToast } = useToasts(); + const intl = useIntl(); const { data, error, size, setSize, isValidating, mutate } = useSWRInfinite< BaseSearchResult & S >( @@ -143,13 +149,23 @@ const useDiscover = < (!!data && (data[data?.length - 1]?.totalResults ?? 0) <= size * 20) || (!!data && (data[data?.length - 1]?.totalResults ?? 0) < 41); + useEffect(() => { + if (error && titles.length) { + addToast(intl.formatMessage(globalMessages.error), { + appearance: 'error', + autoDismiss: true, + }); + console.error('Error while fetching discover titles:', error); + } + }, [data, error, addToast, intl, titles.length]); + return { isLoadingInitialData, isLoadingMore, fetchMore, isEmpty, isReachingEnd, - error, + error: error && titles.length ? null : error, titles, firstResultData: data?.[0], mutate, diff --git a/src/i18n/globalMessages.ts b/src/i18n/globalMessages.ts index 7c27c945..8b716d19 100644 --- a/src/i18n/globalMessages.ts +++ b/src/i18n/globalMessages.ts @@ -51,6 +51,7 @@ const globalMessages = defineMessages('i18n', { settings: 'Settings', usersettings: 'User Settings', delimitedlist: '{a}, {b}', + error: 'Something went wrong. Please try again.', showingresults: 'Showing {from} to {to} of {total} results', resultsperpage: 'Display {pageSize} results per page', diff --git a/src/i18n/locale/en.json b/src/i18n/locale/en.json index b8769445..821b3210 100644 --- a/src/i18n/locale/en.json +++ b/src/i18n/locale/en.json @@ -1581,6 +1581,7 @@ "i18n.deleting": "Deleting…", "i18n.delimitedlist": "{a}, {b}", "i18n.edit": "Edit", + "i18n.error": "Something went wrong. Please try again.", "i18n.experimental": "Experimental", "i18n.failed": "Failed", "i18n.import": "Import",